Files
AppleMusicDecrypt/src/types.py
WorldObservationLog 8975427cae fix: uncorrected regex
2024-05-08 20:13:55 +08:00

71 lines
1.9 KiB
Python

from typing import Optional
from pydantic import BaseModel
defaultId = "0"
prefetchKey = "skd://itunes.apple.com/P000000000/s1/e1"
class SampleInfo(BaseModel):
data: bytes
duration: int
descIndex: int
class SongInfo(BaseModel):
codec: str
raw: bytes
samples: list[SampleInfo]
nhml: str
decoderParams: Optional[bytes] = None
class Codec:
ALAC = "alac"
EC3 = "ec3"
AC3 = "ac3"
AAC_BINAURAL = "aac-binaural"
AAC_DOWNMIX = "aac-downmix"
AAC = "aac"
class CodecKeySuffix:
KeySuffixAtmos = "c24"
KeySuffixAlac = "c23"
KeySuffixAAC = "c22"
KeySuffixAACDownmix = "c24"
KeySuffixAACBinaural = "c24"
KeySuffixDefault = "c6"
class CodecRegex:
RegexCodecAtmos = "audio-(atmos|ec3)-\\d{4}$"
RegexCodecAC3 = "audio-ac3-\\d{3}$"
RegexCodecAlac = "audio-alac-stereo-\\d{5,6}-\\d{2}$"
RegexCodecBinaural = "audio-stereo-\\d{3}-binaural$"
RegexCodecDownmix = "audio-stereo-\\d{3}-downmix$"
RegexCodecAAC = "audio-stereo-\\d{3}$"
@classmethod
def get_pattern_by_codec(cls, codec: str):
codec_pattern_mapping = {Codec.ALAC: cls.RegexCodecAlac, Codec.EC3: cls.RegexCodecAtmos,
Codec.AAC_DOWNMIX: cls.RegexCodecDownmix, Codec.AAC_BINAURAL: cls.RegexCodecBinaural,
Codec.AAC: cls.RegexCodecAAC, Codec.AC3: cls.RegexCodecAC3}
return codec_pattern_mapping.get(codec)
class AuthParams(BaseModel):
dsid: str
accountToken: str
accountAccessToken: str
storefront: str
class GlobalAuthParams(AuthParams):
anonymousAccessToken: str
@classmethod
def from_auth_params_and_token(cls, auth_params: AuthParams, token: str):
return cls(dsid=auth_params.dsid, accountToken=auth_params.accountToken, anonymousAccessToken=token,
accountAccessToken=auth_params.accountAccessToken, storefront=auth_params.storefront)