Kinda helps if I include the executables, huh?
This commit is contained in:
parent
6569e7ba72
commit
9263fc83aa
|
@ -13,7 +13,6 @@
|
|||
build
|
||||
eggs
|
||||
parts
|
||||
bin
|
||||
var
|
||||
sdist
|
||||
develop-eggs
|
||||
|
|
|
@ -0,0 +1,60 @@
|
|||
#!/usr/local/bin/hy
|
||||
|
||||
(def *version* "0.0.2")
|
||||
|
||||
(import os re sys html2text
|
||||
requests
|
||||
[slugify [slugify]]
|
||||
[datetime [datetime]]
|
||||
[bs4 [BeautifulSoup]]
|
||||
[xml.etree.ElementTree :as ET])
|
||||
|
||||
(def search-date (re.compile "saved by \S+ on (.*)"))
|
||||
|
||||
(defn extract-date [infoblock]
|
||||
(let [datetext (.group (.search search-date infoblock) 1)
|
||||
dateparse (.strptime datetime datetext "%B %d, %Y")]
|
||||
(.strftime dateparse "%Y-%m-%d %a 00:00")))
|
||||
|
||||
(defn extract-tags [tags]
|
||||
(map (fn [li] (. li text)) (.find-all tags "li")))
|
||||
|
||||
(defn get-details [article]
|
||||
(let [anchor (. (.find article "h3") a)
|
||||
title (. anchor text)
|
||||
info (.find article "div" :class "articleInfoPan")
|
||||
url (-> info (. p) (. a) (. text))
|
||||
created-date (extract-date (. info text))
|
||||
desc (.find article "div" :class "thumbTBriefTxt")
|
||||
rawtags (list (extract-tags desc))
|
||||
comment (.join " " (map (fn [i] (. i text)) (.find-all desc "p")))
|
||||
tags (if (> (len rawtags) 0) (+ ":" (.join ":" rawtags) ":") "")]
|
||||
(print (.format "** [[{}][{}] {}" url title tags))
|
||||
(print ":PROPERTIES:")
|
||||
(print (.format ":created: [{}]" created-date))
|
||||
(print ":END")
|
||||
(print "")
|
||||
(if (> (len comment) 0)
|
||||
(do (print comment)
|
||||
(print "")))))
|
||||
|
||||
(defn process-page [html]
|
||||
(let [soup (BeautifulSoup html "lxml")
|
||||
articles (.find-all soup "div" :class "articleThumbBlockOuter")]
|
||||
(for [article articles] (get-details article))
|
||||
(let [nexturl (.find soup "a" {"aria-label" "Next"})]
|
||||
(if nexturl
|
||||
(+ "https://del.icio.us" (get nexturl "href"))
|
||||
None))))
|
||||
|
||||
(defn process-request [url]
|
||||
(let [req (requests.get url)
|
||||
html (. req text)]
|
||||
(process-page html)))
|
||||
|
||||
(defmain [&rest args]
|
||||
(try
|
||||
(let [nexturl (get args 1)]
|
||||
(while nexturl
|
||||
(def nexturl (process-request nexturl))))))
|
||||
|
|
@ -0,0 +1,58 @@
|
|||
#!/usr/local/bin/hy
|
||||
|
||||
(def *version* "0.0.2")
|
||||
|
||||
(import os re sys html2text
|
||||
[slugify [slugify]]
|
||||
[datetime [datetime]]
|
||||
[xml.etree.ElementTree :as ET])
|
||||
|
||||
(defn process-date [ndate]
|
||||
(let [d (.strptime datetime ndate "%Y%m%dT%H%M%SZ")]
|
||||
(.strftime d "%Y-%m-%d %a %H:%M")))
|
||||
|
||||
(def body-wrap (re.compile "^.*<en-note>(.*?)</en-note>"))
|
||||
(def htmparser (.HTML2Text html2text))
|
||||
|
||||
(def post-body-clean-re (re.compile "^\* \* \*"))
|
||||
|
||||
(defn process-body [body]
|
||||
(let [post-body (.sub body-wrap "\\1" (. body text))
|
||||
markdown (htmparser.handle (.sub post-body-clean-re "" post-body))]
|
||||
(->> markdown
|
||||
(.sub post-body-clean-re ""))))
|
||||
|
||||
(defn process-note [note]
|
||||
(let [url (if (not (= None (note.find ".//source-url")))
|
||||
(. (note.find ".//source-url") text)
|
||||
None)
|
||||
title (. (note.find "title") text)
|
||||
created-date (. (note.find "created") text)
|
||||
updated-date (if (note.find "updated") (. (note.find "updated") text) "")
|
||||
tags (+ ":" (.join ":" (map (fn [a] (. a text)) (note.findall "tag"))) ":")
|
||||
body (note.find "content")]
|
||||
(, title (.join "\n" (+ ["#+STARTUP: showall "
|
||||
""
|
||||
(if url
|
||||
(.format "** [[{}][{}]] {}" url title tags)
|
||||
(.format "** {} {}" title tags))
|
||||
":PROPERTIES:"
|
||||
(.format ":created: [{}]" (process-date created-date))]
|
||||
(if updated-date
|
||||
[(.format ":updated: [{}]" (process-date updated-date))] [])
|
||||
[":END" "" (process-body body) ""])))))
|
||||
|
||||
(defmain [&rest args]
|
||||
(try
|
||||
(let [filename (get args 1)
|
||||
tree (ET.parse filename)
|
||||
root (.getroot tree)
|
||||
notes (root.iter "note")]
|
||||
(with [bmarks (open "Bookmarks.org" "a")]
|
||||
(.write bmarks "* Bookmarks\n\n")
|
||||
(for [note notes]
|
||||
(let [(, title content) (process-note note)
|
||||
slug (slugify title)]
|
||||
(with [hndl (open (.format "{}.org" (slugify title)) "w")]
|
||||
(.write hndl content))
|
||||
(.write bmarks (.format "** [[file:./{}.org][{}]]\n\n" (slugify title) title))))))))
|
Loading…
Reference in New Issue