mirror of
https://github.com/zhaarey/AppleMusicDecrypt.git
synced 2025-10-23 15:11:06 +00:00
Initial commit
This commit is contained in:
68
src/types.py
Normal file
68
src/types.py
Normal file
@@ -0,0 +1,68 @@
|
||||
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"
|
||||
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-\\d{4}$"
|
||||
RegexCodecAlac = "audio-alac-stereo-\\d{5}-\\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}
|
||||
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)
|
||||
Reference in New Issue
Block a user