-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathreadme.llar
127 lines (111 loc) · 4.68 KB
/
readme.llar
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
;; Runtime configuration
;; Most of clojure and additional libraries are available
;; Fetch a source with optional processing
;;
;; (fetch SOURCE-KEY SOURCE & BODY)
;; BODY: :options, :tags, :post, :pre, :rm, :post-fns, :pre-fns, :rm-fn
;; :options - a set of options passed to the UI
;; :mark-read-on-view - mark items as read when viewed
;; :main-list-use-desciption - use description instead of word cloud in main list
;; :tags - a set of tags to be associated with the source
;; :post - a function to be called after filtering
;; :post-fns - a vec of functions to be called after filtering
;; :pre - a function body to be called before filtering
;; :pre-fns - a vec of functions to be called before filtering
;; :rm - a function body to be called to remove items
;; :rm-fn - a vec of functions to remove items
;;
;; All filter/pre/post functions bodies are called with special context variables:
;; Note: this does not apply to post-fns, pre-fns, rm-fn which require a function def
;; $item - the item
;; $key - the source key
;; $title - the title of the item
;; $authors - the authors of the item
;; $tags - the tags of the item
;; $raw - the raw item (not all sources support this)
;; $url - the url of the item
;; $html - the html of the item
;; $text - the text of the item
;; $options - the options of the source
;; $entry - the entry of the item
;; $score - a score if source is reddit or hackernews
;;
;; All post-fns,pre-fns, rm-fn are called with the fetched item as single argument
;; Processing functions have additional helper functions available:
;; $credentials - access credentials from credentials.edn
;; $html2text - convert html to text
;; $ellipsify - truncate text with eppipsis
;; $parse-ts - parse timestamp to zoned date time. first parameter is the format. second the string
;; either a java time format string or a keyword from java-time.format/predefined-formatters
;; common formatters:
;; - :iso-date "2024-02-16"
;; - :iso-date-time "2024-02-16T13:37:00Z"
;; - :rfc-1123-date-time
;; $category-rm - remove items by category. usually avaiale for feed items
;; $extract - run article extraction on html content
;; $add-tag - add an item tag
;; $add-tag-filter - add a tag to items matching a filter
;; $exchange - exchange part of an item with another. usually to replace descriptions with contents
;; $html-to-hickory - convert html to hickory
;; $hickory-sanitize-blobify - run llar html sanitize and blobify on hickory
;; $make-item-hash - create item hash
;; $parse-url - parse string to URI
;; $hickory-to-html - convert hickory to html
;; $uri-path - get path from URI
;; $http-cookie-store - create HTTP cookie store for clj-http.client
;; $http-get - clj-http.client get
;; $http-post - clj-http.client post
;; And the following namespaces:
;; clojure.string as string
;; hickory.select as S
;; java-time.api as time
;; clojure.tools.logging as log
;; Example:
;; (fetch irq0 (src/feed "http://irq0.org/index.xml")
;; :tags #{:blog})
;; Reddit sources have an additional parameter :min-score
;; (fetch-reddit (src/reddit "games" :top) :min-score 2000
;; :options #{:mark-read-on-view}
;; :tags #{:gaming})
;; Hacker News sources take a tag and optional filters
;; (src/hn TAG MAP-OF-FILTERS)
;; TAG is one of :front_page :comment :ask_hn :show_hn :job
;; MAP-OF-FILTERS:
;; min-score, min-comments, created-after (timestamp), count, query (algolia query string)
;;
;; Define schedules
;;
;; Fetch feeds by using filter predicates
;;
;; (sched-fetch SCHED-NAME CHIME-TIMES PREDICATE)
;; SCHED-NAME - schedule identifier
;; CHIME-TIMES - a chime periodic seq to run fetches at
;; either chime/periodic-seq or a keyword:
;; :during-daytime - Daily at 10:00, 12:00, 13:00, 14:00, 16:00, 18:00
;; :sundays - Sunday at 5:00
;; :early-morning - Daily at 7:00
;; :hourly - Every hour
;; PREDICATE - a filter applied to all fetchable sources
;; context variables available:
;; $KEY - source key as keyword (fetch SOURCE-KEY). e.g (fetch irq0) -> :irq0
;; $SRC - source - to use with src/PREDICATES like src/mailbox?, src/reddit?, src/twitter?, src/feed?
;; $TAGS - a set of source tags
;; Example:
;; (sched-fetch
;; blogs
;; :hourly
;; (some #{:blogs} $TAGS))
;;
;; Automatically set items read after a while
;;
;; (autoread SCHED-NAME PERIOD PREDICATE)
;; SCHED-NAME - schedule identifier
;; PERIOD - a java time Period. e.g (time/weeks 2)
;; PREDICATE - a filter applied to all fetchable sources
;; Example:
;; (autoread reddit-ages-fast (time/weeks 4) (some #{:reddit} $TAGS))
;;
;; Highlight - add tag :highlight if a word, author matches
;;
;; (highlight words "llar" "rss")
;; (highlight authors "Douglas Engelbart")