mirror of
https://github.com/nathom/streamrip.git
synced 2025-05-17 08:35:08 -04:00
Fix SoundCloud search #122
This commit is contained in:
parent
65aa1efc38
commit
5ab0fdbc4a
4 changed files with 23 additions and 10 deletions
|
@ -314,9 +314,9 @@ class MusicDL(list):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if hasattr(item, "id"):
|
if hasattr(item, "id"):
|
||||||
self.db.add(item.id)
|
self.db.add(str(item.id))
|
||||||
for item_id in item.downloaded_ids:
|
for item_id in item.downloaded_ids:
|
||||||
self.db.add(item_id)
|
self.db.add(str(item_id))
|
||||||
|
|
||||||
if isinstance(item, Track):
|
if isinstance(item, Track):
|
||||||
item.tag()
|
item.tag()
|
||||||
|
|
|
@ -68,7 +68,7 @@ class Database:
|
||||||
conditions = " AND ".join(f"{key}=?" for key in items.keys())
|
conditions = " AND ".join(f"{key}=?" for key in items.keys())
|
||||||
command = f"SELECT EXISTS(SELECT 1 FROM {self.name} WHERE {conditions})"
|
command = f"SELECT EXISTS(SELECT 1 FROM {self.name} WHERE {conditions})"
|
||||||
|
|
||||||
logger.debug(f"executing {command}")
|
logger.debug("Executing %s", command)
|
||||||
|
|
||||||
return bool(conn.execute(command, tuple(items.values())).fetchone()[0])
|
return bool(conn.execute(command, tuple(items.values())).fetchone()[0])
|
||||||
|
|
||||||
|
@ -108,7 +108,8 @@ class Database:
|
||||||
question_marks = ", ".join("?" for _ in items)
|
question_marks = ", ".join("?" for _ in items)
|
||||||
command = f"INSERT INTO {self.name} ({params}) VALUES ({question_marks})"
|
command = f"INSERT INTO {self.name} ({params}) VALUES ({question_marks})"
|
||||||
|
|
||||||
logger.debug(f"executing {command}")
|
logger.debug("Executing %s", command)
|
||||||
|
logger.debug("Items to add: %s", items)
|
||||||
|
|
||||||
with sqlite3.connect(self.path) as conn:
|
with sqlite3.connect(self.path) as conn:
|
||||||
try:
|
try:
|
||||||
|
|
|
@ -21,6 +21,8 @@ from .constants import (
|
||||||
QOBUZ_FEATURED_KEYS,
|
QOBUZ_FEATURED_KEYS,
|
||||||
SOUNDCLOUD_BASE,
|
SOUNDCLOUD_BASE,
|
||||||
SOUNDCLOUD_CLIENT_ID,
|
SOUNDCLOUD_CLIENT_ID,
|
||||||
|
SOUNDCLOUD_USER_ID,
|
||||||
|
SOUNDCLOUD_APP_VERSION,
|
||||||
TIDAL_AUTH_URL,
|
TIDAL_AUTH_URL,
|
||||||
TIDAL_BASE,
|
TIDAL_BASE,
|
||||||
TIDAL_CLIENT_INFO,
|
TIDAL_CLIENT_INFO,
|
||||||
|
@ -122,7 +124,7 @@ class QobuzClient(Client):
|
||||||
return
|
return
|
||||||
|
|
||||||
if (kwargs.get("app_id") or kwargs.get("secrets")) in (None, [], ""):
|
if (kwargs.get("app_id") or kwargs.get("secrets")) in (None, [], ""):
|
||||||
click.secho("Fetching tokens — this may take a few seconds.", fg='magenta')
|
click.secho("Fetching tokens — this may take a few seconds.", fg="magenta")
|
||||||
logger.info("Fetching tokens from Qobuz")
|
logger.info("Fetching tokens from Qobuz")
|
||||||
spoofer = Spoofer()
|
spoofer = Spoofer()
|
||||||
kwargs["app_id"] = spoofer.get_app_id()
|
kwargs["app_id"] = spoofer.get_app_id()
|
||||||
|
@ -958,7 +960,7 @@ class SoundCloudClient(Client):
|
||||||
resp, _ = self._get(url, no_base=True)
|
resp, _ = self._get(url, no_base=True)
|
||||||
return {"url": resp["url"], "type": "mp3"}
|
return {"url": resp["url"], "type": "mp3"}
|
||||||
|
|
||||||
def search(self, query: str, media_type="album"):
|
def search(self, query: str, media_type="album", limit=50, offset=50):
|
||||||
"""Search for a query.
|
"""Search for a query.
|
||||||
|
|
||||||
:param query:
|
:param query:
|
||||||
|
@ -966,7 +968,14 @@ class SoundCloudClient(Client):
|
||||||
:param media_type: Can be album, though it will return a playlist
|
:param media_type: Can be album, though it will return a playlist
|
||||||
response.
|
response.
|
||||||
"""
|
"""
|
||||||
params = {"q": query}
|
params = {
|
||||||
|
"q": query,
|
||||||
|
"facet": "genre",
|
||||||
|
"user_id": SOUNDCLOUD_USER_ID,
|
||||||
|
"limit": limit,
|
||||||
|
"offset": offset,
|
||||||
|
"linked_partitioning": "1",
|
||||||
|
}
|
||||||
resp, _ = self._get(f"search/{media_type}s", params=params)
|
resp, _ = self._get(f"search/{media_type}s", params=params)
|
||||||
return resp
|
return resp
|
||||||
|
|
||||||
|
@ -983,7 +992,7 @@ class SoundCloudClient(Client):
|
||||||
param_arg = params
|
param_arg = params
|
||||||
params = {
|
params = {
|
||||||
"client_id": SOUNDCLOUD_CLIENT_ID,
|
"client_id": SOUNDCLOUD_CLIENT_ID,
|
||||||
"app_version": "1626941202",
|
"app_version": SOUNDCLOUD_APP_VERSION,
|
||||||
"app_locale": "en",
|
"app_locale": "en",
|
||||||
}
|
}
|
||||||
if param_arg is not None:
|
if param_arg is not None:
|
||||||
|
@ -994,7 +1003,8 @@ class SoundCloudClient(Client):
|
||||||
else:
|
else:
|
||||||
url = f"{SOUNDCLOUD_BASE}/{path}"
|
url = f"{SOUNDCLOUD_BASE}/{path}"
|
||||||
|
|
||||||
logger.debug(f"Fetching url {url}")
|
logger.debug("Fetching url %s", url)
|
||||||
|
logger.debug("Parameters: %s", params)
|
||||||
r = self.session.get(url, params=params)
|
r = self.session.get(url, params=params)
|
||||||
logger.debug(r.text)
|
logger.debug(r.text)
|
||||||
if resp_obj:
|
if resp_obj:
|
||||||
|
|
|
@ -6,7 +6,9 @@ import re
|
||||||
AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0"
|
AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0"
|
||||||
|
|
||||||
TIDAL_COVER_URL = "https://resources.tidal.com/images/{uuid}/{width}x{height}.jpg"
|
TIDAL_COVER_URL = "https://resources.tidal.com/images/{uuid}/{width}x{height}.jpg"
|
||||||
SOUNDCLOUD_CLIENT_ID = re.compile("a3e059563d7fd3372b49b37f00a00bcf")
|
SOUNDCLOUD_CLIENT_ID = "QFciLWLC1GS4P3EZvXIjA3jKhKO5pKB3"
|
||||||
|
SOUNDCLOUD_USER_ID = "672320-86895-162383-801513"
|
||||||
|
SOUNDCLOUD_APP_VERSION = "1626941202"
|
||||||
|
|
||||||
|
|
||||||
QUALITY_DESC = {
|
QUALITY_DESC = {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue