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