diff --git a/kodi/plugin.video.mediafusion/addon.xml b/kodi/plugin.video.mediafusion/addon.xml index 5f373e4..597a06d 100644 --- a/kodi/plugin.video.mediafusion/addon.xml +++ b/kodi/plugin.video.mediafusion/addon.xml @@ -4,7 +4,6 @@ - diff --git a/kodi/plugin.video.mediafusion/lib/router.py b/kodi/plugin.video.mediafusion/lib/router.py index 585b7e1..df51077 100644 --- a/kodi/plugin.video.mediafusion/lib/router.py +++ b/kodi/plugin.video.mediafusion/lib/router.py @@ -15,7 +15,6 @@ from .utils import ( log, convert_info_hash_to_magnet, is_elementum_installed_and_enabled, - remove_cache, ) @@ -100,14 +99,6 @@ def process_videos(videos, action, catalog_type, catalog_id): } ) - li.addContextMenuItems( - [ - ( - "Refresh API", - f"Container.Refresh({build_url(action, catalog_type=catalog_type, catalog_id=catalog_id, force_refresh=1)})", - ), - ] - ) xbmcplugin.addDirectoryItem( handle=ADDON_HANDLE, url=url, listitem=li, isFolder=True ) @@ -120,8 +111,7 @@ def list_catalog(params): BASE_URL, f"/{SECRET_STR}/catalog/{params['catalog_type']}/{params['catalog_id']}/skip={skip}.json", ) - force_refresh = params.get("force_refresh", False) - response = fetch_data(url, force_refresh) + response = fetch_data(url) if not response: return @@ -130,7 +120,6 @@ def list_catalog(params): xbmcgui.Dialog().notification( "MediaFusion", "No videos available", xbmcgui.NOTIFICATION_ERROR ) - remove_cache(url) return content_type = "movies" if params["catalog_type"] == "movie" else "tvshows" @@ -162,8 +151,7 @@ def search_catalog(params): BASE_URL, f"/{SECRET_STR}/catalog/{params['catalog_type']}/{params['catalog_id']}/search={search_query}.json", ) - force_refresh = params.get("force_refresh", False) - response = fetch_data(url, force_refresh) + response = fetch_data(url) if not response: return @@ -172,7 +160,6 @@ def search_catalog(params): xbmcgui.Dialog().notification( "MediaFusion", "No results found", xbmcgui.NOTIFICATION_ERROR ) - remove_cache(url) return content_type = "movies" if params["catalog_type"] == "movie" else "tvshows" @@ -189,8 +176,7 @@ def list_seasons(params): BASE_URL, f"/{SECRET_STR}/meta/{params['catalog_type']}/{params['video_id']}.json", ) - force_refresh = params.get("force_refresh", False) - response = fetch_data(url, force_refresh) + response = fetch_data(url) if not response: return @@ -239,14 +225,6 @@ def list_seasons(params): } ) - li.addContextMenuItems( - [ - ( - "Refresh API", - f"Container.Refresh({build_url('list_seasons', catalog_type=params['catalog_type'], video_id=params['video_id'], force_refresh=1)})", - ), - ] - ) xbmcplugin.addDirectoryItem( handle=ADDON_HANDLE, url=url, listitem=li, isFolder=True ) @@ -259,8 +237,7 @@ def list_episodes(params): BASE_URL, f"/{SECRET_STR}/meta/{params['catalog_type']}/{params['video_id']}.json", ) - force_refresh = params.get("force_refresh", False) - response = fetch_data(url, force_refresh) + response = fetch_data(url) if not response: return @@ -309,15 +286,6 @@ def list_episodes(params): } ) - li.addContextMenuItems( - [ - ( - "Refresh API", - f"Container.Refresh({build_url('list_episodes', catalog_type=params['catalog_type'], video_id=params['video_id'], season={video['season']}, force_refresh=1)})", - ), - ] - ) - xbmcplugin.addDirectoryItem( handle=ADDON_HANDLE, url=url, listitem=li, isFolder=True ) @@ -330,8 +298,7 @@ def get_streams(params): BASE_URL, f"/{SECRET_STR}/stream/{params['catalog_type']}/{params['video_id']}.json", ) - force_refresh = params.get("force_refresh", False) - response = fetch_data(url, force_refresh) + response = fetch_data(url) if not response: return @@ -403,15 +370,6 @@ def get_streams(params): else: continue - li.addContextMenuItems( - [ - ( - "Refresh API", - f"Container.Refresh({build_url('get_streams', catalog_type=params['catalog_type'], video_id=params['video_id'], force_refresh=1)})", - ), - ] - ) - xbmcplugin.addDirectoryItem( handle=ADDON_HANDLE, url=build_url( diff --git a/kodi/plugin.video.mediafusion/lib/utils.py b/kodi/plugin.video.mediafusion/lib/utils.py index 328cd0e..603299d 100644 --- a/kodi/plugin.video.mediafusion/lib/utils.py +++ b/kodi/plugin.video.mediafusion/lib/utils.py @@ -1,13 +1,10 @@ -import sqlite3 import sys from urllib import parse import requests -import requests_cache import xbmc import xbmcaddon import xbmcgui -import xbmcvfs ADDON_HANDLE = int(sys.argv[1]) ADDON = xbmcaddon.Addon() @@ -30,26 +27,11 @@ if not SECRET_STR: sys.exit(0) -def remove_cache(url): - session = get_request_session() - session.cache.delete_url(url) - - -def fetch_data(url, force_refresh=False): - session = get_request_session() +def fetch_data(url): + session = requests.session() try: - if force_refresh: - with session.cache_disabled(): - response = session.get(url) - else: - response = session.get(url) - xbmc.log(f"Response from Caching: {response.from_cache}.", xbmc.LOGINFO) - + response = session.get(url) response.raise_for_status() - if "Cache-Control" in response.headers: - cache_control = response.headers["Cache-Control"] - if "no-store" in cache_control or "no-cache" in cache_control: - remove_cache(response.url) return response.json() except requests.ConnectionError as e: xbmc.log(f"Connection failed: {e}", xbmc.LOGERROR) @@ -117,35 +99,3 @@ def is_elementum_installed_and_enabled(): return True except Exception: return False - - -def get_request_session(): - # Initialize requests_cache with CachedSession - cache_file = xbmcvfs.translatePath( - f"special://profile/addon_data/{ADDON_ID}/cache.sqlite" - ) - try: - session = requests_cache.CachedSession( - cache_name=cache_file, backend="sqlite", cache_control=True - ) - except sqlite3.OperationalError as e: - xbmc.log(f"Failed to setup cache: {e}", xbmc.LOGERROR) - try: - fallback_cache_file = xbmcvfs.translatePath( - f"special://temp/{ADDON_ID}_cache.sqlite" - ) - session = requests_cache.CachedSession( - cache_name=fallback_cache_file, backend="sqlite", cache_control=True - ) - xbmc.log( - f"Using fallback cache location: {fallback_cache_file}", xbmc.LOGINFO - ) - except sqlite3.OperationalError: - xbmc.log("Fallback to in-memory cache", xbmc.LOGWARNING) - session = requests_cache.CachedSession( - cache_name="mediafusion_request", backend="memory", cache_control=True - ) - xbmcgui.Dialog().notification( - "MediaFusion", f"Cache setup issue: {str(e)}", xbmcgui.NOTIFICATION_WARNING - ) - return session