summaryrefslogtreecommitdiff
path: root/dl-artist.py
diff options
context:
space:
mode:
Diffstat (limited to 'dl-artist.py')
-rw-r--r--dl-artist.py82
1 files changed, 82 insertions, 0 deletions
diff --git a/dl-artist.py b/dl-artist.py
new file mode 100644
index 0000000..78fd3fc
--- /dev/null
+++ b/dl-artist.py
@@ -0,0 +1,82 @@
+from ytmusicapi import YTMusic
+import sys
+import os
+import subprocess
+from subprocess import Popen, PIPE, STDOUT
+
+try:
+ from subprocess import DEVNULL # py3k
+except ImportError:
+ import os
+ DEVNULL = open(os.devnull, 'wb')
+
+ytmusic = YTMusic()
+
+artist_result = ytmusic.get_artist(sys.argv[1])
+artist_name = artist_result['name']
+
+#print(artist_result['albums']['browseId'])
+
+albums = []
+singles = []
+
+if 'albums' in artist_result:
+ albums = artist_result['albums']['results']
+ if artist_result['albums']['browseId'] != None:
+ albums = ytmusic.get_artist_albums(artist_result["albums"]["browseId"], artist_result["albums"]["params"])
+
+if 'singles' in artist_result:
+ singles = artist_result['singles']['results']
+ if artist_result['singles']['browseId'] != None:
+ singles = ytmusic.get_artist_albums(artist_result["singles"]["browseId"], artist_result["singles"]["params"])
+
+print('Artist "' + artist_name + '" has ' + str(len(albums)) + ' albums...')
+for album in albums:
+ albumdata = ytmusic.get_album(album['browseId'])
+ album_name = albumdata['title']
+
+ print('Downloading "' + album_name + '"')
+
+ # Construct the command as a list
+ command = [
+ './yt-dlp_linux',
+ f"https://music.youtube.com/playlist?list={albumdata['audioPlaylistId']}",
+ '-o',
+ 'output/'+artist_name+'/'+album_name+'/%(title)s.%(ext)s', # Adjust the path as needed
+ '-x',
+ '--audio-format',
+ 'mp3',
+ '--embed-thumbnail',
+ '--add-metadata'
+ ]
+
+ p = subprocess.Popen(command, stdin=PIPE, stdout=DEVNULL, stderr=STDOUT)
+ (output, err) = p.communicate()
+ p_status = p.wait()
+ print('done')
+
+
+print('Artist "' + artist_name + '" has ' + str(len(singles)) + ' singles...')
+for single in singles:
+ singledata = ytmusic.get_album(single['browseId'])
+ single_name = singledata['title']
+
+ print('Downloading "' + single_name + '"')
+
+ # Construct the command as a list
+ command = [
+ './yt-dlp_linux',
+ f"https://music.youtube.com/playlist?list={singledata['audioPlaylistId']}",
+ '-o',
+ 'output/'+artist_name+'/Singles/%(title)s.%(ext)s', # Adjust the path as needed
+ '-x',
+ '--audio-format',
+ 'mp3',
+ '--embed-thumbnail',
+ '--add-metadata'
+ ]
+
+ p = subprocess.Popen(command, stdin=PIPE, stdout=DEVNULL, stderr=STDOUT)
+ (output, err) = p.communicate()
+ p_status = p.wait()
+ print('done')