Bladeren bron

Load Location History Data via JSON client api

Innocenty Enikeew 11 jaren geleden
bovenliggende
commit
6552185f70
1 gewijzigde bestanden met toevoegingen van 22 en 0 verwijderingen
  1. 22 0
      process-locations.lisp

+ 22 - 0
process-locations.lisp

@@ -1,6 +1,9 @@
 (defun ts->ms (ts)
   (+ (* 1000 (local-time:timestamp-to-unix ts))
      (floor (local-time:nsec-of ts) 1000000)))
+(defun ms->ts (ms)
+  (multiple-value-bind (unix msec) (floor ms 1000)
+    (local-time:unix-to-timestamp unix :nsec (* msec 1000000))))
 
 (defun doc->point (doc)
   (geo:point-deg
@@ -81,3 +84,22 @@
             do (db.insert "events" (make-place-doc (car place) (cdr place))))
        until (local-time:timestamp> ts now)
        finally (return ts))))
+
+(defvar *google-cookie* "HSID=Aki-sRjrdW5Ikzy3v; SSID=Anhcow9ItEBTeSEg7; APISID=-70vjTcatbI3TD06/AwZG1FFCCDcT4k9fE; SAPISID=dZqsEdkN1kgwG5XK/AHKoDsreJPB4Vw_Ua; NID=67=iUAiGWHq9qJ29H3u0bbOwMDP4jQ8Ef3bL6w9u_eKXRwhTlVyyjsIIWQ11OgszFDjNrdSK_ibUXJot6keGMAqDetXyRTnTyQlR5E0a0DoTbOrul4bX7WEvBr-A24va66oFrMCQYwjSVgR4BK2Q5A1tVcw5tX_iFOH3HfwRZFXzUG6IHHI-96X1XPRoK0TH4D9LVBESdlf-XZLJ8yPv2s7b7NVVgFM1rYwsSbyvA-ps0CTC0DrCDL4L6MOixw0PtuWPsCE7F4-LFzAWAb-7yVhLpLJ; SID=DQAAALEBAAAQi6d7KrAJlOV7d9a8PsJSV0PmImGKfIQ-SUbWmiN8oyGMDYdPdM7Og6dF6VE45MMhzJ5Ckwselasme4hxuTOHqYJfPr7oCj8rz_71TIn1WO-GAkG3nYSh_6wvsG4L2ediBbHJB0LYRMfxYMynr5WEjHm1xDiRGyeIKnY3aZTp6h6rFFPg4ansPuPrig9cSBPpA0vLW5mUko9adS_NpWN8BAY9AQK01GyPq_QV1fDp-hTXwXTFNrYupU576r9-47xDzuG9GPecsihi8WBeFMwyvQBGixmlmxT8eFO6oh4p6Ocp_Ed3OVN-HLeZ0zO0oJSWR8rG_mUAmX9sAG80dEtGMvXvYPnza86nsQNgMyK82GQSHW083W3zxoDE3RoTb6sZh49J8TKPBRzMWL7d7CnUxahmUf-Ro06LLAt6rOOpw5JJzBLZr3UzvKzJWV-2WzEyJlNwmD8fkVFL5qyYBsihhdxWYENR3l3TRjQ5vzLB9QyoBgyka56oVreDAgtnQYB7M8CpY1TnBb_jHJbKSL9nAJYpW8xAwfte5PTb7px5K1rGj9JwSvwYhYwbfJIHh1N4ClwkdLlHBiTvVHkW9QDx")
+(defvar *google-manual-header* "EI9X7MP_UN6KaVDOoQ4mMn91XdQ:1400594464924")
+
+(defun load-history (from to &key (trim nil))
+  (loop for loc in (cadadr (yason:parse
+                            (flexi-streams:octets-to-string
+                             (drakma:http-request
+                              "https://maps.google.com/locationhistory/b/1/apps/pvjson?t=0"
+                              :method :post
+                              :content (format nil "[null,~A,~A,~A]"
+                                               (ts->ms from)
+                                               (ts->ms to)
+                                               (if trim "true" "false"))
+                              :additional-headers (list (cons "x-manualheader" *google-manual-header*)
+                                                        (cons "cookie" *google-cookie*))))))
+     collect (list (ms->ts (parse-integer (cadr loc)))
+                   (cons (caddr loc)
+                         (cadddr loc)))))