From: Siraaj Khandkar Date: Mon, 29 Mar 2021 12:41:37 +0000 (-0400) Subject: Support selecting time ranges X-Git-Tag: 0.20.0 X-Git-Url: https://git.xandkar.net/?p=tt.git;a=commitdiff_plain;h=a993cb8550a584242d352ff7d845a6ca7ff3c755 Support selecting time ranges --- diff --git a/TODO b/TODO index b48bfd8..f669c72 100644 --- a/TODO +++ b/TODO @@ -10,6 +10,13 @@ Legend: In-progress ----------- +- [-] timeline limits + - [x] by time range + - [ ] by msg count + - [ ] per peer + - [ ] total + Not necessary for short format, because we have Unix head/tail, + but may be convinient for long format (because msg spans multiple lines). - [-] Convert to Typed Racket - [x] build executable (otherwise too-slow) - [-] add signatures @@ -99,6 +106,7 @@ In-progress Backlog ------- +- [ ] Support date without time in timestamps - [ ] Crawl all cache/objects/*, not given peers. BUT, in order to build A-mentioned-B graph, we need to know the nick associated with the URI whos object we're examining. How to do that? @@ -136,10 +144,8 @@ Backlog - [ ] download times per peer - [ ] Support redirects - should permanent redirects update the peer ref somehow? -- [ ] Support time ranges (i.e. reading the timeline between given time points) - [ ] optional text wrap - [ ] write -- [ ] timeline limits - [ ] peer refs set operations (perhaps better done externally?) - [ ] timeline as a result of a query (peer ref set op + filter expressions) - [ ] config files @@ -168,6 +174,7 @@ Backlog Done ---- +- [x] Support time ranges (i.e. reading the timeline between given time points) - [x] Dedup read-in peers before using them. - [x] Prevent redundant downloads - [x] Check ETag diff --git a/info.rkt b/info.rkt index 2b1ab2d..439e3d3 100644 --- a/info.rkt +++ b/info.rkt @@ -6,7 +6,7 @@ (define pkg-desc "twtxt client") (define version - "0.19.2") + "0.20.0") (define pkg-authors '("Siraaj Khandkar ")) (define deps diff --git a/tt.rkt b/tt.rkt index afc94f6..9a38136 100644 --- a/tt.rkt +++ b/tt.rkt @@ -582,7 +582,9 @@ (exit 1)))] [(or "r" "read") (let ([out-format 'multi-line] - [order 'old->new]) + [order 'old->new] + [ts-min #f] + [ts-max #f]) (command-line #:program "tt read" @@ -590,6 +592,12 @@ [("-r" "--rev") "Reverse displayed timeline order." (set! order 'new->old)] + [("-m" "--min") + m "Earliest time to display (ignore anything before it)." + (set! ts-min (rfc3339->epoch m))] + [("-x" "--max") + x "Latest time to display (ignore anything after it)." + (set! ts-max (rfc3339->epoch x))] #:once-any [("-s" "--short") "Short output format" @@ -601,7 +609,15 @@ (let* ([peers (paths->peers file-paths)] [timeline - (timeline-sort (peers->timeline peers) order)]) + (timeline-sort (peers->timeline peers) order)] + [timeline + (filter (λ (m) (and (if ts-min (>= (Msg-ts-epoch m) + ts-min) + #t) + (if ts-max (<= (Msg-ts-epoch m) + ts-max) + #t))) + timeline)]) (timeline-print out-format timeline))))] [(or "c" "crawl") (command-line