aboutsummaryrefslogtreecommitdiff
path: root/testTheThing/xhtml/scripts/youtube_subs_export.py
diff options
context:
space:
mode:
Diffstat (limited to 'testTheThing/xhtml/scripts/youtube_subs_export.py')
-rw-r--r--testTheThing/xhtml/scripts/youtube_subs_export.py51
1 files changed, 51 insertions, 0 deletions
diff --git a/testTheThing/xhtml/scripts/youtube_subs_export.py b/testTheThing/xhtml/scripts/youtube_subs_export.py
new file mode 100644
index 0000000..6a36840
--- /dev/null
+++ b/testTheThing/xhtml/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()
+