Добавлена возможность подписи запросов и коневертации форматов track_id

Добавлены функции get_sign_request, convert_track_id_to_number
このコミットが含まれているのは:
Gleb Liutsko 2022-11-13 21:19:31 +04:00
コミット cdaa29a56c
この署名に対応する既知のキーがデータベースに存在しません
GPGキーID: 10FD4B7D55524D61
2個のファイルの変更41行の追加0行の削除

9
yandex_music/utils/convert_track_id.py ノーマルファイル
ファイルの表示

@ -0,0 +1,9 @@
from typing import Union
def convert_track_id_to_number(track_id: Union[str, int]) -> int:
"""TODO"""
if isinstance(track_id, str):
track_id = int(track_id.split(':')[0])
return track_id

32
yandex_music/utils/sign_request.py ノーマルファイル
ファイルの表示

@ -0,0 +1,32 @@
from typing import Union
from dataclasses import dataclass
import datetime
import hmac
import hashlib
import base64
from yandex_music.utils.convert_track_id import convert_track_id_to_number
DEFAULT_SIGN_KEY = 'p93jhgh689SBReK6ghtw62'
@dataclass
class Sign:
"""TODO"""
timestamp: int
value: str
def get_sign_request(track_id: Union[int, str], key: str = DEFAULT_SIGN_KEY) -> Sign:
"""TODO"""
track_id = convert_track_id_to_number(track_id)
timestamp = int(datetime.datetime.now().timestamp())
message = f'{track_id}{timestamp}'
hmac_sign = hmac.new(key.encode('UTF-8'), message.encode('UTF-8'), hashlib.sha256).digest()
sign = base64.b64encode(hmac_sign).decode('UTF-8')
return Sign(timestamp, sign)