Skip to content

Instantly share code, notes, and snippets.

@aaronclimbs
Last active January 23, 2024 07:13
Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save aaronclimbs/091232147cca7c43349d3800695be21b to your computer and use it in GitHub Desktop.
Save aaronclimbs/091232147cca7c43349d3800695be21b to your computer and use it in GitHub Desktop.
// Apologies for the hacky nature of the below - it was just bothering me so I threw this together for myself.
// I used this in firefox, just go to the manage subscriptions page in youtube and run it in the developer console. It should work in chrome as well, I forget if there is a different browser function to copy to the clipboard.
// After running it, just paste it into a file and save it with a '.ompl' extension.
function youTubeToOPML() {
output = '<?xml version="1.0" encoding="UTF-8"?>\n<opml version="1.0">\n<head>\n<title>Feed Subscriptions</title>\n</head>\n<body>\n<outline title="Youtube Subscriptions" text="Youtube Subscriptions">';
arrOfATags = [...document.querySelectorAll('a#main-link')];
rss = arrOfATags.forEach(item => {
const {href, innerText} = item;
const data = {
channelID: "",
title: "",
userID: "",
}
if (href.includes('channel')) {
data.channelID = href.replace("https://www.youtube.com/channel/","https://www.youtube.com/feeds/videos.xml?channel_id=");
} else if (href.includes('user')) {
data.userID = href.replace('https://www.youtube.com/user/',"https://www.youtube.com/feeds/videos.xml?user=");
}
data.title = innerText.split('\n')[0];
OPMLLine = `<outline type="rss" xmlUrl="${data.channelID + data.userID}"/>\n`;
output += OPMLLine;
})
output += '</outline>\n</body>\n</opml>'
return output;
}
copy(youTubeToOPML());
@asorel1942
Copy link

asorel1942 commented Nov 16, 2020

Yep, that's actually what I've been doing since my last comment. The HTML tag needed seems to be. <outline title="Youtube Subscriptions" text="Youtube Subscriptions"> </outline>, wrapped around the feeds.

@asorel1942
Copy link

After some testing manually adding those tags to the output of your script does seem to work fine, so if you want to add that to your script feel free.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment