fix: remove PlaylistMeta

pull/8/head
WorldObservationLog 5 months ago
parent c6f60d79fd
commit 43050664f0
  1. 9
      src/models/__init__.py
  2. 147
      src/models/playlist_meta.py
  3. 4
      src/rip.py
  4. 6
      src/utils.py

@ -1,10 +1,9 @@
from src.models.album_meta import AlbumMeta from src.models.album_meta import AlbumMeta
from src.models.playlist_meta import PlaylistMeta
from src.models.song_data import SongData
from src.models.song_lyrics import SongLyrics
from src.models.tracks_meta import TracksMeta
from src.models.artist_albums import ArtistAlbums from src.models.artist_albums import ArtistAlbums
from src.models.artist_songs import ArtistSongs
from src.models.artist_info import ArtistInfo from src.models.artist_info import ArtistInfo
from src.models.artist_songs import ArtistSongs
from src.models.playlist_info import PlaylistInfo from src.models.playlist_info import PlaylistInfo
from src.models.plsylist_tracks import PlaylistTracks from src.models.plsylist_tracks import PlaylistTracks
from src.models.song_data import SongData
from src.models.song_lyrics import SongLyrics
from src.models.tracks_meta import TracksMeta

@ -1,147 +0,0 @@
from __future__ import annotations
from typing import List, Optional
from pydantic import BaseModel
class Description(BaseModel):
standard: Optional[str] = None
short: Optional[str] = None
class Artwork(BaseModel):
width: Optional[int] = None
url: Optional[str] = None
height: Optional[int] = None
textColor3: Optional[str] = None
textColor2: Optional[str] = None
textColor4: Optional[str] = None
textColor1: Optional[str] = None
bgColor: Optional[str] = None
hasP3: Optional[bool] = None
class PlayParams(BaseModel):
id: Optional[str] = None
kind: Optional[str] = None
versionHash: Optional[str] = None
class EditorialNotes(BaseModel):
name: Optional[str] = None
standard: Optional[str] = None
short: Optional[str] = None
class Attributes(BaseModel):
lastModifiedDate: Optional[str] = None
supportsSing: Optional[bool] = None
description: Description
artwork: Artwork
playParams: PlayParams
url: Optional[str] = None
hasCollaboration: Optional[bool] = None
curatorName: Optional[str] = None
audioTraits: List
name: Optional[str] = None
isChart: Optional[bool] = None
playlistType: Optional[str] = None
editorialNotes: EditorialNotes
artistName: Optional[str] = None
class Artwork1(BaseModel):
width: Optional[int] = None
url: Optional[str] = None
height: Optional[int] = None
textColor3: Optional[str] = None
textColor2: Optional[str] = None
textColor4: Optional[str] = None
textColor1: Optional[str] = None
bgColor: Optional[str] = None
hasP3: Optional[bool] = None
class PlayParams1(BaseModel):
id: Optional[str] = None
kind: Optional[str] = None
class Preview(BaseModel):
url: Optional[str] = None
class Attributes1(BaseModel):
albumName: Optional[str] = None
hasTimeSyncedLyrics: Optional[bool] = None
genreNames: List[Optional[str]] = None
trackNumber: Optional[int] = None
releaseDate: Optional[str] = None
durationInMillis: Optional[int] = None
isVocalAttenuationAllowed: Optional[bool] = None
isMasteredForItunes: Optional[bool] = None
isrc: Optional[str] = None
artwork: Artwork1
composerName: Optional[str] = None
audioLocale: Optional[str] = None
url: Optional[str] = None
playParams: PlayParams1
discNumber: Optional[int] = None
hasCredits: Optional[bool] = None
hasLyrics: Optional[bool] = None
isAppleDigitalMaster: Optional[bool] = None
audioTraits: List[Optional[str]] = None
name: Optional[str] = None
previews: List[Preview]
artistName: Optional[str] = None
class Attributes2(BaseModel):
name: Optional[str] = None
class Datum2(BaseModel):
id: Optional[str] = None
type: Optional[str] = None
href: Optional[str] = None
attributes: Attributes2
class Artists(BaseModel):
href: Optional[str] = None
data: List[Datum2]
class Relationships1(BaseModel):
artists: Artists
class Datum1(BaseModel):
id: Optional[str] = None
type: Optional[str] = None
href: Optional[str] = None
attributes: Attributes1
relationships: Relationships1
class Tracks(BaseModel):
href: Optional[str] = None
next: Optional[Optional[str]] = None
data: List[Datum1]
class Relationships(BaseModel):
tracks: Tracks
class Datum(BaseModel):
id: Optional[str] = None
type: Optional[str] = None
href: Optional[str] = None
attributes: Attributes
relationships: Relationships
class PlaylistMeta(BaseModel):
data: List[Datum]

@ -9,7 +9,7 @@ from src.api import (get_song_info, get_song_lyrics, get_album_info, download_so
from src.config import Config, Device from src.config import Config, Device
from src.decrypt import decrypt from src.decrypt import decrypt
from src.metadata import SongMetadata from src.metadata import SongMetadata
from src.models import PlaylistMeta from src.models import PlaylistInfo
from src.mp4 import extract_media, extract_song, encapsulate, write_metadata from src.mp4 import extract_media, extract_song, encapsulate, write_metadata
from src.save import save from src.save import save
from src.types import GlobalAuthParams, Codec from src.types import GlobalAuthParams, Codec
@ -19,7 +19,7 @@ from src.utils import check_song_exists, if_raw_atmos
@logger.catch @logger.catch
async def rip_song(song: Song, auth_params: GlobalAuthParams, codec: str, config: Config, device: Device, async def rip_song(song: Song, auth_params: GlobalAuthParams, codec: str, config: Config, device: Device,
force_save: bool = False, specified_m3u8: str = "", playlist: PlaylistMeta = None): force_save: bool = False, specified_m3u8: str = "", playlist: PlaylistInfo = None):
logger.debug(f"Task of song id {song.id} was created") logger.debug(f"Task of song id {song.id} was created")
token = auth_params.anonymousAccessToken token = auth_params.anonymousAccessToken
song_data = await get_song_info(song.id, token, song.storefront, config.region.language) song_data = await get_song_info(song.id, token, song.storefront, config.region.language)

@ -10,7 +10,7 @@ from bs4 import BeautifulSoup
from src.config import Download from src.config import Download
from src.exceptions import NotTimeSyncedLyricsException from src.exceptions import NotTimeSyncedLyricsException
from src.models import PlaylistMeta from src.models import PlaylistInfo
from src.types import * from src.types import *
@ -105,7 +105,7 @@ def ttml_convent_to_lrc(ttml: str) -> str:
return "\n".join(lrc_lines) return "\n".join(lrc_lines)
def check_song_exists(metadata, config: Download, codec: str, playlist: PlaylistMeta = None): def check_song_exists(metadata, config: Download, codec: str, playlist: PlaylistInfo = None):
song_name, dir_path = get_song_name_and_dir_path(codec, config, metadata, playlist) song_name, dir_path = get_song_name_and_dir_path(codec, config, metadata, playlist)
return (Path(dir_path) / Path(song_name + get_suffix(codec, config.atmosConventToM4a))).exists() return (Path(dir_path) / Path(song_name + get_suffix(codec, config.atmosConventToM4a))).exists()
@ -142,7 +142,7 @@ def get_suffix(codec: str, save_raw_atmos: bool):
return ".m4a" return ".m4a"
def playlist_metadata_to_params(playlist: PlaylistMeta): def playlist_metadata_to_params(playlist: PlaylistInfo):
return {"playlistName": playlist.data[0].attributes.name, return {"playlistName": playlist.data[0].attributes.name,
"playlistCuratorName": playlist.data[0].attributes.curatorName} "playlistCuratorName": playlist.data[0].attributes.curatorName}

Loading…
Cancel
Save