mirror of
https://github.com/nathom/streamrip.git
synced 2024-09-19 11:18:45 -04:00
Deezer search working
This commit is contained in:
parent
b1e4369f5d
commit
f11a1105c9
2 changed files with 12 additions and 5 deletions
|
@ -108,7 +108,7 @@ class DeezerClient(Client):
|
|||
artist["albums"] = albums["data"]
|
||||
return artist
|
||||
|
||||
async def search(self, media_type: str, query: str, limit: int = 200):
|
||||
async def search(self, media_type: str, query: str, limit: int = 200) -> list[dict]:
|
||||
# TODO: use limit parameter
|
||||
if media_type == "featured":
|
||||
try:
|
||||
|
@ -125,7 +125,7 @@ class DeezerClient(Client):
|
|||
raise Exception(f"Invalid media type {media_type}")
|
||||
|
||||
response = search_function(query, limit=limit) # type: ignore
|
||||
return response
|
||||
return [response]
|
||||
|
||||
async def get_downloadable(
|
||||
self,
|
||||
|
|
|
@ -92,6 +92,9 @@ class TrackSummary(Summary):
|
|||
)
|
||||
or "Unknown"
|
||||
)
|
||||
if isinstance(artist, dict) and "name" in artist:
|
||||
artist = artist["name"]
|
||||
|
||||
date_released = (
|
||||
item.get("release_date")
|
||||
or item.get("album", {}).get("release_date_original")
|
||||
|
@ -100,7 +103,7 @@ class TrackSummary(Summary):
|
|||
or item.get("year")
|
||||
or "Unknown"
|
||||
)
|
||||
return cls(id, name.strip(), artist, date_released)
|
||||
return cls(id, name.strip(), artist, date_released) # type: ignore
|
||||
|
||||
|
||||
@dataclass(slots=True)
|
||||
|
@ -186,7 +189,7 @@ class PlaylistSummary(Summary):
|
|||
wrapped = "\n".join(
|
||||
textwrap.wrap(self.description, os.get_terminal_size().columns - 4 or 70),
|
||||
)
|
||||
return f"{self.num_tracks} tracks\n\nDescription:\n{wrapped}\n\nid:{self.id}"
|
||||
return f"{self.num_tracks} tracks\n\nDescription:\n{wrapped}\n\nID: {self.id}"
|
||||
|
||||
def media_type(self):
|
||||
return "playlist"
|
||||
|
@ -199,9 +202,10 @@ class PlaylistSummary(Summary):
|
|||
(item.get("publisher_metadata") and item["publisher_metadata"]["artist"])
|
||||
or item.get("owner", {}).get("name")
|
||||
or item.get("user", {}).get("username")
|
||||
or item.get("user", {}).get("name")
|
||||
or "Unknown"
|
||||
)
|
||||
num_tracks = item.get("tracks_count") or -1
|
||||
num_tracks = item.get("tracks_count") or item.get("nb_tracks") or -1
|
||||
description = item.get("description") or "No description"
|
||||
return cls(id, name, creator, num_tracks, description)
|
||||
|
||||
|
@ -235,6 +239,9 @@ class SearchResults:
|
|||
key = media_type + "s"
|
||||
for item in page[key]["items"]:
|
||||
results.append(summary_type.from_item(item))
|
||||
elif source == "deezer":
|
||||
for item in page["data"]:
|
||||
results.append(summary_type.from_item(item))
|
||||
else:
|
||||
raise NotImplementedError
|
||||
|
||||
|
|
Loading…
Reference in a new issue