mirror of
https://github.com/nathom/streamrip.git
synced 2025-05-17 08:35:08 -04:00
Add option to set album tag to playlist name
This commit is contained in:
parent
b00f5278c4
commit
ac02f7902a
5 changed files with 34 additions and 8 deletions
|
@ -80,6 +80,9 @@ class Config:
|
|||
"keep_embedded_cover": False,
|
||||
"keep_downloaded_cover": True,
|
||||
},
|
||||
"metadata": {
|
||||
"set_playlist_to_album": False,
|
||||
},
|
||||
"path_format": {"folder": FOLDER_FORMAT, "track": TRACK_FORMAT},
|
||||
"check_for_updates": True,
|
||||
"lastfm": {"source": "qobuz"},
|
||||
|
|
|
@ -2,7 +2,6 @@ import logging
|
|||
import os
|
||||
import re
|
||||
import sys
|
||||
import time
|
||||
from getpass import getpass
|
||||
from hashlib import md5
|
||||
from string import Formatter
|
||||
|
@ -163,6 +162,9 @@ class MusicDL(list):
|
|||
"embed_cover": self.config.session["artwork"]["embed"],
|
||||
"embed_cover_size": self.config.session["artwork"]["embed_size"],
|
||||
"download_cover_size": self.config.session["artwork"]["download_size"],
|
||||
"set_playlist_to_album": self.config.session["metadata"][
|
||||
"set_playlist_to_album"
|
||||
],
|
||||
}
|
||||
logger.debug("Arguments from config: %s", arguments)
|
||||
for item in self:
|
||||
|
|
|
@ -848,7 +848,10 @@ class Album(Tracklist):
|
|||
"bit_depth": 16,
|
||||
"sampling_rate": 44100,
|
||||
"tracktotal": resp.get("track_total") or resp.get("nb_tracks"),
|
||||
"disctotal": max(track["disk_number"] for track in resp["tracks"]),
|
||||
"disctotal": max(
|
||||
track.get("disk_number") for track in resp.get("tracks", [{}])
|
||||
)
|
||||
or 1,
|
||||
"explicit": bool(resp.get("explicit_content_lyrics")),
|
||||
}
|
||||
|
||||
|
@ -1088,7 +1091,8 @@ class Playlist(Tracklist):
|
|||
:type new_tracknumbers: bool
|
||||
:param kwargs:
|
||||
"""
|
||||
self.meta = self.client.get(id=self.id, media_type="playlist")
|
||||
self.meta = self.client.get(self.id, media_type="playlist")
|
||||
logger.debug(pformat(self.meta))
|
||||
self._load_tracks(**kwargs)
|
||||
self.loaded = True
|
||||
|
||||
|
@ -1100,6 +1104,9 @@ class Playlist(Tracklist):
|
|||
"""
|
||||
if self.client.source == "qobuz":
|
||||
self.name = self.meta["name"]
|
||||
self.image = self.meta["images"]
|
||||
self.creator = safe_get(self.meta, "owner", "name", default="Qobuz")
|
||||
|
||||
tracklist = self.meta["tracks"]["items"]
|
||||
|
||||
def gen_cover(track):
|
||||
|
@ -1110,10 +1117,13 @@ class Playlist(Tracklist):
|
|||
|
||||
elif self.client.source == "tidal":
|
||||
self.name = self.meta["title"]
|
||||
self.image = tidal_cover_url(self.meta["image"], 640)
|
||||
self.creator = safe_get(self.meta, "creator", "name", default="TIDAL")
|
||||
|
||||
tracklist = self.meta["tracks"]
|
||||
|
||||
def gen_cover(track):
|
||||
cover_url = tidal_cover_url(track["album"]["cover"], 320)
|
||||
cover_url = tidal_cover_url(track["album"]["cover"], 640)
|
||||
return cover_url
|
||||
|
||||
def meta_args(track):
|
||||
|
@ -1124,6 +1134,9 @@ class Playlist(Tracklist):
|
|||
|
||||
elif self.client.source == "deezer":
|
||||
self.name = self.meta["title"]
|
||||
self.image = self.meta["picture_big"]
|
||||
self.creator = safe_get(self.meta, "creator", "name", default="Deezer")
|
||||
|
||||
tracklist = self.meta["tracks"]
|
||||
|
||||
def gen_cover(track):
|
||||
|
@ -1131,6 +1144,8 @@ class Playlist(Tracklist):
|
|||
|
||||
elif self.client.source == "soundcloud":
|
||||
self.name = self.meta["title"]
|
||||
self.image = self.meta.get("artwork_url").replace("large", "t500x500")
|
||||
self.creator = self.meta["user"]["username"]
|
||||
tracklist = self.meta["tracks"]
|
||||
|
||||
def gen_cover(track):
|
||||
|
@ -1185,10 +1200,16 @@ class Playlist(Tracklist):
|
|||
logger.debug(f"Parent folder {folder}")
|
||||
|
||||
self.download_message()
|
||||
set_playlist_to_album = kwargs.get("set_playlist_to_album", False)
|
||||
for i, track in enumerate(self):
|
||||
|
||||
if self.client.source == "soundcloud":
|
||||
track.load_meta()
|
||||
|
||||
if set_playlist_to_album and hasattr(self, "image"):
|
||||
track["album"] = self.name
|
||||
track["albumartist"] = self.creator
|
||||
|
||||
if kwargs.get("new_tracknumbers", True):
|
||||
track.meta["tracknumber"] = str(i + 1)
|
||||
|
||||
|
|
|
@ -40,6 +40,7 @@ class TrackMetadata:
|
|||
* tracknumber
|
||||
* discnumber
|
||||
* tracktotal
|
||||
* disctotal
|
||||
|
||||
"""
|
||||
|
||||
|
@ -67,6 +68,7 @@ class TrackMetadata:
|
|||
self.cover = None
|
||||
self.tracknumber = None
|
||||
self.discnumber = None
|
||||
self.disctotal = None
|
||||
|
||||
# not included in tags
|
||||
self.explicit = False
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
import base64
|
||||
import logging
|
||||
import logging.handlers as handlers
|
||||
import os
|
||||
import time
|
||||
from string import Formatter
|
||||
from typing import Hashable, Optional, Union
|
||||
|
||||
|
@ -112,8 +110,8 @@ def tqdm_download(url: str, filepath: str, params: dict = None):
|
|||
r = requests.get(url, allow_redirects=True, stream=True, params=params)
|
||||
total = int(r.headers.get("content-length", 0))
|
||||
logger.debug(f"File size = {total}")
|
||||
if total < 1000 and not url.endswith("jpg"):
|
||||
raise NonStreamable
|
||||
if total < 1000 and not url.endswith("jpg") and not url.endswith("png"):
|
||||
raise NonStreamable(url)
|
||||
|
||||
try:
|
||||
with open(filepath, "wb") as file, tqdm(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue