mirror of https://github.com/nathom/streamrip.git
Add tidal search
This commit is contained in:
parent
f11a1105c9
commit
5e81860090
|
@ -104,7 +104,7 @@ class TidalClient(Client):
|
|||
logger.debug(item)
|
||||
return item
|
||||
|
||||
async def search(self, query: str, media_type: str, limit: int = 100) -> dict:
|
||||
async def search(self, media_type: str, query: str, limit: int = 100) -> list[dict]:
|
||||
"""Search for a query.
|
||||
|
||||
:param query:
|
||||
|
@ -115,12 +115,14 @@ class TidalClient(Client):
|
|||
:type limit: int
|
||||
:rtype: dict
|
||||
"""
|
||||
# TODD: paginate
|
||||
params = {
|
||||
"query": query,
|
||||
"limit": limit,
|
||||
}
|
||||
assert media_type in ("album", "track", "playlist", "video")
|
||||
return await self._api_request(f"search/{media_type}s", params=params)
|
||||
assert media_type in ("album", "track", "playlist", "video", "artist")
|
||||
resp = await self._api_request(f"search/{media_type}s", params=params)
|
||||
return [resp]
|
||||
|
||||
async def get_downloadable(self, track_id: str, quality: int):
|
||||
params = {
|
||||
|
|
|
@ -97,6 +97,7 @@ class TrackSummary(Summary):
|
|||
|
||||
date_released = (
|
||||
item.get("release_date")
|
||||
or item.get("streamStartDate")
|
||||
or item.get("album", {}).get("release_date_original")
|
||||
or item.get("display_date")
|
||||
or item.get("date")
|
||||
|
@ -137,19 +138,23 @@ class AlbumSummary(Summary):
|
|||
)
|
||||
or "Unknown"
|
||||
)
|
||||
num_tracks = item.get("tracks_count", 0) or len(
|
||||
item.get("tracks", []) or item.get("items", []),
|
||||
num_tracks = (
|
||||
item.get("tracks_count", 0)
|
||||
or item.get("numberOfTracks", 0)
|
||||
or len(
|
||||
item.get("tracks", []) or item.get("items", []),
|
||||
)
|
||||
)
|
||||
|
||||
date_released = (
|
||||
item.get("release_date_original")
|
||||
or item.get("release_date")
|
||||
or item.get("releaseDate")
|
||||
or item.get("display_date")
|
||||
or item.get("date")
|
||||
or item.get("year")
|
||||
or "Unknown"
|
||||
)
|
||||
# raise Exception(item)
|
||||
return cls(id, name, artist, str(num_tracks), date_released)
|
||||
|
||||
|
||||
|
@ -196,7 +201,7 @@ class PlaylistSummary(Summary):
|
|||
|
||||
@classmethod
|
||||
def from_item(cls, item: dict):
|
||||
id = item["id"]
|
||||
id = item.get("id") or item.get("uuid") or "Unknown"
|
||||
name = item.get("name") or item.get("title") or "Unknown"
|
||||
creator = (
|
||||
(item.get("publisher_metadata") and item["publisher_metadata"]["artist"])
|
||||
|
@ -205,7 +210,12 @@ class PlaylistSummary(Summary):
|
|||
or item.get("user", {}).get("name")
|
||||
or "Unknown"
|
||||
)
|
||||
num_tracks = item.get("tracks_count") or item.get("nb_tracks") or -1
|
||||
num_tracks = (
|
||||
item.get("tracks_count")
|
||||
or item.get("nb_tracks")
|
||||
or item.get("numberOfTracks")
|
||||
or -1
|
||||
)
|
||||
description = item.get("description") or "No description"
|
||||
return cls(id, name, creator, num_tracks, description)
|
||||
|
||||
|
@ -242,6 +252,9 @@ class SearchResults:
|
|||
elif source == "deezer":
|
||||
for item in page["data"]:
|
||||
results.append(summary_type.from_item(item))
|
||||
elif source == "tidal":
|
||||
for item in page["items"]:
|
||||
results.append(summary_type.from_item(item))
|
||||
else:
|
||||
raise NotImplementedError
|
||||
|
||||
|
|
Loading…
Reference in New Issue