| 123456789101112131415161718192021222324252627282930 |
- (in-package :cl-user)
- (defpackage chatikbot.plugins.yit
- (:use :cl :chatikbot.common))
- (in-package :chatikbot.plugins.yit)
- (defun yit-info ()
- (labels ((get-rows (url)
- (rest (get-by-tag (plump:get-element-by-id (xml-request url) "apartmentList") "tr")))
- (row-data (row)
- (mapcar (lambda (e) (string-trim '(#\Newline #\Space) (plump:text e)))
- (get-by-tag row "td")))
- (format-data (data)
- (format nil "~{~A~^ ~}" (mapcar (lambda (n) (nth n data)) '(1 2 3 4 7 6))))
- (get-intresting (rows)
- (loop for row in rows
- for data = (row-data row)
- for rooms = (parse-integer (nth 2 data))
- for area = (parse-float:parse-float (replace-all (nth 3 data) "," "."))
- when (= rooms 3)
- when (< 65 area 75)
- collect data))
- (format-apts (url)
- (let ((apts (get-intresting (get-rows url))))
- (format nil "~A~%~{~A~^~%~}~%~A/~A" url (mapcar #'format-data apts)
- (length (remove "забронировано" apts :test #'equal :key #'(lambda (r) (nth 7 r)) ))
- (length apts)))))
- (format nil "~{~A~^~%~%~}"
- (mapcar #'format-apts
- '("http://www.yitspb.ru/yit_spb/catalog/apartments/novoorlovskiy-korpus-1-1-1"
- "http://www.yitspb.ru/yit_spb/catalog/apartments/novoorlovskiy-korpus-1-1-2")))))
|