Scripts for exporting YouTube subscriptions to OPML for import into an RSS reader. https://www.wezm.net/v2/posts/2024/youtube-subscriptions-opml/
Go to file
Wesley Moore c566ea4acc
Add blog link to README
2024-05-06 12:38:41 +10:00
.gitignore Add YouTube subscription to OPML tooling 2024-05-06 10:33:43 +10:00
Makefile Add blog link to README 2024-05-06 12:38:41 +10:00
README.md Add blog link to README 2024-05-06 12:38:41 +10:00
generate-json-opml Add YouTube subscription to OPML tooling 2024-05-06 10:33:43 +10:00
generate-opml Add YouTube subscription to OPML tooling 2024-05-06 10:33:43 +10:00

README.md

YouTube Subscriptions to OPML

This repo contains a small collection of scripts that I used to turn my YouTube subscriptions into an OPML file for import in to Feedbin. I also wrote a blog post that goes into detail on how each bit works:

https://www.wezm.net/v2/posts/2024/youtube-subscriptions-opml/

Dependencies

The scripts have only been run on a Linux system using GNU coreutils. They will probably need some tweaking to run on other UNIX-like systems.

  • Scraper
  • jaq
  • curl
  • Python
  • awk
  • GNU make (I haven't tested non-GNU make)

Usage

  1. Visit your subscriptions page

  2. Repeatedly scroll to the end of the page to make them all load

  3. Run the following in the JavaScript console to copy the list of subscriptions to you clipboard as JSON array:

    copy(JSON.stringify(Array.from(new Set(Array.prototype.map.call(document.querySelectorAll('a.channel-link'), (link) => link.href))).filter((x) => !x.includes('/channel/')), null, 2))
    

    Note: I only tested the above on Firefox.

    Also why do this instead of processing the subscriptions.csv from Google Takeout?

    1. Takeout generates multiple gigabytes of archives I have to download to get the CSV file.
    2. It's slow to generate. This process can be done whenever you want.
  4. Paste the list of subscriptions into subscriptions.json.

  5. Run make fetch to fetch the channel pages of all the subscriptions. This only needs to be run once.

  6. Run make channel-json to extract info from each channel page.

  7. Run make subscriptions.opml to generate the OPML file.