mirror of
https://github.com/nathom/streamrip.git
synced 2025-05-19 01:35:24 -04:00
Reformat spoofbuz.py
This commit is contained in:
parent
3f758e9442
commit
02eb2cdc9a
1 changed files with 24 additions and 8 deletions
|
@ -9,10 +9,20 @@ import requests
|
||||||
|
|
||||||
class Spoofer:
|
class Spoofer:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.seed_timezone_regex = r'[a-z]\.initialSeed\("(?P<seed>[\w=]+)",window\.utimezone\.(?P<timezone>[a-z]+)\)'
|
self.seed_timezone_regex = (
|
||||||
|
r'[a-z]\.initialSeed\("(?P<seed>[\w=]+)",window\.ut'
|
||||||
|
r"imezone\.(?P<timezone>[a-z]+)\)"
|
||||||
|
)
|
||||||
# note: {timezones} should be replaced with every capitalized timezone joined by a |
|
# note: {timezones} should be replaced with every capitalized timezone joined by a |
|
||||||
self.info_extras_regex = r'name:"\w+/(?P<timezone>{timezones})",info:"(?P<info>[\w=]+)",extras:"(?P<extras>[\w=]+)"'
|
self.info_extras_regex = (
|
||||||
self.app_id_regex = r'{app_id:"(?P<app_id>\d{9})",app_secret:"\w{32}",base_port:"80",base_url:"https://www\.qobuz\.com",base_method:"/api\.json/0\.2/"},n\.base_url="https://play\.qobuz\.com"'
|
r'name:"\w+/(?P<timezone>{timezones})",info:"'
|
||||||
|
r'(?P<info>[\w=]+)",extras:"(?P<extras>[\w=]+)"'
|
||||||
|
)
|
||||||
|
self.app_id_regex = (
|
||||||
|
r'{app_id:"(?P<app_id>\d{9})",app_secret:"\w{32}",base_port:"80"'
|
||||||
|
r',base_url:"https://www\.qobuz\.com",base_method:"/api\.js'
|
||||||
|
r'on/0\.2/"},n\.base_url="https://play\.qobuz\.com"'
|
||||||
|
)
|
||||||
login_page_request = requests.get("https://play.qobuz.com/login")
|
login_page_request = requests.get("https://play.qobuz.com/login")
|
||||||
login_page = login_page_request.text
|
login_page = login_page_request.text
|
||||||
bundle_url_match = re.search(
|
bundle_url_match = re.search(
|
||||||
|
@ -33,24 +43,30 @@ class Spoofer:
|
||||||
for match in seed_matches:
|
for match in seed_matches:
|
||||||
seed, timezone = match.group("seed", "timezone")
|
seed, timezone = match.group("seed", "timezone")
|
||||||
secrets[timezone] = [seed]
|
secrets[timezone] = [seed]
|
||||||
"""The code that follows switches around the first and second timezone. Why? Read on:
|
"""
|
||||||
Qobuz uses two ternary (a shortened if statement) conditions that should always return false.
|
The code that follows switches around the first and second timezone.
|
||||||
The way Javascript's ternary syntax works, the second option listed is what runs if the condition returns false.
|
Qobuz uses two ternary (a shortened if statement) conditions that
|
||||||
Because of this, we must prioritize the *second* seed/timezone pair captured, not the first.
|
should always return false. The way Javascript's ternary syntax
|
||||||
|
works, the second option listed is what runs if the condition returns
|
||||||
|
false. Because of this, we must prioritize the *second* seed/timezone
|
||||||
|
pair captured, not the first.
|
||||||
"""
|
"""
|
||||||
keypairs = list(secrets.items())
|
keypairs = list(secrets.items())
|
||||||
secrets.move_to_end(keypairs[1][0], last=False)
|
secrets.move_to_end(keypairs[1][0], last=False)
|
||||||
|
|
||||||
info_extras_regex = self.info_extras_regex.format(
|
info_extras_regex = self.info_extras_regex.format(
|
||||||
timezones="|".join([timezone.capitalize() for timezone in secrets])
|
timezones="|".join(timezone.capitalize() for timezone in secrets)
|
||||||
)
|
)
|
||||||
info_extras_matches = re.finditer(info_extras_regex, self.bundle)
|
info_extras_matches = re.finditer(info_extras_regex, self.bundle)
|
||||||
for match in info_extras_matches:
|
for match in info_extras_matches:
|
||||||
timezone, info, extras = match.group("timezone", "info", "extras")
|
timezone, info, extras = match.group("timezone", "info", "extras")
|
||||||
secrets[timezone.lower()] += [info, extras]
|
secrets[timezone.lower()] += [info, extras]
|
||||||
|
|
||||||
for secret_pair in secrets:
|
for secret_pair in secrets:
|
||||||
secrets[secret_pair] = base64.standard_b64decode(
|
secrets[secret_pair] = base64.standard_b64decode(
|
||||||
"".join(secrets[secret_pair])[:-44]
|
"".join(secrets[secret_pair])[:-44]
|
||||||
).decode("utf-8")
|
).decode("utf-8")
|
||||||
|
|
||||||
vals = list(secrets.values())
|
vals = list(secrets.values())
|
||||||
vals.remove("")
|
vals.remove("")
|
||||||
return vals
|
return vals
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue