فهرست منبع

YIT parse apts

Innocenty Enikeew 10 سال پیش
والد
کامیت
d50951345b
2فایلهای تغییر یافته به همراه25 افزوده شده و 0 حذف شده
  1. 2 0
      eliza.lisp
  2. 23 0
      utils.lisp

+ 2 - 0
eliza.lisp

@@ -38,6 +38,8 @@
      (#'tumblr-random-photo ,*ass-roll*))
     (((?* ?a) (?or тёлка телка телку тёлку баба бабу сука суку сучка сучку babe bitch) (?* ?b))
      (#'tumblr-random-photo ,*ass-roll*) (#'tumblr-random-photo ,*boobs-roll*))
+    ((yit)
+     (#'yit-info))
     (((?* x))
      (:text . "И чё?")
      (:text . "Сам-то понял?")

+ 23 - 0
utils.lisp

@@ -158,6 +158,29 @@ is replaced with replacement."
   (cons :voice
         (google-tts (print-with-spaces words) :lang lang)))
 
+(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))))
+           (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)
+             (format nil "~A~%~{~A~^~%~}" url (mapcar #'format-data (get-intresting (get-rows url))))))
+    (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")))))
+
 ;; Fix bug in local-time (following symlinks in /usr/share/zoneinfo/
 ;; leads to bad cutoff)
 (in-package #:local-time)