df
Some checks failed
smoke-mm / Install & smoke test mm --help (push) Has been cancelled
Some checks failed
smoke-mm / Install & smoke test mm --help (push) Has been cancelled
This commit is contained in:
@@ -38,7 +38,9 @@ class Bandcamp(Provider):
|
||||
# Bandcamp discography lives under /music.
|
||||
return base.rstrip("/") + "/music"
|
||||
|
||||
def _scrape_artist_page(self, page: Any, artist_url: str, limit: int = 50) -> List[SearchResult]:
|
||||
def _scrape_artist_page(
|
||||
self, page: Any, artist_url: str, limit: int = 50
|
||||
) -> List[SearchResult]:
|
||||
"""Scrape an artist page for albums/tracks (discography)."""
|
||||
base = self._base_url(artist_url)
|
||||
discography_url = self._discography_url(artist_url)
|
||||
@@ -74,13 +76,15 @@ class Bandcamp(Provider):
|
||||
target = base.rstrip("/") + "/" + href
|
||||
|
||||
title_node = item.query_selector("p.title") or item.query_selector(".title")
|
||||
title = (title_node.inner_text().strip() if title_node else "")
|
||||
title = title_node.inner_text().strip() if title_node else ""
|
||||
if title:
|
||||
title = " ".join(title.split())
|
||||
if not title:
|
||||
title = target.rsplit("/", 1)[-1]
|
||||
|
||||
kind = "album" if "/album/" in target else ("track" if "/track/" in target else "item")
|
||||
kind = (
|
||||
"album" if "/album/" in target else ("track" if "/track/" in target else "item")
|
||||
)
|
||||
|
||||
results.append(
|
||||
SearchResult(
|
||||
@@ -107,7 +111,9 @@ class Bandcamp(Provider):
|
||||
|
||||
return results
|
||||
|
||||
def selector(self, selected_items: List[Any], *, ctx: Any, stage_is_last: bool = True, **_kwargs: Any) -> bool:
|
||||
def selector(
|
||||
self, selected_items: List[Any], *, ctx: Any, stage_is_last: bool = True, **_kwargs: Any
|
||||
) -> bool:
|
||||
"""Handle Bandcamp `@N` selection.
|
||||
|
||||
If the selected item is an ARTIST result, selecting it auto-expands into
|
||||
@@ -155,12 +161,16 @@ class Bandcamp(Provider):
|
||||
continue
|
||||
|
||||
title = str(payload.get("title") or "").strip()
|
||||
url_val = str(payload.get("url") or payload.get("path") or meta.get("url") or "").strip()
|
||||
url_val = str(
|
||||
payload.get("url") or payload.get("path") or meta.get("url") or ""
|
||||
).strip()
|
||||
base = self._base_url(url_val)
|
||||
if not base:
|
||||
continue
|
||||
|
||||
chosen.append({"title": title, "url": base, "location": str(meta.get("artist") or "").strip()})
|
||||
chosen.append(
|
||||
{"title": title, "url": base, "location": str(meta.get("artist") or "").strip()}
|
||||
)
|
||||
|
||||
if not chosen:
|
||||
return False
|
||||
@@ -198,7 +208,13 @@ class Bandcamp(Provider):
|
||||
try:
|
||||
results_payload.append(r.to_dict())
|
||||
except Exception:
|
||||
results_payload.append({"table": "bandcamp", "title": getattr(r, "title", ""), "path": getattr(r, "path", "")})
|
||||
results_payload.append(
|
||||
{
|
||||
"table": "bandcamp",
|
||||
"title": getattr(r, "title", ""),
|
||||
"path": getattr(r, "path", ""),
|
||||
}
|
||||
)
|
||||
|
||||
try:
|
||||
ctx.set_last_result_table(table, results_payload)
|
||||
|
||||
Reference in New Issue
Block a user