(drak)
2016-02-03: Refactor + crawl the full WoT starting at the seed-id Refactor + crawl the full WoT starting at the seed-id
diff --git a/crawl-wot.scm b/crawl-wot.scm
--- a/crawl-wot.scm
+++ b/crawl-wot.scm
@@ -137,6 +137,25 @@
"Get a freenet URL for the key and the version"
(furl-uri (string-append "SSK" (substring key 3) "/" name "-" version)))
+(define (download-by-weekly-date-hint uri year week)
+ (let* ((weekuri (datehint-for-key (wot-uri-key uri) year #:week week))
+ (hint (get (furl-uri weekuri))))
+ (if (not (string? hint))
+ #f
+ (let* ((hint-alist (parse-datehint hint))
+ (version (assoc-ref hint-alist 'version))
+ (date (assoc-ref hint-alist 'date))
+ (url (furl-key-name-version (wot-uri-key uri) "WebOfTrust" version))
+ (filename (string-append date "/" (wot-uri-key uri) "-" version)))
+ (when (not (file-exists? date))
+ (mkdir date))
+ (let ((data (get url)))
+ (when (string? data)
+ (let ((port (open-output-file filename)))
+ (put-string port data)
+ (close-port port))))
+ filename))))
+
(define (download-by-date-hint uri)
"Download all versions of the ID, ordered by the week in the DATEHINT."
;; An uri looks like this: USK@QWW2a74OWrtN-aWJ80fjWhfFx8NlNrlU0dQfd3J7t1E,2g-wfM57Up9DV1qoEDMPcDU-KPskk0yyiYFz67ydSos,AQACAAE
@@ -151,35 +170,13 @@
;; download the versions into directories ordered as YEAR-month-day/SSK@...-WebOfTrust-version
(let ((years (iota 10 2016 -1))
(weeks (iota 52 52 -1))) ; 52-1
- (delete #f
+ (delete #f ;; only return the filenames of successful downloads
(map (lambda (year)
(let* ((yearuri (datehint-for-key (wot-uri-key uri) year))
(hint (get (furl-uri yearuri))))
- (write yearuri)(newline)
- (write hint)(newline)
(if (not (string? hint))
#f
- (map (lambda (week)
- (let* ((weekuri (datehint-for-key (wot-uri-key uri) year #:week week))
- (hint (get (furl-uri weekuri))))
- (write weekuri)(newline)
- (write hint)(newline)
- (if (not (string? hint))
- #f
- (let* ((hint-alist (parse-datehint hint))
- (version (assoc-ref hint-alist 'version))
- (date (assoc-ref hint-alist 'date))
- (url (furl-key-name-version (wot-uri-key uri) "WebOfTrust" version))
- (filename (string-append date "/" (wot-uri-key uri) "-" version)))
- (when (not (file-exists? date))
- (mkdir date))
- (write url)(newline)
- (let ((data (get url)))
- (when (string? data)
- (let ((port (open-output-file filename)))
- (put-string port data)
- (close-port port))))
- filename))))
+ (map (lambda (week) (download-by-weekly-date-hint uri year week))
weeks))))
years))))