'''
Function:
Implementation of QobuzMusicClient Cookies Builder
Author:
Zhenchao Jin
WeChat Official Account (微信公众号):
Charles的皮卡丘
'''
import re
import requests
from urllib.parse import urljoin
'''settings'''
USERNAME = 'Your Email or UserID Here'
PASSWORD = 'Your Password or Token Here'
LOGIN_BY_PASSWORD = True # modify as False if you use token to login in Qobuz
'''buildqobuzcookies'''
def buildqobuzcookies():
(session := requests.Session()).headers.update({"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36"})
(resp := session.get("https://play.qobuz.com/login")).raise_for_status()
bundle_url = re.search(r'', resp.text).group(1)
(resp := session.get(urljoin("https://play.qobuz.com", bundle_url))).raise_for_status()
app_id = str(re.search(r'production:{api:{appId:"(?P\d{9})",appSecret:"(\w{32})', resp.text).group("app_id"))
session.headers.update({"X-App-Id": str(app_id)})
params = {"user_id": USERNAME, "user_auth_token": PASSWORD, "app_id": str(app_id),} if not LOGIN_BY_PASSWORD else {"email": USERNAME, "password": PASSWORD, "app_id": str(app_id),}
(resp := session.get("https://www.qobuz.com/api.json/0.2/user/login", params=params)).raise_for_status()
cookies: dict = requests.utils.dict_from_cookiejar(resp.cookies)
cookies.update(requests.utils.dict_from_cookiejar(session.cookies))
cookies.update(resp.json()); cookies['x-user-auth-token'] = cookies['user_auth_token']
return cookies
'''tests'''
if __name__ == '__main__':
print(buildqobuzcookies())