Canvia estil de la playlist i suggerir temes coocurrents

This commit is contained in:
marc
2025-10-25 00:21:05 +02:00
parent 1909af9107
commit 98c009ba53
7 changed files with 96 additions and 1175 deletions

View File

@@ -3,6 +3,7 @@ from fastapi.responses import HTMLResponse
from folkugat_web.model.pagines import Pages
from folkugat_web.services import playlists as playlists_service
from folkugat_web.services import sessions as sessions_service
from folkugat_web.services.temes import query as query_service
from folkugat_web.services.temes import search as search_service
from folkugat_web.templates import templates
@@ -126,13 +127,37 @@ def busca_tema(
entry_id: int,
query: str,
):
results = search_service.busca_temes(
query=query,
properties=[],
hidden=True,
limit=4,
offset=0,
)
n_results = 4
suggestions = []
if not query:
# If there is no query, suggest tunes commonly played together
set_entry = playlists_service.get_set(
session_id=session_id,
set_id=set_id,
)
if set_entry:
tema_ids = {tema_in_set.tema_id
for tema_in_set in set_entry.temes
if tema_in_set and tema_in_set.tema_id is not None}
commonly_played_tema_ids = {
cpt.tema.id
for tema_id in tema_ids
for cpt in playlists_service.get_commonly_played_temes(tema_id)
if cpt.tema.id is not None
} - tema_ids
suggestions = query_service.get_temes_by_ids(
tema_ids=list(commonly_played_tema_ids)
)
if len(suggestions) >= n_results:
suggestions = suggestions[:n_results]
elif not suggestions:
suggestions = search_service.busca_temes(
query=query,
properties=[],
hidden=True,
limit=n_results,
offset=0,
)
return templates.TemplateResponse(
"fragments/sessio/tema_results.html",
{
@@ -140,7 +165,7 @@ def busca_tema(
"session_id": session_id,
"set_id": set_id,
"entry_id": entry_id,
"results": results,
"results": suggestions,
"query": query,
}
)