kemono2/src/pages/artists.py
2024-11-26 00:11:49 +01:00

36 lines
1.1 KiB
Python

from src.lib.post import (
get_all_posts_by_artist,
)
from src.pages.artists_types import (
ArtistDisplayData,
)
from src.types.paysites import Paysite, Paysites
from src.utils.utils import offset_list, sort_dict_list_by, take
def do_artist_post_search(artist_id, service, search, o, limit):
posts = get_all_posts_by_artist(artist_id, service)
search = search.lower()
matches = []
for post in posts:
if (
search in post["content"].lower()
or search in post["title"].lower()
or search in " ".join(post["tags"] or []).lower()
):
matches.append(post)
matches = sort_dict_list_by(matches, "published", True)
return take(limit, offset_list(o, matches)), len(matches)
def make_artist_display_data(artist: dict) -> ArtistDisplayData:
service_name: str = artist["service"]
pay_site: Paysite | None = getattr(Paysites, service_name, None)
if pay_site:
return ArtistDisplayData(service=pay_site.title, href=pay_site.user.profile(artist))
raise Exception("Service not found in Paysites")