Skip to content

jogo3000/emacs-scrape-flow

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 

Repository files navigation

scrape-flow.el

Library for scraping data from flow.polar.com.

Usage

First, login to flow.polar.com by using M-x scrape-flow-login. This asks for your login name and password and logs to flow.polar.com using url.el package. Your credentials won’t be saved. Your session lives in the cookies url.el uses.

After that you can use M-x scrape-flow-get-training to produce an completing-read buffer which allows you to select the exercise you want to fetch. By default this inserts the fetched object to the current buffer. You can customize the action with scrape-flow-get-training-action. For example, my init.el has the following:

(defun jogo3000/distance-to-string (distance)
  "Convert DISTANCE in meters to readable string."
  (-> (/ distance 1000) (number-to-string)))

(defun scrape-flow-to-org-item (training)
  "Insert TRAINING as 'org-mode' item."
  (org-insert-heading-respect-content)
  (org-insert-property-drawer)
  (org-entry-put (point) "AIKA"
                 (format-time-string "<%Y-%m-%d %a %H:%M>" (alist-get 'time training)))
  (org-entry-put (point) "LAJI"
                 (cdr (assoc (alist-get 'sport training) scrape-flow-sports-translations)))
  (-some->> (alist-get 'distance training) jogo3000/distance-to-string
            (org-entry-put (point) "MATKA"))
  (-some->> (alist-get 'duration training) (scrape-flow--seconds-to-string)
            (org-entry-put (point) "KESTO"))
  (-some->> (alist-get 'avg-hr training) (number-to-string)
            (org-entry-put (point) "KESKISYKE"))
  (-some->> (alist-get 'avg-pace training) (scrape-flow--pace-to-string)
            (org-entry-put (point) "KESKIVAUHTI"))
  (org-entry-put (point) "SRPE"
                 (completing-read "Arvioi SRPE: " '("1" "2" "3" "4" "5" "6" "7" "8" "9" "10")))
  (org-entry-put (point) "KENKÄ"
                 (completing-read "Mitä kenkää käytit: "
                           (org-property-get-allowed-values (point) "KENKÄ")))
  (org-entry-put (point) "ALUSTA"
                 (completing-read "Kuvaile harjoitusalusta: "
                           (org-property-get-allowed-values (point) "ALUSTA"))))

(setq scrape-flow-get-training-action 'scrape-flow-to-org-item)

Training data is gathered into an alist with following structure

`((time . ,(scrape-flow--get-exercise-time dom)) ; emacs internal time
  (sport . ,(scrape-flow--get-sport dom))        ; sport name as string
  (duration . ,(scrape-flow--get-duration dom))  ; duration in seconds
  (distance . ,(scrape-flow--get-distance dom))  ; distance in meters
  (avg-hr . ,(scrape-flow--get-avg-hr dom))      ; average heart rate
  (avg-pace . ,(scrape-flow--get-avg-pace dom))  ; average pace as seconds per kilometer
  (ascent . ,(scrape-flow--get-ascent dom))      ; ascent in meters
  (url . "https://flow.polar.com/training/analysis/495849359") ; link to the training details
  )

About

Library for scraping data from flow.polar.com

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy