14.10.2026, 22:36
@waladir: dvě chyby, které jsem našel ve 2.3.2 (stejné i ve 2.2.6):
1) Vyhledávání vrací jen TV kanály. page_search_display v categories.py bere jen první karusel záložky „Vše“ (block['layout']['blocks'][0]['carousels'][0]), což je řádek „TV kanály“. Filmy, pořady, TV program a sport z dalších karuselů se zahodí. Např. „Love Cast“ vrátí jen FILMBOX+ love&crime a Prima LOVE HD, přitom API pošle 135 výsledků.
Oprava: projít všechny karusely a vyhodit duplicity (stejný pořad je v několika řádcích):
2) Podcasty (contentType podcast) hlásí „Neznámý contentType“. Mají ale sezóny a díly stejně jako pořad, takže stačí v parse_tiles místo if contentType in ['show']: dát if contentType in ['show', 'podcast']:. Pak jde podcast otevřít i z Mého seznamu a díly se přehrají.
Ještě drobnost: po přepnutí profilu v Nastavení Oneplay – Profily se změna projeví až po vypršení session (token je vázaný na profil, platí 4 h), takže Můj seznam ukazuje dál starý profil. Pomohlo by v set_active_profile zavolat Session().remove_session().
Díky za doplněk!
1) Vyhledávání vrací jen TV kanály. page_search_display v categories.py bere jen první karusel záložky „Vše“ (block['layout']['blocks'][0]['carousels'][0]), což je řádek „TV kanály“. Filmy, pořady, TV program a sport z dalších karuselů se zahodí. Např. „Love Cast“ vrátí jen FILMBOX+ love&crime a Prima LOVE HD, přitom API pošle 135 výsledků.
Oprava: projít všechny karusely a vyhodit duplicity (stejný pořad je v několika řádcích):
Kód:
if block['schema'] == 'TabBlock' and 'layout' in block and 'blocks' in block['layout']:
seen = set()
for layout_block in block['layout']['blocks']:
for carousel in layout_block.get('carousels', []):
tiles = []
for tile in carousel.get('tiles', []):
key = json.dumps(tile.get('action', {}).get('params', {}).get('payload'), sort_keys=True)
if key not in seen:
seen.add(key)
tiles.append(tile)
parse_tiles(None, dict(carousel, tiles=tiles), 1)2) Podcasty (contentType podcast) hlásí „Neznámý contentType“. Mají ale sezóny a díly stejně jako pořad, takže stačí v parse_tiles místo if contentType in ['show']: dát if contentType in ['show', 'podcast']:. Pak jde podcast otevřít i z Mého seznamu a díly se přehrají.
Ještě drobnost: po přepnutí profilu v Nastavení Oneplay – Profily se změna projeví až po vypršení session (token je vázaný na profil, platí 4 h), takže Můj seznam ukazuje dál starý profil. Pomohlo by v set_active_profile zavolat Session().remove_session().
Díky za doplněk!
