aboutsummaryrefslogtreecommitdiff
path: root/yt_music_scraper/main.py
diff options
context:
space:
mode:
Diffstat (limited to 'yt_music_scraper/main.py')
-rw-r--r--yt_music_scraper/main.py23
1 files changed, 20 insertions, 3 deletions
diff --git a/yt_music_scraper/main.py b/yt_music_scraper/main.py
index 3e8a917..f7a7d09 100644
--- a/yt_music_scraper/main.py
+++ b/yt_music_scraper/main.py
@@ -2,6 +2,7 @@ from yt_dlp import YoutubeDL
import urllib.parse
from ytmusicapi import YTMusic
import re
+import concurrent.futures
import json
import argparse
import sys
@@ -23,7 +24,6 @@ def vid_info(data):
logger.info(json.dumps(data['title'] if 'title' in data else "N/A", indent=4))
logger.info(json.dumps(data['album'] if 'album' in data else "N/A", indent=4))
- logger.info(json.dumps(data['artists'] if 'artists' in data else "N/A", indent=4))
return data['album'] if 'album' in data else "N/A"
ydl_opts = {
@@ -32,12 +32,21 @@ ydl_opts = {
'key': 'FFmpegExtractAudio',
'preferredcodec': 'flac',
'preferredquality': 'best',
- }],
+ },
+ {'key': 'FFmpegMetadata'},
+ {'key': 'EmbedThumbnail'}],
+ 'writethumbnail': True,
+ 'embedthumbnail': True,
+ 'add_metadata': True,
'logger': logger,
- 'output': '%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s',
+ 'outtmpl': '%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s',
}
+def download_album(album_id):
+ data = yt.download(album_id)
+ return data
+
if __name__ == "__main__":
parser = argparse.ArgumentParser(prog="YT DLP Music downloader", description="Download all albums corresponding to songs in a playlist")
@@ -68,4 +77,12 @@ if __name__ == "__main__":
album_ids.append(item['playlistId'])
break
logger.info(f"Album IDs: {album_ids}")
+ tasks = []
+ with concurrent.futures.ProcessPoolExecutor() as executor:
+ for result in executor.map(download_album, album_ids):
+ tasks.append(result)
+ logger.info(f"DONE")
+ logger.info(f"DONE")
+
+