Přidání načítání a zobrazení filmových kolekcí z JSON souborů, včetně vylepšeného logování a chybové správy.
This commit is contained in:
83
galdPl.py
83
galdPl.py
@@ -723,6 +723,8 @@ def mojedb(params):
|
||||
xbmcplugin.setPluginCategory(_handle, _addon.getAddonInfo('name') + " \\ " + _addon.getLocalizedString(30220))
|
||||
token = revalidate()
|
||||
updateListing=False
|
||||
series_files = []
|
||||
movies_collections = []
|
||||
|
||||
try:
|
||||
# Načti seznam dostupných seriálů a filmů
|
||||
@@ -732,7 +734,6 @@ def mojedb(params):
|
||||
xbmc.log(f"Debug: Načítám seriály z: {series_dir}", xbmc.LOGDEBUG)
|
||||
|
||||
# Načti seznam souborů seriálů
|
||||
series_files = []
|
||||
xbmc.log(f"Debug: Kontroluji existenci složky: {series_dir}", xbmc.LOGDEBUG)
|
||||
|
||||
# Zkusíme načíst soubory pomocí os.path
|
||||
@@ -755,6 +756,35 @@ def mojedb(params):
|
||||
for file in series_files:
|
||||
xbmc.log(f"Debug: Seriál soubor: {file}", xbmc.LOGDEBUG)
|
||||
|
||||
xbmc.log(f"Debug: Načítám filmy z: {movies_dir}", xbmc.LOGDEBUG)
|
||||
movies_files = []
|
||||
try:
|
||||
if os.path.exists(movies_dir):
|
||||
files = os.listdir(movies_dir)
|
||||
xbmc.log(f"Debug: Úspěšně načteno {len(files)} souborů z {movies_dir}", xbmc.LOGDEBUG)
|
||||
for file in files:
|
||||
xbmc.log(f"Debug: Kontroluji filmový soubor: {file}", xbmc.LOGDEBUG)
|
||||
if file.endswith('.json'):
|
||||
movies_files.append(file)
|
||||
xbmc.log(f"Debug: Přidán JSON soubor filmů: {file}", xbmc.LOGDEBUG)
|
||||
else:
|
||||
xbmc.log(f"Debug: Složka neexistuje (os.path): {movies_dir}", xbmc.LOGDEBUG)
|
||||
except Exception as e:
|
||||
xbmc.log(f"Debug: Chyba při načítání složky {movies_dir}: {str(e)}", xbmc.LOGDEBUG)
|
||||
|
||||
xbmc.log(f"Debug: Nalezeno {len(movies_files)} JSON souborů filmů", xbmc.LOGDEBUG)
|
||||
for file in movies_files:
|
||||
try:
|
||||
movie_path = xbmcvfs.translatePath(os.path.join(_addon.getAddonInfo('path'), 'resources', 'movies', file))
|
||||
xbmc.log(f"Debug: Načítám filmový katalog: {file}", xbmc.LOGDEBUG)
|
||||
with xbmcvfs.File(movie_path, 'r') as f:
|
||||
content = f.read()
|
||||
movie_data = json.loads(content)
|
||||
movies_collections.append({'file': file, 'data': movie_data})
|
||||
xbmc.log(f"Debug: Přidán katalog filmů: {movie_data.get('title', file)}", xbmc.LOGDEBUG)
|
||||
except Exception as e:
|
||||
xbmc.log(f"Chyba při načítání filmového souboru {file}: {str(e)}", xbmc.LOGERROR)
|
||||
|
||||
except Exception as e:
|
||||
xbmc.log(f"Chyba při načítání databáze: {str(e)}", xbmc.LOGERROR)
|
||||
popinfo(f"Chyba při načítání databáze: {str(e)}", icon=xbmcgui.NOTIFICATION_ERROR, sound=True)
|
||||
@@ -903,21 +933,56 @@ def mojedb(params):
|
||||
offset = 0
|
||||
dosearch(token, what, category, sort, limit, offset, 'search')
|
||||
|
||||
# Výpis filmů
|
||||
elif params.get('type') == 'movies':
|
||||
for idx, movie in enumerate(dbdata.get('movies', [])):
|
||||
listitem = xbmcgui.ListItem(label=movie['title'])
|
||||
# Přehled filmových kolekcí
|
||||
elif params.get('type') == 'movies' and params.get('collection_idx') is None and params.get('movie_idx') is None:
|
||||
xbmc.log(f"Debug: Zobrazuji filmové kolekce, nalezeno {len(movies_collections)} souborů", xbmc.LOGDEBUG)
|
||||
for idx, collection in enumerate(movies_collections):
|
||||
data = collection['data']
|
||||
title = data.get('title') or collection['file'].replace('.json', '').replace('-', ' ').title()
|
||||
xbmc.log(f"Debug: Přidávám kolekci filmů: {title}", xbmc.LOGDEBUG)
|
||||
listitem = xbmcgui.ListItem(label=title)
|
||||
listitem.setArt({'icon': data.get('icon', 'DefaultMovies.png')})
|
||||
xbmcplugin.addDirectoryItem(_handle, get_url(action='mojedb', type='movies', collection_idx=idx), listitem, True)
|
||||
|
||||
# Výpis filmů v kolekci
|
||||
elif params.get('type') == 'movies' and params.get('collection_idx') is not None and params.get('movie_idx') is None:
|
||||
try:
|
||||
collection_idx = int(params['collection_idx'])
|
||||
collection = movies_collections[collection_idx]
|
||||
movies = collection['data'].get('movies', [])
|
||||
xbmc.log(f"Debug: Zobrazuji filmy v kolekci {collection['file']} (počet {len(movies)})", xbmc.LOGDEBUG)
|
||||
for idx, movie in enumerate(movies):
|
||||
listitem = xbmcgui.ListItem(label=movie.get('title', f'Film {idx + 1}'))
|
||||
listitem.setArt({'icon': movie.get('icon', 'DefaultMovies.png')})
|
||||
xbmcplugin.addDirectoryItem(_handle, get_url(action='mojedb', type='movies', movie_idx=idx), listitem, True)
|
||||
xbmcplugin.addDirectoryItem(
|
||||
_handle,
|
||||
get_url(action='mojedb', type='movies', collection_idx=collection_idx, movie_idx=idx),
|
||||
listitem,
|
||||
True
|
||||
)
|
||||
except (ValueError, IndexError) as e:
|
||||
xbmc.log(f"Chyba při zobrazení filmové kolekce: {str(e)}", xbmc.LOGERROR)
|
||||
popinfo(f"Chyba při zobrazení filmové kolekce: {str(e)}", icon=xbmcgui.NOTIFICATION_ERROR, sound=True)
|
||||
|
||||
# Vyhledání konkrétního filmu
|
||||
elif params.get('type') == 'movies' and params.get('movie_idx') is not None:
|
||||
movie = dbdata['movies'][int(params['movie_idx'])]
|
||||
elif params.get('type') == 'movies' and params.get('collection_idx') is not None and params.get('movie_idx') is not None:
|
||||
try:
|
||||
collection_idx = int(params['collection_idx'])
|
||||
movie_idx = int(params['movie_idx'])
|
||||
collection = movies_collections[collection_idx]
|
||||
movie_list = collection['data'].get('movies', [])
|
||||
movie = movie_list[movie_idx]
|
||||
except (ValueError, IndexError) as e:
|
||||
xbmc.log(f"Chyba při načítání filmu: {str(e)}", xbmc.LOGERROR)
|
||||
popinfo(f"Chyba při načítání filmu: {str(e)}", icon=xbmcgui.NOTIFICATION_ERROR, sound=True)
|
||||
xbmcplugin.endOfDirectory(_handle, updateListing=updateListing)
|
||||
return
|
||||
collection_icon = collection['data'].get('icon', 'DefaultMovies.png')
|
||||
if 'ident' in movie:
|
||||
if verify_ident(movie['ident'], token):
|
||||
# Vytvoř přehrávatelnou položku
|
||||
listitem = xbmcgui.ListItem(label=movie['title'])
|
||||
listitem.setArt({'icon': movie.get('icon', 'DefaultMovies.png')})
|
||||
listitem.setArt({'icon': movie.get('icon', collection_icon)})
|
||||
listitem.setInfo('video', {'title': movie['title']})
|
||||
listitem.setProperty('IsPlayable', 'true')
|
||||
xbmcplugin.addDirectoryItem(_handle, get_url(action='play', ident=movie['ident'], name=movie['title']), listitem, False)
|
||||
|
||||
Reference in New Issue
Block a user