diff options
Diffstat (limited to 'org/scripts/youtube_subs_export.py')
-rw-r--r-- | org/scripts/youtube_subs_export.py | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/org/scripts/youtube_subs_export.py b/org/scripts/youtube_subs_export.py new file mode 100644 index 0000000..6a36840 --- /dev/null +++ b/org/scripts/youtube_subs_export.py @@ -0,0 +1,51 @@ +import sys + +""" +This little script lets you export your entire youtube subscriptions list to a opml file. + +To use it go to your google account and go to your user data collection and find the part on youtube to download your subscriptions. +It will give you a subscriptions.csv file and pass that file to the script and it will output the rss opml data to stdout. +Do what you need with that data. +""" + +# XML doesn't like some characters +def fix_name(name): + no_no_list = ["\n", '"', "&"] + name = "".join(filter(lambda x: x not in no_no_list, name)) + return name + +def main(): + + # Get name of the csv file. + if len(sys.argv) < 1: + print("File name required") + sys.exit() + + file_name = sys.argv[1] + + with open(file_name, "r") as fp: + + print('<?xml version="1.0" encoding="UTF-8"?>') + print('<opml version="2.0">') + print('<head><title>OPML Feeds</title></head>') + print('<body>') + + for line in fp.readlines()[1::]: # Skips the first line. + + # Empty line. + if line == "\n": + continue + + line_data = line.split(",") + feed_url = f"https://www.youtube.com/feeds/videos.xml?channel_id={line_data[0]}" + + print(f'\t<outline text="{fix_name(line_data[2])}" type="rss" xmlUrl="{feed_url}"/>') + + + print('</body>') + print('</opml>') + + +if __name__ == "__main__": + main() + |