diff --git a/hosts/common/feeds.nix b/hosts/common/feeds.nix index 45c2d8b0..32b71cd0 100644 --- a/hosts/common/feeds.nix +++ b/hosts/common/feeds.nix @@ -1,3 +1,9 @@ +# candidates: +# - The Nonlinear Library (podcast): +# - has ~10 posts per day, text-to-speech; i would need better tagging before adding this +# - +# - dead since 2022/10 - 2023/03 + { lib, sane-data, ... }: let hourly = { freq = "hourly"; }; @@ -50,16 +56,23 @@ let (fromDb "lexfridman.com/podcast" // rat) ## Astral Codex Ten (fromDb "sscpodcast.libsyn.com" // rat) + ## Less Wrong Curated + (fromDb "feeds.libsyn.com/421877" // rat) ## Econ Talk (fromDb "feeds.simplecast.com/wgl4xEgL" // rat) ## Cory Doctorow -- both podcast & text entries (fromDb "craphound.com" // pol) (fromDb "congressionaldish.libsyn.com" // pol) + (mkPod "https://podcasts.la.utexas.edu/this-is-democracy/feed/podcast/" // pol // weekly) ## Civboot -- https://anchor.fm/civboot (fromDb "anchor.fm/s/34c7232c/podcast/rss" // tech) ## Emerge: making sense of what's next -- (mkPod "https://anchor.fm/s/21bc734/podcast/rss" // pol // infrequent) (fromDb "feeds.feedburner.com/80000HoursPodcast" // rat) + ## Daniel Huberman on sleep + (fromDb "feeds.megaphone.fm/hubermanlab" // uncat) + ## Multidisciplinary Association for Psychedelic Studies + (fromDb "mapspodcast.libsyn.com" // uncat) (fromDb "allinchamathjason.libsyn.com" // pol) (fromDb "acquired.libsyn.com" // tech) # The Intercept - Deconstructed; also available: @@ -112,6 +125,7 @@ let # DEVELOPERS (fromDb "uninsane.org" // tech) + (fromDb "ascii.textfiles.com" // tech) # Jason Scott (fromDb "mg.lol" // tech) (fromDb "drewdevault.com" // tech) ## Ken Shirriff diff --git a/hosts/common/home/zsh/default.nix b/hosts/common/home/zsh/default.nix index d63d1136..c1486b9a 100644 --- a/hosts/common/home/zsh/default.nix +++ b/hosts/common/home/zsh/default.nix @@ -74,7 +74,7 @@ in # see for an example: autoload -Uz zmv - HISTORY_IGNORE='(sane-shutdown *|sane-reboot *|rm *)' + HISTORY_IGNORE='(sane-shutdown *|sane-reboot *|rm *|nixos-rebuild.* switch)' # extra aliases # TODO: move to `shellAliases` config? diff --git a/modules/data/feeds/sources/ascii.textfiles.com/default.json b/modules/data/feeds/sources/ascii.textfiles.com/default.json new file mode 100644 index 00000000..8f7d6ccb --- /dev/null +++ b/modules/data/feeds/sources/ascii.textfiles.com/default.json @@ -0,0 +1,21 @@ +{ + "bozo": 0, + "content_length": 362082, + "content_type": "application/rss+xml; charset=utf-8", + "description": "Jason Scott's Weblog", + "favicon": "https://ascii.textfiles.com/wp-includes/images/w-logo-blue-white-bg.png", + "favicon_data_uri": "data:image/png;base64,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", + "hubs": [], + "is_podcast": false, + "is_push": false, + "item_count": 20, + "last_updated": "2023-03-06T07:13:07+00:00", + "score": 14, + "self_url": "https://ascii.textfiles.com/feed", + "site_name": "ASCII by Jason Scott", + "site_url": "https://ascii.textfiles.com", + "title": "ASCII by Jason Scott", + "url": "https://ascii.textfiles.com/feed", + "velocity": 0.008, + "version": "rss20" +} \ No newline at end of file diff --git a/modules/data/feeds/sources/feeds.libsyn.com/421877/default.json b/modules/data/feeds/sources/feeds.libsyn.com/421877/default.json new file mode 100644 index 00000000..28282c35 --- /dev/null +++ b/modules/data/feeds/sources/feeds.libsyn.com/421877/default.json @@ -0,0 +1,23 @@ +{ + "bozo": 0, + "content_length": 272569, + "content_type": "text/xml; charset=utf-8", + "description": "Audio version of the posts shared in the LessWrong Curated newsletter.", + "favicon": "", + "favicon_data_uri": "", + "hubs": [ + "https://pubsubhubbub.appspot.com/" + ], + "is_podcast": true, + "is_push": true, + "item_count": 56, + "last_updated": "2023-03-08T08:00:00+00:00", + "score": 32, + "self_url": "https://feeds.buzzsprout.com/2037297.rss", + "site_name": "", + "site_url": "", + "title": "LessWrong Curated Podcast", + "url": "https://feeds.buzzsprout.com/2037297.rss", + "velocity": 0.192, + "version": "rss20" +} \ No newline at end of file diff --git a/modules/data/feeds/sources/feeds.megaphone.fm/hubermanlab/default.json b/modules/data/feeds/sources/feeds.megaphone.fm/hubermanlab/default.json new file mode 100644 index 00000000..d4f6be8b --- /dev/null +++ b/modules/data/feeds/sources/feeds.megaphone.fm/hubermanlab/default.json @@ -0,0 +1,21 @@ +{ + "bozo": 0, + "content_length": 1377252, + "content_type": "application/xml; charset=utf-8", + "description": "Andrew Huberman, Ph.D.", + "favicon": "", + "favicon_data_uri": "", + "hubs": [], + "is_podcast": true, + "is_push": false, + "item_count": 129, + "last_updated": "2023-03-06T09:00:00+00:00", + "score": 14, + "self_url": "https://feeds.megaphone.fm/hubermanlab", + "site_name": "", + "site_url": "", + "title": "Huberman Lab", + "url": "https://feeds.megaphone.fm/hubermanlab", + "velocity": 0.159, + "version": "rss20" +} \ No newline at end of file diff --git a/modules/data/feeds/sources/mapspodcast.libsyn.com/default.json b/modules/data/feeds/sources/mapspodcast.libsyn.com/default.json new file mode 100644 index 00000000..41139bd3 --- /dev/null +++ b/modules/data/feeds/sources/mapspodcast.libsyn.com/default.json @@ -0,0 +1,21 @@ +{ + "bozo": 0, + "content_length": 256360, + "content_type": "application/rss+xml; charset=utf-8", + "description": "Hosted by Zach Leary, the intent of the podcast is to bring you the listener an easily accessible resource for a variety of topics all related to psychedelic research. There is a lot to learn about new research into the therapeutic potential of psychedelics and marijuana. Over the years, the Multidisciplinary Association for Psychedelic Studies (MAPS) has amassed an incredible treasure trove of audio archives sourced from the amazing talks, presentations and panels that have taken place at past Psychedelic Science conferences and other unique events. By selecting some of that content and then bringing it to you in a podcast we hope to create a centralized location for the greater MAPS community. If you're a researcher, scientist, medical professional or just a curiosity seeker we hope that you'll find this content a valuable resource tool.\n\nPlease visit the MAPS website at https://maps.org", + "favicon": "", + "favicon_data_uri": "", + "hubs": [], + "is_podcast": true, + "is_push": false, + "item_count": 62, + "last_updated": "2023-03-06T20:20:00+00:00", + "score": 0, + "self_url": "https://feeds.libsyn.com/95610/rss", + "site_name": "", + "site_url": "", + "title": "MAPS Podcast", + "url": "https://feeds.libsyn.com/95610/rss", + "velocity": 0.028, + "version": "rss20" +} \ No newline at end of file diff --git a/pkgs/feeds/default.nix b/pkgs/feeds/default.nix index 85931b71..6aeead05 100644 --- a/pkgs/feeds/default.nix +++ b/pkgs/feeds/default.nix @@ -26,16 +26,23 @@ passthru.initFeedScript = pkgs.writeShellScript "init-feed" '' + # this is the `nix run '.#init-feed' ` script` sources_dir=modules/data/feeds/sources - name="$1" - url="https://$name" + # prettify the URL, by default + name=$( \ + echo "$1" \ + | sed 's|^https://||' \ + | sed 's|^http://||' \ + | sed 's|^www\.||' \ + | sed 's|/+$||' \ + ) json_path="$sources_dir/$name/default.json" # the name could have slashes in it, so we want to mkdir -p that # but in a way where the least could go wrong. pushd "$sources_dir"; mkdir -p "$name"; popd - ${./update.py} "$url" "$json_path" + ${./update.py} "$name" "$json_path" cat "$json_path" ''; } diff --git a/pkgs/feeds/update.py b/pkgs/feeds/update.py index 1ac2114e..1e9c3364 100755 --- a/pkgs/feeds/update.py +++ b/pkgs/feeds/update.py @@ -13,9 +13,13 @@ logging.getLogger().setLevel(logging.DEBUG) logging.getLogger().addHandler(logging.StreamHandler(sys.stdout)) logging.getLogger(__name__).debug("logging enabled") -url = coerce_url(url, default_scheme="https") -items = search(url, total_timeout=180, request_timeout=90, max_content_length=100*1024*1024) -items = sort_urls(items) +def try_scheme(url: str, scheme: str): + url = coerce_url(url, default_scheme=scheme) + print(f"trying {url}") + items = search(url, total_timeout=180, request_timeout=90, max_content_length=100*1024*1024) + return sort_urls(items) + +items = try_scheme(url, "https") or try_scheme(url, "http") # print all results serialized = [item.serialize() for item in items]