about summary refs log tree commit diff stats
path: root/sfeedrc
diff options
context:
space:
mode:
authorCase Duckworth2023-01-17 11:48:19 -0600
committerCase Duckworth2023-01-17 11:48:19 -0600
commit6ed39858fea20f2cf15abea7f379dd58a5393b28 (patch)
tree3c45bc56d712148146a84e75be291a19c307d633 /sfeedrc
parentadd kindrobot (diff)
downloadsfeed-6ed39858fea20f2cf15abea7f379dd58a5393b28.tar.gz
sfeed-6ed39858fea20f2cf15abea7f379dd58a5393b28.zip
Add Maggie Appleton; whitespace
Diffstat (limited to 'sfeedrc')
-rw-r--r--sfeedrc695
1 files changed, 348 insertions, 347 deletions
diff --git a/sfeedrc b/sfeedrc index d3d2490..de2d41c 100644 --- a/sfeedrc +++ b/sfeedrc
@@ -8,411 +8,412 @@ maxjobs="$(nproc)"
8### Feeds ####################################################### 8### Feeds #######################################################
9 9
10feeds() { 10feeds() {
11 ## feed NAME FEED_URL BASE_URL ENCODING # defined by sfeedrc(5). 11 ## feed NAME FEED_URL BASE_URL ENCODING # defined by sfeedrc(5).
12 # I want to add some extra fields after these. 12 # I want to add some extra fields after these.
13 feeds_planets 13 feeds_planets
14 feeds_youtube 14 feeds_youtube
15 feeds_podcasts 15 feeds_podcasts
16 feeds_friends 16 feeds_friends
17 feeds_people 17 feeds_people
18 feeds_news 18 feeds_news
19 feeds_smolweb 19 feeds_smolweb
20 feeds_comics 20 feeds_comics
21 feeds_misc 21 feeds_misc
22 feeds_me 22 feeds_me
23 feeds_from_agafnd 23 feeds_from_agafnd
24 feeds_from_elioat 24 feeds_from_elioat
25} 25}
26 26
27feeds_planets() { 27feeds_planets() {
28 feedx "Planet Emacs" "https://planet.emacslife.com/atom.xml" "https://planet.emacslife.com/" "" 28 feedx "Planet Emacs" "https://planet.emacslife.com/atom.xml" "https://planet.emacslife.com/" ""
29 feedx "Planet Lisp" "https://planet.lisp.org/rss20.xml" "https://planet.lisp.org/" "" 29 feedx "Planet Lisp" "https://planet.lisp.org/rss20.xml" "https://planet.lisp.org/" ""
30 feedx "Planet Scheme" "https://planet.scheme.org/atom.xml" "https://planet.scheme.org/" "" 30 feedx "Planet Scheme" "https://planet.scheme.org/atom.xml" "https://planet.scheme.org/" ""
31} 31}
32 32
33feeds_podcasts() { 33feeds_podcasts() {
34 feedx "Tilde Whirl Tildeverse Podcast" "https://tilde.town/~dozens/podcast/rss.xml" "https://tilde.town/~dozens/podcast/" "" 34 feedx "Tilde Whirl Tildeverse Podcast" "https://tilde.town/~dozens/podcast/rss.xml" "https://tilde.town/~dozens/podcast/" ""
35 feedx "trash cat tech cat" "https://podcast.librepunk.club/tctc/ogg.xml" "https://podcast.librepunk.club/tctc/" "" 35 feedx "trash cat tech cat" "https://podcast.librepunk.club/tctc/ogg.xml" "https://podcast.librepunk.club/tctc/" ""
36 feedx "Hacker Public Radio" "https://hackerpublicradio.org/hpr_ogg_rss.php" "https://hackerpublicradio.org/" "" 36 feedx "Hacker Public Radio" "https://hackerpublicradio.org/hpr_ogg_rss.php" "https://hackerpublicradio.org/" ""
37 feedx "Levar Burton Reads" "https://feeds.simplecast.com/LDNgBXht" 37 feedx "Levar Burton Reads" "https://feeds.simplecast.com/LDNgBXht"
38 feedx "A Problem Squared" "https://feeds.libsyn.com/230510/rss" 38 feedx "A Problem Squared" "https://feeds.libsyn.com/230510/rss"
39 feedx "Lowtech Radio Gazeete" "https://lambdacreate.com/static/ltrg/feed.xml" "https://lambdacreate.com/podcast/ltrg" 39 feedx "Lowtech Radio Gazeete" "https://lambdacreate.com/static/ltrg/feed.xml" "https://lambdacreate.com/podcast/ltrg"
40 yt_feed "iilluminaughtii" "UCpDmn2FfVYdPIDwRTcf5-OA" 40 yt_feed "iilluminaughtii" "UCpDmn2FfVYdPIDwRTcf5-OA"
41 feedx "Maintenance Phase" "https://feeds.buzzsprout.com/1411126.rss" "https://www.maintenancephase.com/" 41 feedx "Maintenance Phase" "https://feeds.buzzsprout.com/1411126.rss" "https://www.maintenancephase.com/"
42 feedx "Switched on Pop" "https://feeds.megaphone.fm/switchedonpop" "https://switchedonpop.com/" 42 feedx "Switched on Pop" "https://feeds.megaphone.fm/switchedonpop" "https://switchedonpop.com/"
43 feedx "You Are Good" "https://feeds.blubrry.com/feeds/whyaredads.xml" "" 43 feedx "You Are Good" "https://feeds.blubrry.com/feeds/whyaredads.xml" ""
44} 44}
45 45
46feeds_youtube() { 46feeds_youtube() {
47 yt_feed "NPR Music" "UC4eYXhJI4-7wSWc8UNRwD4A" 47 yt_feed "NPR Music" "UC4eYXhJI4-7wSWc8UNRwD4A"
48 yt_feed "3Blue1Brown" "UCYO_jab_esuFRV4b17AJtAw" 48 yt_feed "3Blue1Brown" "UCYO_jab_esuFRV4b17AJtAw"
49 yt_feed "AB - Ancienne Belgique" "UCUVAw2kdxJlcfCdEcdgXv5A" 49 yt_feed "AB - Ancienne Belgique" "UCUVAw2kdxJlcfCdEcdgXv5A"
50 yt_feed "Adam Ragusea" "UC9_p50tH3WmMslWRWKnM7dQ" 50 yt_feed "Adam Ragusea" "UC9_p50tH3WmMslWRWKnM7dQ"
51 yt_feed "Babish Culinary Universe" "UCJHA_jMfCvEnv-3kRjTCQXw" 51 yt_feed "Babish Culinary Universe" "UCJHA_jMfCvEnv-3kRjTCQXw"
52 yt_feed "Baggers" "UCMV8p6Lb-bd6UZtTc_QD4zA" 52 yt_feed "Baggers" "UCMV8p6Lb-bd6UZtTc_QD4zA"
53 yt_feed "Case Duckworth" "UC92gRJdnUYklVu4pvj9n0Lw" 53 yt_feed "Case Duckworth" "UC92gRJdnUYklVu4pvj9n0Lw"
54 yt_feed "Claire Saffitz x Dessert Person" "UCvw6Y1kr_8bp6B5m1dqNyiw" 54 yt_feed "Claire Saffitz x Dessert Person" "UCvw6Y1kr_8bp6B5m1dqNyiw"
55 yt_feed "Computerphile" "UC9-y-6csu5WGm29I7JiwpnA" 55 yt_feed "Computerphile" "UC9-y-6csu5WGm29I7JiwpnA"
56 yt_feed "EBRPL Career Center" "UCIvntuaxP7PyaJDeHE_9E8Q" 56 yt_feed "EBRPL Career Center" "UCIvntuaxP7PyaJDeHE_9E8Q"
57 yt_feed "EmacsConf and Emacs hangouts" "UCwuyodzTl_KdEKNuJmeo99A" 57 yt_feed "EmacsConf and Emacs hangouts" "UCwuyodzTl_KdEKNuJmeo99A"
58 yt_feed "Henry Homesweet" "UCZqjwc1Wy5t1rsviYYsJiYg" 58 yt_feed "Henry Homesweet" "UCZqjwc1Wy5t1rsviYYsJiYg"
59 yt_feed "Howard Abrams" "UCVHICXXtKG7rZgtC5xonNdQ" 59 yt_feed "Howard Abrams" "UCVHICXXtKG7rZgtC5xonNdQ"
60 yt_feed "Ignite Talks" "UCZotK8ZPTUNLMeW5Q6T0cKg" 60 yt_feed "Ignite Talks" "UCZotK8ZPTUNLMeW5Q6T0cKg"
61 yt_feed "Jake B" "UCBMMB7Yi0eyFuY95Qn2o0Yg" 61 yt_feed "Jake B" "UCBMMB7Yi0eyFuY95Qn2o0Yg"
62 yt_feed "James Tomasino" "UCbTp1BYjpuhDRG5OmgIT8iw" 62 yt_feed "James Tomasino" "UCbTp1BYjpuhDRG5OmgIT8iw"
63 yt_feed "jan Misali" "UCJOh5FKisc0hUlEeWFBlD-w" 63 yt_feed "jan Misali" "UCJOh5FKisc0hUlEeWFBlD-w"
64 yt_feed "J Duckworth Animations" "UCtAEaNVrNxAUy2VSRPD_PYQ" 64 yt_feed "J Duckworth Animations" "UCtAEaNVrNxAUy2VSRPD_PYQ"
65 yt_feed "John Kitchin" "UCQp2VLAOlvq142YN3JO3y8w" 65 yt_feed "John Kitchin" "UCQp2VLAOlvq142YN3JO3y8w"
66 yt_feed "karthik" "UCbh_g91w0T6OYp40xFrtnhA" 66 yt_feed "karthik" "UCbh_g91w0T6OYp40xFrtnhA"
67 yt_feed "Ken Forkish" "UCvVvFZd0e86bLbd5FdgYiUg" 67 yt_feed "Ken Forkish" "UCvVvFZd0e86bLbd5FdgYiUg"
68 yt_feed "LockPickingLawyer" "UCm9K6rby98W8JigLoZOh6FQ" 68 yt_feed "LockPickingLawyer" "UCm9K6rby98W8JigLoZOh6FQ"
69 yt_feed "Maangchi" "UC8gFadPgK2r1ndqLI04Xvvw" 69 yt_feed "Maangchi" "UC8gFadPgK2r1ndqLI04Xvvw"
70 yt_feed "Mike Zamansky" "UCxkMDXQ5qzYOgXPRnOBrp1w" 70 yt_feed "Mike Zamansky" "UCxkMDXQ5qzYOgXPRnOBrp1w"
71 yt_feed "MIT OpenCourseWare" "UCEBb1b_L6zDS3xTUrIALZOw" 71 yt_feed "MIT OpenCourseWare" "UCEBb1b_L6zDS3xTUrIALZOw"
72 yt_feed "My Analog Journal" "UC8TZwtZ17WKFJSmwTZQpBTA" 72 yt_feed "My Analog Journal" "UC8TZwtZ17WKFJSmwTZQpBTA"
73 yt_feed "Nat's What I Reckon" "UCEFW1E8QzP-hKxjO2Rj68wg" 73 yt_feed "Nat's What I Reckon" "UCEFW1E8QzP-hKxjO2Rj68wg"
74 yt_feed "Now You See It" "UCWTFGPpNQ0Ms6afXhaWDiRw" 74 yt_feed "Now You See It" "UCWTFGPpNQ0Ms6afXhaWDiRw"
75 yt_feed "Numberphile" "UCoxcjq-8xIDTYp3uz647V5A" 75 yt_feed "Numberphile" "UCoxcjq-8xIDTYp3uz647V5A"
76 yt_feed "Philosophy Tube" "UC2PA-AKmVpU6NKCGtZq_rKQ" 76 yt_feed "Philosophy Tube" "UC2PA-AKmVpU6NKCGtZq_rKQ"
77 yt_feed "PronunciationManual" "UCqDSLtXeZsGc3dtVb5MW13g" 77 yt_feed "PronunciationManual" "UCqDSLtXeZsGc3dtVb5MW13g"
78 yt_feed "Protesilaos Stavrou" "UC0uTPqBCFIpZxlz_Lv1tk_g" 78 yt_feed "Protesilaos Stavrou" "UC0uTPqBCFIpZxlz_Lv1tk_g"
79 yt_feed "RailCowGirl" "UCj-Xm8j6WBgKY8OG7s9r2vQ" 79 yt_feed "RailCowGirl" "UCj-Xm8j6WBgKY8OG7s9r2vQ"
80 yt_feed "Simone Giertz" "UC3KEoMzNz8eYnwBC34RaKCQ" 80 yt_feed "Simone Giertz" "UC3KEoMzNz8eYnwBC34RaKCQ"
81 yt_feed "Steve Yegge" "UC2RCcnTltR3HMQOYVqwmweA" 81 yt_feed "Steve Yegge" "UC2RCcnTltR3HMQOYVqwmweA"
82 yt_feed "System Crafters" "UCAiiOTio8Yu69c3XnR7nQBQ" 82 yt_feed "System Crafters" "UCAiiOTio8Yu69c3XnR7nQBQ"
83 yt_feed "Tasting History with Max Miller" "UCsaGKqPZnGp_7N80hcHySGQ" 83 yt_feed "Tasting History with Max Miller" "UCsaGKqPZnGp_7N80hcHySGQ"
84 yt_feed "Technology Connections" "UCy0tKL1T7wFoYcxCe0xjN6Q" 84 yt_feed "Technology Connections" "UCy0tKL1T7wFoYcxCe0xjN6Q"
85 yt_feed "Too Many Zooz" "UCtjXVqMVzBIgU0SO8AV0vPg" 85 yt_feed "Too Many Zooz" "UCtjXVqMVzBIgU0SO8AV0vPg"
86 yt_feed "Townsends" "UCxr2d4As312LulcajAkKJYw" 86 yt_feed "Townsends" "UCxr2d4As312LulcajAkKJYw"
87 yt_feed "Unitarian Church of Baton Rouge" "UClrqHvbiFM-1hn931ZmAPFw" 87 yt_feed "Unitarian Church of Baton Rouge" "UClrqHvbiFM-1hn931ZmAPFw"
88 yt_feed "Vulf" "UCtWuB1D_E3mcyYThA9iKggQ" 88 yt_feed "Vulf" "UCtWuB1D_E3mcyYThA9iKggQ"
89 yt_feed "WFTDA: Women's Flat Track Derby Association" "UC7eMWpvytqd3gYAqxTl9w7g" 89 yt_feed "WFTDA: Women's Flat Track Derby Association" "UC7eMWpvytqd3gYAqxTl9w7g"
90 yt_feed "Zach Anner" "UCPTVYxUoYWhNa8J7GzIGnyQ" 90 yt_feed "Zach Anner" "UCPTVYxUoYWhNa8J7GzIGnyQ"
91 yt_feed "Andrew Tropin" "UCuj_loxODrOPxSsXDfJmpng" 91 yt_feed "Andrew Tropin" "UCuj_loxODrOPxSsXDfJmpng"
92 yt_feed "Animist" "UCweDxCT5Fiykk3uHqPKqLWg" 92 yt_feed "Animist" "UCweDxCT5Fiykk3uHqPKqLWg"
93 yt_feed "Chris Were Digital" "UCAPR27YUyxmgwm3Wc2WSHLw" 93 yt_feed "Chris Were Digital" "UCAPR27YUyxmgwm3Wc2WSHLw"
94 yt_feed "Esoterica" "UCoydhtfFSk1fZXNRnkGnneQ" 94 yt_feed "Esoterica" "UCoydhtfFSk1fZXNRnkGnneQ"
95 yt_feed "FOSDEM" "UC9NuJImUbaSNKiwF2bdSfAw" 95 yt_feed "FOSDEM" "UC9NuJImUbaSNKiwF2bdSfAw"
96} 96}
97 97
98feeds_from_agafnd() { 98feeds_from_agafnd() {
99 # https://tilde.town/~agafnd/good-rss.html 99 # https://tilde.town/~agafnd/good-rss.html
100 yt_feed "bill wurtz" "UCq6aw03lNILzV96UvEAASfQ" 100 yt_feed "bill wurtz" "UCq6aw03lNILzV96UvEAASfQ"
101 yt_feed "Atomic Shrimp" "UCSl5Uxu2LyaoAoMMGp6oTJA" 101 yt_feed "Atomic Shrimp" "UCSl5Uxu2LyaoAoMMGp6oTJA"
102 yt_feed "brian david gilbert" "UCakAg8hC_RFJm4RI3DlD7SA" 102 yt_feed "brian david gilbert" "UCakAg8hC_RFJm4RI3DlD7SA"
103 yt_feed "Jonni Phillips" "UC1NbRaGNot6kNEL3Jsa7SRA" 103 yt_feed "Jonni Phillips" "UC1NbRaGNot6kNEL3Jsa7SRA"
104 # podcasts 104 # podcasts
105 feedx "Lingthusiasm" "https://feeds.soundcloud.com/users/soundcloud:users:237055046/sounds.rss" "https://lingthusiasm.com/" 105 feedx "Lingthusiasm" "https://feeds.soundcloud.com/users/soundcloud:users:237055046/sounds.rss" "https://lingthusiasm.com/"
106 # other stuff 106 # other stuff
107 feedx "Buttersafe" "https://feeds.feedburner.com/buttersafe" "https://www.buttersafe.com/" 107 feedx "Buttersafe" "https://feeds.feedburner.com/buttersafe" "https://www.buttersafe.com/"
108 feedx "Going Medieval" "https://going-medieval.com/feed/" 108 feedx "Going Medieval" "https://going-medieval.com/feed/"
109 feedx "Scooby Doo Mistakes" "https://scoobydoomistakes.tumblr.com/rss" "https://scoobydoomistakes.tumblr.com/" 109 feedx "Scooby Doo Mistakes" "https://scoobydoomistakes.tumblr.com/rss" "https://scoobydoomistakes.tumblr.com/"
110} 110}
111 111
112feeds_from_elioat() { 112feeds_from_elioat() {
113 # feed <name> <feedurl> [basesiteurl] [encoding] 113 # feed <name> <feedurl> [basesiteurl] [encoding]
114 feedx "antoine.studio" "https://antoine.studio/rss.xml" 114 feedx "antoine.studio" "https://antoine.studio/rss.xml"
115 feedx "apenwarr" "https://apenwarr.ca/log/rss.php" 115 feedx "apenwarr" "https://apenwarr.ca/log/rss.php"
116 feedx "bert.org" "https://bert.org/feed.xml" 116 feedx "bert.org" "https://bert.org/feed.xml"
117 feedx "Ben Hoyt's technical writing" "https://benhoyt.com/writings/rss.xml" 117 feedx "Ben Hoyt's technical writing" "https://benhoyt.com/writings/rss.xml"
118 feedx "Buried Treasure" "https://buried-treasure.org/feed/" 118 feedx "Buried Treasure" "https://buried-treasure.org/feed/"
119 119
120 feedx "catapult" "https://catapult.co/rss" 120 feedx "catapult" "https://catapult.co/rss"
121 feedx "codex99" "http://codex99.com" 121 feedx "codex99" "http://codex99.com"
122 feedx "compudanzas log" "https://compudanzas.net/atom.xml" 122 feedx "compudanzas log" "https://compudanzas.net/atom.xml"
123 feedx "DustyCloud Brainstorms" "http://dustycloud.org/blog/index.xml" 123 feedx "DustyCloud Brainstorms" "http://dustycloud.org/blog/index.xml"
124 feedx "Earthly" "https://earthly.dev/blog/feed.xml" 124 feedx "Earthly" "https://earthly.dev/blog/feed.xml"
125 feedx "Ella Hoeppner" "https://www.ellahoeppner.com/blog.rss" 125 feedx "Ella Hoeppner" "https://www.ellahoeppner.com/blog.rss"
126 feedx "Esoteric Codes" "https://esoteric.codes/rss" 126 feedx "Esoteric Codes" "https://esoteric.codes/rss"
127 feedx "Grimgrains" "https://grimgrains.com/links/rss.xml" 127 feedx "Grimgrains" "https://grimgrains.com/links/rss.xml"
128 feedx "hisaac.net" "https://hisaac.net/feed.xml" 128 feedx "hisaac.net" "https://hisaac.net/feed.xml"
129 feedx "Hundred Rabbits" "http://100r.co/links/rss.xml" 129 feedx "Hundred Rabbits" "http://100r.co/links/rss.xml"
130 feedx "Hypercritical" "https://hypercritical.co/feeds/main" 130 feedx "Hypercritical" "https://hypercritical.co/feeds/main"
131 feedx "joshua stein" "https://jcs.org/rss" 131 feedx "joshua stein" "https://jcs.org/rss"
132 feedx "journal.stuffwithstuff.com" "http://journal.stuffwithstuff.com/rss.xml" 132 feedx "journal.stuffwithstuff.com" "http://journal.stuffwithstuff.com/rss.xml"
133 feedx "Julia Evans" "https://jvns.ca/atom.xml" 133 feedx "Julia Evans" "https://jvns.ca/atom.xml"
134 feedx "Kicks Condor [RSS]" "https://www.kickscondor.com/rss.xml" 134 feedx "Kicks Condor [RSS]" "https://www.kickscondor.com/rss.xml"
135 feedx "kottke.org" "http://feeds.kottke.org/main" 135 feedx "kottke.org" "http://feeds.kottke.org/main"
136 feedx "literary monster" "https://literary.monster/index.xml" 136 feedx "literary monster" "https://literary.monster/index.xml"
137 feedx "Linus Lee" "https://thesephist.com/index.xml" 137 feedx "Linus Lee" "https://thesephist.com/index.xml"
138 feedx "Meg Conley" "https://www.megconley.com/rss/" 138 feedx "Meg Conley" "https://www.megconley.com/rss/"
139 feedx "minimalist baker" "https://minimalistbaker.com/feed/" 139 feedx "minimalist baker" "https://minimalistbaker.com/feed/"
140 feedx "llimllib notes" "https://notes.billmill.org/atom.xml" 140 feedx "llimllib notes" "https://notes.billmill.org/atom.xml"
141 feedx "petermolnar.net" "https://petermolnar.net/feed/" 141 feedx "petermolnar.net" "https://petermolnar.net/feed/"
142 feedx "Piper Haywood" "https://piperhaywood.com/feed/" 142 feedx "Piper Haywood" "https://piperhaywood.com/feed/"
143 feedx "Rainbow Plant Life" "https://rainbowplantlife.com/feed/" 143 feedx "Rainbow Plant Life" "https://rainbowplantlife.com/feed/"
144 feedx "Robin Rendle" "https://robinrendle.com/feed.xml" 144 feedx "Robin Rendle" "https://robinrendle.com/feed.xml"
145 feedx "sogrady" "https://sogrady.org/feed/" 145 feedx "sogrady" "https://sogrady.org/feed/"
146 feedx "Sibylla Bostoniensis" "https://siderea.dreamwidth.org/data/rss" 146 feedx "Sibylla Bostoniensis" "https://siderea.dreamwidth.org/data/rss"
147 feedx "The only good system is a sound system" "https://ftrv.se/posts.atom" 147 feedx "The only good system is a sound system" "https://ftrv.se/posts.atom"
148 feedx "weaver.skepti.ch" "https://weaver.skepti.ch/atom.xml" 148 feedx "weaver.skepti.ch" "https://weaver.skepti.ch/atom.xml"
149 feedx "whippet" "https://thewhippet.org/archive/rss/" 149 feedx "whippet" "https://thewhippet.org/archive/rss/"
150 feedx "zep [Lexaloffle Blog Feed]" "https://www.lexaloffle.com/bbs/feed.php?uid=1" 150 feedx "zep [Lexaloffle Blog Feed]" "https://www.lexaloffle.com/bbs/feed.php?uid=1"
151} 151}
152 152
153feeds_dozens() { 153feeds_dozens() {
154 feedx "Dozens and Dragons" "https://dozensanddragons.neocities.org/rss.xml" "https://dozensanddragons.neocities.org/" "" 154 feedx "Dozens and Dragons" "https://dozensanddragons.neocities.org/rss.xml" "https://dozensanddragons.neocities.org/" ""
155 feedx "dozens: Society For Putting Things On Top Of Other Things" "https://society.neocities.org/rss.xml" "https://society.neocities.org/" "" 155 feedx "dozens: Society For Putting Things On Top Of Other Things" "https://society.neocities.org/rss.xml" "https://society.neocities.org/" ""
156 feedx "dozens: vgnfdblg" "https://supervegan.neocities.org/feed.xml" "https://supervegan.neocities.org/" "" 156 feedx "dozens: vgnfdblg" "https://supervegan.neocities.org/feed.xml" "https://supervegan.neocities.org/" ""
157 feedx "dozens: backgammon" "http://tilde.town/~dozens/backgammon/rss.xml" "http://tilde.town/~dozens/backgammon/" "" 157 feedx "dozens: backgammon" "http://tilde.town/~dozens/backgammon/rss.xml" "http://tilde.town/~dozens/backgammon/" ""
158 feedx "dozens: It's Pro Toad and Superb Owl" "https://git.tilde.town/dozens/protoadandsuperbowl/raw/branch/master/feed.xml" "https://git.tilde.town/dozens/protoadandsuperbowl/" "" 158 feedx "dozens: It's Pro Toad and Superb Owl" "https://git.tilde.town/dozens/protoadandsuperbowl/raw/branch/master/feed.xml" "https://git.tilde.town/dozens/protoadandsuperbowl/" ""
159 feedx "dozens dreams" "https://tilde.team/~dozens/dreams/rss.xml" "https://tilde.team/~dozens/dreams/" "" 159 feedx "dozens dreams" "https://tilde.team/~dozens/dreams/rss.xml" "https://tilde.team/~dozens/dreams/" ""
160 feedx "dozens: write.as" "https://write.tildeverse.org/dozens/feed/" "https://write.tildeverse.org/dozens/" "" 160 feedx "dozens: write.as" "https://write.tildeverse.org/dozens/feed/" "https://write.tildeverse.org/dozens/" ""
161 feedx "dozens css art" "http://tilde.town/~dozens/cssart/feed.xml" "http://tilde.town/~dozens/cssart/" "" 161 feedx "dozens css art" "http://tilde.town/~dozens/cssart/feed.xml" "http://tilde.town/~dozens/cssart/" ""
162 feedx "Cleric+Thief: episodes" "https://blog.miso.town/atom?url=http://tilde.town/~dozens/clericthief/" "https://tilde.town/~dozens/clericthief/index.html" 162 feedx "Cleric+Thief: episodes" "https://blog.miso.town/atom?url=http://tilde.town/~dozens/clericthief/" "https://tilde.town/~dozens/clericthief/index.html"
163 feedx "Cleric+Thief: journal" "https://journal.miso.town/atom?url=http://tilde.town/~dozens/clericthief/journal.html" "https://tilde.town/~dozens/clericthief/journal.html" 163 feedx "Cleric+Thief: journal" "https://journal.miso.town/atom?url=http://tilde.town/~dozens/clericthief/journal.html" "https://tilde.town/~dozens/clericthief/journal.html"
164} 164}
165 165
166feeds_friends() { 166feeds_friends() {
167 feedx "kindrobot" "https://tilde.town/~kindrobot/index.xml" 167 feedx "kindrobot" "https://tilde.town/~kindrobot/index.xml"
168 feedx "citrons" "https://citrons.xyz/a/journal/rss.xml" "https://citrons.xyz/" 168 feedx "citrons" "https://citrons.xyz/a/journal/rss.xml" "https://citrons.xyz/"
169 feedx "elly.town" "https://elly.town/feed.xml" "https://elly.town/" 169 feedx "elly.town" "https://elly.town/feed.xml" "https://elly.town/"
170 feeds_dozens 170 feeds_dozens
171 feedx "kirch" "https://jkirchartz.com/feed.xml" "https://jkirchartz.com/" 171 feedx "kirch" "https://jkirchartz.com/feed.xml" "https://jkirchartz.com/"
172 feedx "lipu pi jan Niko" "https://tilde.town/~nihilazo/index.xml" "https://tilde.town/~nihilazo/" "" 172 feedx "lipu pi jan Niko" "https://tilde.town/~nihilazo/index.xml" "https://tilde.town/~nihilazo/" ""
173 feedx "chrismanbrown.gitlab.io (dozens)" "https://chrismanbrown.gitlab.io/rss.xml" "https://chrismanbrown.gitlab.io/" "" 173 feedx "chrismanbrown.gitlab.io (dozens)" "https://chrismanbrown.gitlab.io/rss.xml" "https://chrismanbrown.gitlab.io/" ""
174 feedx "Benjamin Wil" "https://benjaminwil.info/feed.xml" "https://benjaminwil.info/" "" 174 feedx "Benjamin Wil" "https://benjaminwil.info/feed.xml" "https://benjaminwil.info/" ""
175 feedx "(lambda (x) (create x))" "http://lambdacreate.com/static/feed.rss" "http://lambdacreate.com/" "" 175 feedx "(lambda (x) (create x))" "http://lambdacreate.com/static/feed.rss" "http://lambdacreate.com/" ""
176 feedx "m455.casa" "https://m455.casa/feed.rss" "https://m455.casa/" "" 176 feedx "m455.casa" "https://m455.casa/feed.rss" "https://m455.casa/" ""
177 feedx "Oatmeal" "https://eli.li/feed.rss" "https://eli.li/" "" 177 feedx "Oatmeal" "https://eli.li/feed.rss" "https://eli.li/" ""
178 feedx "RSRSSS" "https://envs.net/~lucidiot/rsrsss/feed.xml" "https://envs.net/~lucidiot/rsrsss/" "" 178 feedx "RSRSSS" "https://envs.net/~lucidiot/rsrsss/feed.xml" "https://envs.net/~lucidiot/rsrsss/" ""
179 feedx "Tomasino Blog" "https://blog.tomasino.org/index.xml" "https://blog.tomasino.org/" "" 179 feedx "Tomasino Blog" "https://blog.tomasino.org/index.xml" "https://blog.tomasino.org/" ""
180 feedx "Tomasino Labs" "https://labs.tomasino.org/index.xml" "https://labs.tomasino.org/" "" 180 feedx "Tomasino Labs" "https://labs.tomasino.org/index.xml" "https://labs.tomasino.org/" ""
181 feedx "Will's Blog" "https://wflewis.com/feed.xml" "https://wflewis.com/" "" 181 feedx "Will's Blog" "https://wflewis.com/feed.xml" "https://wflewis.com/" ""
182 feedx "William Vaughn" "https://willvaughn.org/index.xml" "https://willvaughn.org/" 182 feedx "William Vaughn" "https://willvaughn.org/index.xml" "https://willvaughn.org/"
183 feedx "Rick Carlino's Blog" "https://rickcarlino.com/rss/feed.rss" "https://rickcarlino.com/rss/" "" 183 feedx "Rick Carlino's Blog" "https://rickcarlino.com/rss/feed.rss" "https://rickcarlino.com/rss/" ""
184 feedx "Causal Agency" "https://text.causal.agency/feed.atom" "https://text.causal.agency/" "" 184 feedx "Causal Agency" "https://text.causal.agency/feed.atom" "https://text.causal.agency/" ""
185 feedx "Benoit Joly" "https://blog.benoitj.ca/posts/index.xml" "https://blog.benoitj.ca/posts/" "" 185 feedx "Benoit Joly" "https://blog.benoitj.ca/posts/index.xml" "https://blog.benoitj.ca/posts/" ""
186 feedx "linkbudz" "https://linkbudz.m455.casa/feed.rss" "https://linkbudz.m455.casa/" "" 186 feedx "linkbudz" "https://linkbudz.m455.casa/feed.rss" "https://linkbudz.m455.casa/" ""
187 feedx "Alex Schroeder" "https://alexschroeder.ch/wiki/feed/full/" "https://alexschroeder.ch/" "" 187 feedx "Alex Schroeder" "https://alexschroeder.ch/wiki/feed/full/" "https://alexschroeder.ch/" ""
188 feedx "Björn Wärmedal" "https://warmedal.se/~bjorn/atom.xml" "https://warmedal.se/~bjorn/" "" 188 feedx "Björn Wärmedal" "https://warmedal.se/~bjorn/atom.xml" "https://warmedal.se/~bjorn/" ""
189 feedx "a rickety bridge of impossible crossing" "https://bluelander.bearblog.dev/feed/" "https://bluelander.bearblog.dev/" "" 189 feedx "a rickety bridge of impossible crossing" "https://bluelander.bearblog.dev/feed/" "https://bluelander.bearblog.dev/" ""
190 feedx "javapool updates" "https://tilde.town/~m455/javapool.rss" "" "" 190 feedx "javapool updates" "https://tilde.town/~m455/javapool.rss" "" ""
191 feedx "coolguy.website" "https://coolguy.website/rss/index.xml" "https://coolguy.website/" 191 feedx "coolguy.website" "https://coolguy.website/rss/index.xml" "https://coolguy.website/"
192 feedx "brainshit" "https://brainshit.fr/rss" "https://brainshit.fr" 192 feedx "brainshit" "https://brainshit.fr/rss" "https://brainshit.fr"
193 feedx 'Idiomdrottning' 'https://idiomdrottning.org/blog' "https://idiomdrottning.org" 193 feedx 'Idiomdrottning' 'https://idiomdrottning.org/blog' "https://idiomdrottning.org"
194 feedx "Rick Carlino's Blog" "https://rickcarlino.com/rss/feed.rss" 194 feedx "Rick Carlino's Blog" "https://rickcarlino.com/rss/feed.rss"
195 feedx "Rick Carlino's Recent News Feed" "https://news.rickcarlino.com/rss.rss" 195 feedx "Rick Carlino's Recent News Feed" "https://news.rickcarlino.com/rss.rss"
196} 196}
197 197
198feeds_people() { 198feeds_people() {
199 feedx "Andrew's Blog" "https://sheep.horse/rss.xml" 199 feedx "Maggie Appleton" "https://maggieappleton.com/rss.xml"
200 feedx "Christian Tietze" "https://christiantietze.de/feed.atom" 200 feedx "Andrew's Blog" "https://sheep.horse/rss.xml"
201 feedx "Tony Zorman" "https://tony-zorman.com/atom.xml" 201 feedx "Christian Tietze" "https://christiantietze.de/feed.atom"
202 feedx "Neon Pajamas" "https://www.neonpajamas.com/blog?format=rss" 202 feedx "Tony Zorman" "https://tony-zorman.com/atom.xml"
203 feedx "garethrees" "https://garethrees.org/index_rss.xml" 203 feedx "Neon Pajamas" "https://www.neonpajamas.com/blog?format=rss"
204 feedx "ASCII Artist" "https://asciiartist.com/feed/" "https://asciiartist.com/" 204 feedx "garethrees" "https://garethrees.org/index_rss.xml"
205 feedx "Lonnie Johnson" "http://lonniejohnson.com/feed/" "http://lonniejohnson.com/" 205 feedx "ASCII Artist" "https://asciiartist.com/feed/" "https://asciiartist.com/"
206 feedx "Tab Completion" "https://xanthir.com/blog/atom/" "https://xanthir.com/blog/" 206 feedx "Lonnie Johnson" "http://lonniejohnson.com/feed/" "http://lonniejohnson.com/"
207 feedx "zserge" "https://zserge.com/rss.xml" "https://zserge.com/" 207 feedx "Tab Completion" "https://xanthir.com/blog/atom/" "https://xanthir.com/blog/"
208 feedx "nerdypepper's μblog" "https://peppe.rs/index.xml" "https://peppe.rs/" 208 feedx "zserge" "https://zserge.com/rss.xml" "https://zserge.com/"
209 feedx "unix sheikh" "https://unixsheikh.com/feed.rss" "https://unixsheikh.com/" 209 feedx "nerdypepper's μblog" "https://peppe.rs/index.xml" "https://peppe.rs/"
210 feedx "artemis.sh" "https://artemis.sh/feed.xml" "https://artemis.sh/" 210 feedx "unix sheikh" "https://unixsheikh.com/feed.rss" "https://unixsheikh.com/"
211 feedx "ajroach" "http://ajroach42.com/feed.xml" "http://ajroach42.com/" "" 211 feedx "artemis.sh" "https://artemis.sh/feed.xml" "https://artemis.sh/"
212 feedx "rachelbythebay" "https://rachelbythebay.com/w/atom.xml" "https://rachelbythebay.com/" "" 212 feedx "ajroach" "http://ajroach42.com/feed.xml" "http://ajroach42.com/" ""
213 feedx "Codemadness" "https://codemadness.org/atom.xml" 213 feedx "rachelbythebay" "https://rachelbythebay.com/w/atom.xml" "https://rachelbythebay.com/" ""
214 feedx "Ben Hoyt's technical writing" "https://benhoyt.com/writings/rss.xml" "https://benhoyt.com/writings/" 214 feedx "Codemadness" "https://codemadness.org/atom.xml"
215 feedx "Tom Van Winkle's Return to Gaming" "https://lichvanwinkle.blogspot.com/feeds/posts/default" "https://lichvanwinkle.blogspot.com/" 215 feedx "Ben Hoyt's technical writing" "https://benhoyt.com/writings/rss.xml" "https://benhoyt.com/writings/"
216 feedx "Chris Wellons" "https://nullprogram.com/feed/" "https://nullprogram.com/" 216 feedx "Tom Van Winkle's Return to Gaming" "https://lichvanwinkle.blogspot.com/feeds/posts/default" "https://lichvanwinkle.blogspot.com/"
217 feedx "maya.land" "https://maya.land/feed.xml" "https://maya.land/" 217 feedx "Chris Wellons" "https://nullprogram.com/feed/" "https://nullprogram.com/"
218 feedx "Steve Losh" "https://stevelosh.com/rss.xml" "https://stevelosh.com/" 218 feedx "maya.land" "https://maya.land/feed.xml" "https://maya.land/"
219 feedx "Atomized (Ian Eure)" "http://atomized.org/rss.xml" "http://atomized.org/" 219 feedx "Steve Losh" "https://stevelosh.com/rss.xml" "https://stevelosh.com/"
220 feedx "Atomized (Ian Eure)" "http://atomized.org/rss.xml" "http://atomized.org/"
220} 221}
221 222
222feeds_writers_webring() { 223feeds_writers_webring() {
223 # since heroku's free tier is going away, I'm subscribing to these from 224 # since heroku's free tier is going away, I'm subscribing to these from
224 # ring.acdw.net. 225 # ring.acdw.net.
225 feedx "Daily Scream" "https://scream.today/daily/feed/" "https://scream.today/daily/" 226 feedx "Daily Scream" "https://scream.today/daily/feed/" "https://scream.today/daily/"
226 feedx "ajes" "https://write.as/ajes/feed/" "https://write.as/ajes/" 227 feedx "ajes" "https://write.as/ajes/feed/" "https://write.as/ajes/"
227 feedx "Alex R Oliver" "http://alexoliver.beecroftbooks.com/feed/" "http://alexoliver.beecroftbooks.com/" 228 feedx "Alex R Oliver" "http://alexoliver.beecroftbooks.com/feed/" "http://alexoliver.beecroftbooks.com/"
228 feedx "Synchronicity & Metaverse" "https://jmmsynch.blogspot.com/feeds/posts/default" "https://jmmsynch.blogspot.com/" 229 feedx "Synchronicity & Metaverse" "https://jmmsynch.blogspot.com/feeds/posts/default" "https://jmmsynch.blogspot.com/"
229 feedx "GLOWING SURF" "https://www.glowing.surf/feed/" "https://www.glowing.surf/" 230 feedx "GLOWING SURF" "https://www.glowing.surf/feed/" "https://www.glowing.surf/"
230 feedx "Duth Olec's Cuckoo Cosmos" "https://cloudycuckoocosmos.com/feed/" "https://cloudycuckoocosmos.com/" 231 feedx "Duth Olec's Cuckoo Cosmos" "https://cloudycuckoocosmos.com/feed/" "https://cloudycuckoocosmos.com/"
231} 232}
232 233
233feeds_news() { 234feeds_news() {
234 feedx "n-gate" "http://n-gate.com/index.rss" "http://n-gate.com/" 235 feedx "n-gate" "http://n-gate.com/index.rss" "http://n-gate.com/"
235 feedx "Tedium" "https://feed.tedium.co/" "https://tedium.co/" 236 feedx "Tedium" "https://feed.tedium.co/" "https://tedium.co/"
236 feedx "lobste.rs" "https://lobste.rs/rss" "https://lobste.rs/" "" 237 feedx "lobste.rs" "https://lobste.rs/rss" "https://lobste.rs/" ""
237 feedx "Hacker News" "https://news.ycombinator.com/rss" "https://news.ycombinator.com/" "" 238 feedx "Hacker News" "https://news.ycombinator.com/rss" "https://news.ycombinator.com/" ""
238 feedx "tilde news" "https://tilde.news/rss" "https://tilde.news/" "" 239 feedx "tilde news" "https://tilde.news/rss" "https://tilde.news/" ""
239 feedx "Tildes Atom feed" "https://tildes.net/topics.atom" "https://tildes.net/" "" 240 feedx "Tildes Atom feed" "https://tildes.net/topics.atom" "https://tildes.net/" ""
240 feedx "NPR" "https://feeds.npr.org/1001/rss.xml" "https://text.npr.org/" "" 241 feedx "NPR" "https://feeds.npr.org/1001/rss.xml" "https://text.npr.org/" ""
241 feeds_local 242 feeds_local
242} 243}
243 244
244feeds_local() { 245feeds_local() {
245 feedx "Louisiana Considered" "https://omny.fm/shows/louisiana-considered/playlists/podcast.rss" "https://www.wrkf.org/show/louisiana-considered" 246 feedx "Louisiana Considered" "https://omny.fm/shows/louisiana-considered/playlists/podcast.rss" "https://www.wrkf.org/show/louisiana-considered"
246} 247}
247 248
248feeds_smolweb() { 249feeds_smolweb() {
249 feedx "tilde.town blog" "https://tilde.town/blog.xml" "https://tilde.town/" 250 feedx "tilde.town blog" "https://tilde.town/blog.xml" "https://tilde.town/"
250 feedx "~town friday postcard" "https://tilde.town/~lucidiot/fridaypostcard.xml" "" 251 feedx "~town friday postcard" "https://tilde.town/~lucidiot/fridaypostcard.xml" ""
251 feedx "Cosmic Voyage" "https://cosmic.voyage/rss.xml" "https://cosmic.voyage/" "" 252 feedx "Cosmic Voyage" "https://cosmic.voyage/rss.xml" "https://cosmic.voyage/" ""
252 feedx "plan.cat" "https://plan.cat/rss" "https://plan.cat/" "" 253 feedx "plan.cat" "https://plan.cat/rss" "https://plan.cat/" ""
253 feedx "The Plain Text Project" "https://plaintextproject.online/feed.xml" "https://plaintextproject.online/" 254 feedx "The Plain Text Project" "https://plaintextproject.online/feed.xml" "https://plaintextproject.online/"
254} 255}
255 256
256feeds_comics() { 257feeds_comics() {
257 feedx "Gideon & Bartholomew" "https://www.iamhoneydill.com/gideon-bartholomew?format=rss" "https://www.iamhoneydill.com/gideon-bartholomew/" 258 feedx "Gideon & Bartholomew" "https://www.iamhoneydill.com/gideon-bartholomew?format=rss" "https://www.iamhoneydill.com/gideon-bartholomew/"
258 feedx "webcomic name" "https://webcomicname.com/rss" "https://webcomicname.com/" 259 feedx "webcomic name" "https://webcomicname.com/rss" "https://webcomicname.com/"
259 feedx "Sarah's Scribbles" "https://sarahcandersen.com/rss" "https://sarahcandersen.com/" 260 feedx "Sarah's Scribbles" "https://sarahcandersen.com/rss" "https://sarahcandersen.com/"
260 feedx "Foxes in Love" "https://foxes-in-love.tumblr.com/rss" "https://foxes-in-love.tumblr.com/" 261 feedx "Foxes in Love" "https://foxes-in-love.tumblr.com/rss" "https://foxes-in-love.tumblr.com/"
261 feedx "Elder Cactus" "https://www.eldercactus.com/rss.xml" "https://www.eldercactus.com/" 262 feedx "Elder Cactus" "https://www.eldercactus.com/rss.xml" "https://www.eldercactus.com/"
262 feedx "COOELST CAT COMCIX" "https://coolmxmuffin.tumblr.com/rss" "https://coolmxmuffin.tumblr.com/" 263 feedx "COOELST CAT COMCIX" "https://coolmxmuffin.tumblr.com/rss" "https://coolmxmuffin.tumblr.com/"
263 feedx "Cat and Girl" "https://catandgirl.com/feed/" "https://catandgirl.com/" "" 264 feedx "Cat and Girl" "https://catandgirl.com/feed/" "https://catandgirl.com/" ""
264 feedx "Dinosaur Comics!" "https://qwantz.com/rssfeed.php" "https://qwantz.com/" "" 265 feedx "Dinosaur Comics!" "https://qwantz.com/rssfeed.php" "https://qwantz.com/" ""
265 feedx "False Knees" "https://falseknees.tumblr.com/rss" "https://falseknees.tumblr.com/" "" 266 feedx "False Knees" "https://falseknees.tumblr.com/rss" "https://falseknees.tumblr.com/" ""
266 feedx "Saturday Morning Breakfast Cereal" "https://www.smbc-comics.com/comic/rss" "https://www.smbc-comics.com/" "" 267 feedx "Saturday Morning Breakfast Cereal" "https://www.smbc-comics.com/comic/rss" "https://www.smbc-comics.com/" ""
267 feedx "xkcd" "https://xkcd.com/atom.xml" "https://xkcd.com/" "" 268 feedx "xkcd" "https://xkcd.com/atom.xml" "https://xkcd.com/" ""
268 feedx "Miniature Calendar" "https://miniature-calendar.com/feed/" "https://miniature-calendar.com/" 269 feedx "Miniature Calendar" "https://miniature-calendar.com/feed/" "https://miniature-calendar.com/"
269} 270}
270 271
271feeds_misc() { 272feeds_misc() {
272 feedx "Street Art Utopia" "https://streetartutopia.com/feed/" "https://streetartutopia.com/" 273 feedx "Street Art Utopia" "https://streetartutopia.com/feed/" "https://streetartutopia.com/"
273 feedx "APOD" "https://apod.nasa.gov/apod.rss" "https://apod.nasa.gov/" 274 feedx "APOD" "https://apod.nasa.gov/apod.rss" "https://apod.nasa.gov/"
274 feedx "MetaFilter" "https://feeds.feedburner.com/Metafilter" "https://www.metafilter.com/" 275 feedx "MetaFilter" "https://feeds.feedburner.com/Metafilter" "https://www.metafilter.com/"
275 feedx "Word of the Day" "https://www.merriam-webster.com/wotd/feed/rss2" "https://www.merriam-webster.com/word-of-the-day/" 276 feedx "Word of the Day" "https://www.merriam-webster.com/wotd/feed/rss2" "https://www.merriam-webster.com/word-of-the-day/"
276 feedx "Crystalverse" "https://crystalverse.com/feed/" "https://crystalverse.com/" "" 277 feedx "Crystalverse" "https://crystalverse.com/feed/" "https://crystalverse.com/" ""
277 feedx "Hetzner" "https://status.hetzner.com/en.atom" "https://status.hetzner.com/" "" 278 feedx "Hetzner" "https://status.hetzner.com/en.atom" "https://status.hetzner.com/" ""
278 feedx "LOW-TECH MAGAZINE" "https://feeds2.feedburner.com/typepad/krisdedecker/lowtechmagazineenglish" "https://www.lowtechmagazine.com/" "" 279 feedx "LOW-TECH MAGAZINE" "https://feeds2.feedburner.com/typepad/krisdedecker/lowtechmagazineenglish" "https://www.lowtechmagazine.com/" ""
279 feedx "500-mile email" "https://500mile.email/feed.xml" "https://500mile.email/" 280 feedx "500-mile email" "https://500mile.email/feed.xml" "https://500mile.email/"
280 feedx "computers are bad" "https://computer.rip/rss.xml" "https://computer.rip/" 281 feedx "computers are bad" "https://computer.rip/rss.xml" "https://computer.rip/"
281 feedx "Eggs Unlimited (5)" "https://eggs.call-cc.org/rss-5.xml" 282 feedx "Eggs Unlimited (5)" "https://eggs.call-cc.org/rss-5.xml"
282} 283}
283 284
284feeds_sotw() { 285feeds_sotw() {
285 feedx "noa" "http://noa.gaiwan.org/sotw/feed.xml" "http://noa.gaiwan.org/" 286 feedx "noa" "http://noa.gaiwan.org/sotw/feed.xml" "http://noa.gaiwan.org/"
286 feedx "agafnd" "https://tilde.town/~agafnd/sotw/sotw.xml" "https://tilde.town/~agafnd/sotw/" 287 feedx "agafnd" "https://tilde.town/~agafnd/sotw/sotw.xml" "https://tilde.town/~agafnd/sotw/"
287} 288}
288 289
289feeds_me() { 290feeds_me() {
290 feedx "active listening" "https://junk.acdw.net/active_listening/feed.xml" "https://junk.acdw.net/active_listening/" 291 feedx "active listening" "https://junk.acdw.net/active_listening/feed.xml" "https://junk.acdw.net/active_listening/"
291 feedx "acdw.casa" "https://acdw.casa/feed.xml" 292 feedx "acdw.casa" "https://acdw.casa/feed.xml"
292} 293}
293 294
294### Feed helpers ################################################ 295### Feed helpers ################################################
295 296
296feedx() { # feedx [OPTIONS] FEED_ARGS... 297feedx() { # feedx [OPTIONS] FEED_ARGS...
297 ## Wrapper around `feed' to allow for more metadata 298 ## Wrapper around `feed' to allow for more metadata
298 while getopts t: opt; do 299 while getopts t: opt; do
299 case "$opt" in 300 case "$opt" in
300 t) tags="$OPTARG" ;; # tags should be a comma-separated list 301 t) tags="$OPTARG" ;; # tags should be a comma-separated list
301 *) ;; 302 *) ;;
302 esac 303 esac
303 done 304 done
304 shift $((OPTIND - 1)) 305 shift $((OPTIND - 1))
305 # `feed' (well, really `_feed') expects only 4 arguments, so we can pass 306 # `feed' (well, really `_feed') expects only 4 arguments, so we can pass
306 # more after that. 307 # more after that.
307 feed "$1" "$2" "$3" "$4" \ 308 feed "$1" "$2" "$3" "$4" \
308 "$tags" 309 "$tags"
309} 310}
310 311
311yt_feed() { # yt_feed TITLE CHANNEL_ID 312yt_feed() { # yt_feed TITLE CHANNEL_ID
312 feedx -t yt "$1 [yt]" \ 313 feedx -t yt "$1 [yt]" \
313 "https://www.youtube.com/feeds/videos.xml?channel_id=$2" \ 314 "https://www.youtube.com/feeds/videos.xml?channel_id=$2" \
314 "https://youtube.com/channel/$2" 315 "https://youtube.com/channel/$2"
315} 316}
316 317
317### Remove feeds ################################################ 318### Remove feeds ################################################
318 319
319unsubscribe_feeds() { 320unsubscribe_feeds() {
320 feedx "r/emacs" "https://i.reddit.com/r/emacs.rss" "https://i.reddit.com/r/emacs" "" 321 feedx "r/emacs" "https://i.reddit.com/r/emacs.rss" "https://i.reddit.com/r/emacs" ""
321 yt_feed "Joshua Weissman" "UChBEbMKI1eCcejTtmI32UEw" 322 yt_feed "Joshua Weissman" "UChBEbMKI1eCcejTtmI32UEw"
322 yt_feed "Gavin Freeborn" "UCJetJ7nDNLlEzDLXv7KIo0w" 323 yt_feed "Gavin Freeborn" "UCJetJ7nDNLlEzDLXv7KIo0w"
323 yt_feed "Lex Fridman" "UCSHZKyawb77ixDdsGog4iWA" 324 yt_feed "Lex Fridman" "UCSHZKyawb77ixDdsGog4iWA"
324 feedx "r/Worldnews" "https://www.reddit.com/r/worldnews/.rss" 325 feedx "r/Worldnews" "https://www.reddit.com/r/worldnews/.rss"
325 feedx "Web3 is going just great" "https://web3isgoinggreat.com/feed.xml" "https://web3isgoinggreat.com/" 326 feedx "Web3 is going just great" "https://web3isgoinggreat.com/feed.xml" "https://web3isgoinggreat.com/"
326 feedx "uxn" "https://git.sr.ht/~rabbits/uxn/log/main/rss.xml" 327 feedx "uxn" "https://git.sr.ht/~rabbits/uxn/log/main/rss.xml"
327 feedx "uxnfth" "https://git.sr.ht/~binarycat/uxnfth/log/front/rss.xml" 328 feedx "uxnfth" "https://git.sr.ht/~binarycat/uxnfth/log/front/rss.xml"
328 feedx "worgle" "https://git.sr.ht/~pbatch/worgle/log/master/rss.xml" 329 feedx "worgle" "https://git.sr.ht/~pbatch/worgle/log/master/rss.xml"
329 yt_feed "Jelle's Marble Runs" "UCYJdpnjuSWVOLgGT9fIzL0g" 330 yt_feed "Jelle's Marble Runs" "UCYJdpnjuSWVOLgGT9fIzL0g"
330 yt_feed "LOOK MUM NO COMPUTER" "UCafxR2HWJRmMfSdyZXvZMTw" 331 yt_feed "LOOK MUM NO COMPUTER" "UCafxR2HWJRmMfSdyZXvZMTw"
331 yt_feed "Ska Tune Network" "UCji2l5wcs6GoYJY1GgG_slQ" 332 yt_feed "Ska Tune Network" "UCji2l5wcs6GoYJY1GgG_slQ"
332 yt_feed "Thought Slime" "UCrr7y8rEXb7_RiVniwvzk9w" 333 yt_feed "Thought Slime" "UCrr7y8rEXb7_RiVniwvzk9w"
333 yt_feed "STRANGE ÆONS" "UCrq3JYirgV-BLluzTF6X_7A" 334 yt_feed "STRANGE ÆONS" "UCrq3JYirgV-BLluzTF6X_7A"
334 yt_feed "NileRed" "UCFhXFikryT4aFcLkLw2LBLA" 335 yt_feed "NileRed" "UCFhXFikryT4aFcLkLw2LBLA"
335 yt_feed "Cathode Ray Dude" "UCXnNibvR_YIdyPs8PZIBoEw" 336 yt_feed "Cathode Ray Dude" "UCXnNibvR_YIdyPs8PZIBoEw"
336 feedx "Kill James Bond!" "https://feed.podbean.com/killjamesbondpod/feed.xml" 337 feedx "Kill James Bond!" "https://feed.podbean.com/killjamesbondpod/feed.xml"
337 feedx "Jo's Boys" "https://anchor.fm/s/840fb444/podcast/rss" 338 feedx "Jo's Boys" "https://anchor.fm/s/840fb444/podcast/rss"
338 feedx "Boonta Vista" "http://feeds.soundcloud.com/users/soundcloud:users:307723090/sounds.rss" 339 feedx "Boonta Vista" "http://feeds.soundcloud.com/users/soundcloud:users:307723090/sounds.rss"
339 feedx "Yesterday's Print" "https://yesterdaysprint.tumblr.com/rss" 340 feedx "Yesterday's Print" "https://yesterdaysprint.tumblr.com/rss"
340 feedx "Threatening Music Notation" "https://nitter.kavin.rocks/ThreatNotation/rss" 341 feedx "Threatening Music Notation" "https://nitter.kavin.rocks/ThreatNotation/rss"
341 feedx "arstechnica features" "https://feeds.arstechnica.com/arstechnica/features" 342 feedx "arstechnica features" "https://feeds.arstechnica.com/arstechnica/features"
342 feedx "ars ludi" "https://arsludi.lamemage.com/index.php/feed/" 343 feedx "ars ludi" "https://arsludi.lamemage.com/index.php/feed/"
343 feedx "Carlos Carrasco" "https://carloscarrasco.com/index.xml" 344 feedx "Carlos Carrasco" "https://carloscarrasco.com/index.xml"
344 feedx "dracula daily" "https://draculadaily.substack.com/feed" 345 feedx "dracula daily" "https://draculadaily.substack.com/feed"
345 feedx "DRIVE™: The SciFi Comic, by Dave Kellett" "http://cdn.drivecomic.com/rss.xml" 346 feedx "DRIVE™: The SciFi Comic, by Dave Kellett" "http://cdn.drivecomic.com/rss.xml"
346 feedx "EcoClipper" "https://ecoclipper.org/feed/" 347 feedx "EcoClipper" "https://ecoclipper.org/feed/"
347 feedx "esolangs wiki" "https://esolangs.org/w/api.php?hidebots=1&urlversion=1&days=7&limit=50&action=feedrecentchanges&feedformat=atom" 348 feedx "esolangs wiki" "https://esolangs.org/w/api.php?hidebots=1&urlversion=1&days=7&limit=50&action=feedrecentchanges&feedformat=atom"
348 feedx "Flashing Palely in the Margins" "https://www.inthemargins.ca/feed.rss" 349 feedx "Flashing Palely in the Margins" "https://www.inthemargins.ca/feed.rss"
349 feedx "Gamestudies.org" "http://gamestudies.org/rss.php" 350 feedx "Gamestudies.org" "http://gamestudies.org/rss.php"
350 feedx "gbadev.org" "https://rss.gbadev.org/feed.php" 351 feedx "gbadev.org" "https://rss.gbadev.org/feed.php"
351 feedx "handmade.network" "https://handmade.network/atom" 352 feedx "handmade.network" "https://handmade.network/atom"
352 feedx "Indigenous Environmental Network" "https://www.ienearth.org/feed/" 353 feedx "Indigenous Environmental Network" "https://www.ienearth.org/feed/"
353 feedx "milofultz" "https://milofultz.com/atom.xml" 354 feedx "milofultz" "https://milofultz.com/atom.xml"
354 feedx "N O D E" "https://n-o-d-e.net/rss/rss.xml" 355 feedx "N O D E" "https://n-o-d-e.net/rss/rss.xml"
355 feedx "bill mill" "https://billmill.org/Atom" 356 feedx "bill mill" "https://billmill.org/Atom"
356 feedx "nullrouted.space" "https://nullrouted.space/feed/" 357 feedx "nullrouted.space" "https://nullrouted.space/feed/"
357 feedx "orllewin" "https://orllewin.uk/category/blog/feed/" 358 feedx "orllewin" "https://orllewin.uk/category/blog/feed/"
358 feedx "Pinboard (unread bookmarks for eli-oat)" "https://feeds.pinboard.in/rss/u:eli-oat/" 359 feedx "Pinboard (unread bookmarks for eli-oat)" "https://feeds.pinboard.in/rss/u:eli-oat/"
359 feedx "Rock Paper Shotgun" "https://www.rockpapershotgun.com/feed" 360 feedx "Rock Paper Shotgun" "https://www.rockpapershotgun.com/feed"
360} 361}
361 362
362### Filter ###################################################### 363### Filter ######################################################
363 364
364filter() { 365filter() {
365 case "$1" in 366 case "$1" in
366 # Filter items based on feed name. 367 # Filter items based on feed name.
367 *'Hacker News'*) 368 *'Hacker News'*)
368 # Hacker news is stupid and doesn't include IDs, and 369 # Hacker news is stupid and doesn't include IDs, and
369 # instead includes a comments tag in its body. 370 # instead includes a comments tag in its body.
370 gawk 'BEGIN {FS="\t"; OFS="\t"} { 371 gawk 'BEGIN {FS="\t"; OFS="\t"} {
371$6 = $4 372$6 = $4
372sub(/^<a href="/,"", $6) 373sub(/^<a href="/,"", $6)
373sub(/">.*$/,"", $6) 374sub(/">.*$/,"", $6)
374print 375print
375}' 376}'
376 ;; 377 ;;
377 *'Claire Saffitz'*) sed 's@ | Dessert Person@@' ;; 378 *'Claire Saffitz'*) sed 's@ | Dessert Person@@' ;;
378 *Computerphile*) sed 's@ - Computerphile@@' ;; 379 *Computerphile*) sed 's@ - Computerphile@@' ;;
379 *NPR*) sed 's@www\.npr\.org@text.npr.org@' ;; 380 *NPR*) sed 's@www\.npr\.org@text.npr.org@' ;;
380 r_* | r/*) 381 r_* | r/*)
381 # Reddit doesn't include a link as its item IDs, but instead 382 # Reddit doesn't include a link as its item IDs, but instead
382 # something of the form `t3_xxxxx', where xxxxx can be glommed 383 # something of the form `t3_xxxxx', where xxxxx can be glommed
383 # into a URL to get to the comments. 384 # into a URL to get to the comments.
384 gawk -v SUBREDDIT="$1" -v ALT=i.reddit.com \ 385 gawk -v SUBREDDIT="$1" -v ALT=i.reddit.com \
385 'BEGIN { FS="\t"; OFS="\t"; sub("^r_","r/",SUBREDDIT); } 386 'BEGIN { FS="\t"; OFS="\t"; sub("^r_","r/",SUBREDDIT); }
386 { $6 = "https://" ALT "/" SUBREDDIT "/comments/" substr($6, 4); } 387 { $6 = "https://" ALT "/" SUBREDDIT "/comments/" substr($6, 4); }
387 { if (match($4,/<a href="([^"]*)">\[link\]<\/a>/,ln)) $3 = ln[1]; } 388 { if (match($4,/<a href="([^"]*)">\[link\]<\/a>/,ln)) $3 = ln[1]; }
388 { gsub(/www\.reddit\.com/, ALT, $0); } 389 { gsub(/www\.reddit\.com/, ALT, $0); }
389 { print; }' 390 { print; }'
390 ;; 391 ;;
391 'Saturday Morning Breakfast Cereal') 392 'Saturday Morning Breakfast Cereal')
392 sed 's@Saturday Morning Breakfast Cereal - @@' 393 sed 's@Saturday Morning Breakfast Cereal - @@'
393 ;; 394 ;;
394 *) cat ;; 395 *) cat ;;
395 esac | 396 esac |
396 filter_add_empties | 397 filter_add_empties |
397 filter_html_entities | 398 filter_html_entities |
398 filter_filter_links 399 filter_filter_links
399} 400}
400 401
401filter_add_empties() { 402filter_add_empties() {
402 awk 'BEGIN{FS="\t";OFS=FS;} 403 awk 'BEGIN{FS="\t";OFS=FS;}
403{ $2 = $2 ? $2 : "[empty]" } 404{ $2 = $2 ? $2 : "[empty]" }
404{ print $1,$2,$3,$4,$5,$6,$7,$8,$9; } 405{ print $1,$2,$3,$4,$5,$6,$7,$8,$9; }
405' 406'
406} 407}
407 408
408filter_embed_youtube() { 409filter_embed_youtube() {
409 # replace youtube links with embed links 410 # replace youtube links with embed links
410 sed 's@www\.youtube\.com/watch?v=@www.youtube.com/embed/@g' 411 sed 's@www\.youtube\.com/watch?v=@www.youtube.com/embed/@g'
411} 412}
412 413
413filter_filter_links() { 414filter_filter_links() {
414 # shorten feedburner links and strip tracking parameters and pixels 415 # shorten feedburner links and strip tracking parameters and pixels
415 awk 'BEGIN { FS= "\t"; OFS = "\t"; } 416 awk 'BEGIN { FS= "\t"; OFS = "\t"; }
416function filterlink(s) { 417function filterlink(s) {
417# protocol must start with http, https or gopher. 418# protocol must start with http, https or gopher.
418if (match(s, /^(http|https|gopher):\/\//) == 0) { 419if (match(s, /^(http|https|gopher):\/\//) == 0) {
@@ -440,9 +441,9 @@ print $0;
440} 441}
441 442
442filter_html_entities() { 443filter_html_entities() {
443 # convert HTML entities into dumb counterparts 444 # convert HTML entities into dumb counterparts
444 # (and weird shit to normal shit, too) 445 # (and weird shit to normal shit, too)
445 awk '{ 446 awk '{
446gsub(/&#34;/,"\""); gsub(/&#x22;/,"\""); 447gsub(/&#34;/,"\""); gsub(/&#x22;/,"\"");
447gsub(/&#39;/,"'\''"); gsub(/&#x27;/,"'\''"); 448gsub(/&#39;/,"'\''"); gsub(/&#x27;/,"'\''");
448gsub(/’/,"'\''"); 449gsub(/’/,"'\''");
@@ -454,37 +455,37 @@ print
454# Fetch ######################################################### 455# Fetch #########################################################
455 456
456fetch() { # fetch(name, url, feedfile) 457fetch() { # fetch(name, url, feedfile)
457 "${NOFETCH:-false}" && return 458 "${NOFETCH:-false}" && return
458 curl -s -L \ 459 curl -s -L \
459 --max-redirs 3 \ 460 --max-redirs 3 \
460 --header "'User-Agent: $USER_AGENT'" \ 461 --header "'User-Agent: $USER_AGENT'" \
461 --fail \ 462 --fail \
462 --max-time 15 \ 463 --max-time 15 \
463 "$2" 464 "$2"
464} 465}
465 466
466# Merge ######################################################## 467# Merge ########################################################
467p 468p
468merge() { 469merge() {
469 # merge(name, oldfile, newfile) 470 # merge(name, oldfile, newfile)
470 case "$1" in 471 case "$1" in
471 *'Tildes'* | *r_*) 472 *'Tildes'* | *r_*)
472 # Tildes changes its IDs and titles fairly regularly, which is really 473 # Tildes changes its IDs and titles fairly regularly, which is really
473 # annoying and adds false doubles. So here, remove the last 474 # annoying and adds false doubles. So here, remove the last
474 # element of the path name (the title), and sort ONLY on 475 # element of the path name (the title), and sort ONLY on
475 # TIMESTAMP. 476 # TIMESTAMP.
476 # 477 #
477 # Reddit also sometimes does weird things, so let's just use 478 # Reddit also sometimes does weird things, so let's just use
478 # timestamps for that too. 479 # timestamps for that too.
479 cat "$2" "$3" | 480 cat "$2" "$3" |
480 sort -t ' ' -k1,1 -u 481 sort -t ' ' -k1,1 -u
481 ;; 482 ;;
482 *) 483 *)
483 # Otherwise, sort on ID and URL. This minimizes the risk of 484 # Otherwise, sort on ID and URL. This minimizes the risk of
484 # false doubles. 485 # false doubles.
485 sort -t ' ' -u -k6,6 -k3,3 "$2" "$3" 2>/dev/null 486 sort -t ' ' -u -k6,6 -k3,3 "$2" "$3" 2>/dev/null
486 ;; 487 ;;
487 esac 488 esac
488} 489}
489 490
490# Local Variables: 491# Local Variables: