X-Git-Url: https://git.xandkar.net/?a=blobdiff_plain;f=tt;h=8b66a2eeeb4cdeb0362afd84fcf1e7dbb88b849f;hb=9a6a9f9a4781816980dd41221b8f238641134ce5;hp=62499bbfbfeb285ac728aa5b5d897e97f92a36c3;hpb=d6a187b7487fd369119d018a238696ba750793e7;p=tt.git diff --git a/tt b/tt index 62499bb..8b66a2e 100755 --- a/tt +++ b/tt @@ -15,6 +15,8 @@ ; TODO highlight hashtags ; TODO filter on hashtags ; TODO query language +; TODO concurrency +; TODO log colors by level #lang racket @@ -81,35 +83,31 @@ [i (in-naturals)]) (msg-print (odd? i) msg))) +(define (feed->msgs feed) + (log-info "downloading feed nick:~a uri:~a" + (feed-nick feed) + (feed-uri feed)) + (with-handlers + ([exn:fail:network? + (λ (e) + (log-error "network error nick:~a uri:~a exn:~a" + (feed-nick feed) + (feed-uri feed) + e) + #f)] + [integer? + (λ (status) + (log-error "http error nick:~a uri:~a status:~a" + (feed-nick feed) + (feed-uri feed) + status) + #f)]) + (str->msgs [feed-nick feed] [uri-fetch (feed-uri feed)]))) + +; TODO timeline contract : time-sorted list of messages (define (timeline feeds) - (let* ([timelines - (filter-map - (λ (feed) - (log-info "processing feed nick:~a uri:~a" - (feed-nick feed) - (feed-uri feed)) - (with-handlers - ([exn:fail:network? - (λ (e) - (log-error "network error nick:~a uri:~a exn:~a" - (feed-nick feed) - (feed-uri feed) - e) - #f)] - [integer? - (λ (status) - (log-error "http error nick:~a uri:~a status:~a" - (feed-nick feed) - (feed-uri feed) - status) - #f)]) - (str->msgs [feed-nick feed] [uri-fetch (feed-uri feed)]))) - feeds)] - [timeline - (append* timelines)] - [timeline - (sort timeline (λ (a b) [< (msg-tm_epoch a) (msg-tm_epoch b)]))]) - timeline)) + (sort (append* (filter-map feed->msgs feeds)) + (λ (a b) [< (msg-tm_epoch a) (msg-tm_epoch b)]))) (define (we-are-twtxt) (let* ([uri