From 7e68eb982b9a9c1671dee83912815a5e1e024537 Mon Sep 17 00:00:00 2001 From: Christian Colglazier Date: Mon, 28 Jun 2021 20:58:35 -0400 Subject: [PATCH] Save video information into a text file --- yt-unlist-saver.py | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/yt-unlist-saver.py b/yt-unlist-saver.py index c41816c..b9e08fa 100644 --- a/yt-unlist-saver.py +++ b/yt-unlist-saver.py @@ -8,12 +8,29 @@ import youtube_dl def getYouTubeAPIKey(): return open('youtube.key', 'r').read() +def getTitle(info): + return info[0] + def getUploadTime(info): return info[1] def getYear(info): return int(getUploadTime(info)[:4]) +def getChannel(info): + return info[2] + +def getChannelId(info): + return info[3] + +def getDescription(info): + return info[4] + +def getTags(info): + if isinstance(info[5], list): + return '[' + ','.join(info[5]) + ']' + return info[5] + def getPrivacy(info): return info[6] @@ -47,9 +64,24 @@ videoInfo = [api.getVideoInfo(video['snippet']['resourceId']['videoId']) for vid filteredVideos = [video for video in videoInfo if getPrivacy(video) == 'unlisted' and getYear(video) <= 2017] ydl_opts = { - 'outtmpl': '{}/%(extractor)s-%(id)s-%(title)s.%(ext)s'.format(playlistDir) + 'outtmpl': '{}/%(uploader)s-%(title)s-%(id)s.%(ext)s'.format(playlistDir) } for v in filteredVideos: print(getYear(v), getId(v)) + videoURL = 'https://www.youtube.com/watch?v='+getId(v) with youtube_dl.YoutubeDL(ydl_opts) as ydl: - ydl.download(['https://www.youtube.com/watch?v='+getId(v)]) + ydl.download([videoURL]) + + # Save metadata to file + description = open('{}/{}-{}-{}.txt'.format(playlistDir, + getChannel(v), + getTitle(v), + getId(v)), 'w') + description.write('Title: ' + getTitle(v) + '\n') + description.write('Uploaded: ' + getUploadTime(v) + '\n') + description.write('Channel: ' + getChannel(v) + '\n') + description.write('Channel ID: ' + getChannelId(v) + '\n') + description.write('Description: ' + getDescription(v) + '\n') + description.write('Tags: ' + getTags(v) + '\n') + description.write('Video ID: ' + getId(v) + '\n') + description.close()