Skip to content

Commit f97153d

Browse files
committed
refactor: Allow passing ExtractorManager instances directly to plugins and update project version.
1 parent a2ca134 commit f97153d

File tree

4 files changed

+13
-8
lines changed

4 files changed

+13
-8
lines changed

KekikStream/Core/Plugin/PluginBase.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ async def url_update(self, new_url: str):
2525
self.main_page = {url.replace(self.main_url, new_url): category for url, category in self.main_page.items()}
2626
self.main_url = new_url
2727

28-
def __init__(self, proxy: str | dict | None = None, extractor_dir: str = "Extractors"):
28+
def __init__(self, proxy: str | dict | None = None, ex_manager: str | ExtractorManager = "Extractors"):
2929
# cloudscraper - for bypassing Cloudflare
3030
self.cloudscraper = CloudScraper()
3131
if proxy:
@@ -50,7 +50,12 @@ def __init__(self, proxy: str | dict | None = None, extractor_dir: str = "Extrac
5050
})
5151

5252
self.media_handler = MediaHandler()
53-
self.ex_manager = ExtractorManager(extractor_dir=extractor_dir)
53+
54+
# If an instance is passed, use it; otherwise create a new one
55+
if isinstance(ex_manager, ExtractorManager):
56+
self.ex_manager = ex_manager
57+
else:
58+
self.ex_manager = ExtractorManager(extractor_dir=ex_manager)
5459

5560
@abstractmethod
5661
async def get_main_page(self, page: int, url: str, category: str) -> list[MainPageResult]:

KekikStream/Core/Plugin/PluginLoader.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66
import os, importlib.util, traceback
77

88
class PluginLoader:
9-
def __init__(self, plugins_dir: str, proxy: str | dict | None = None, extractor_dir: str = "Extractors"):
9+
def __init__(self, plugins_dir: str, proxy: str | dict | None = None, ex_manager: str | ExtractorManager = "Extractors"):
1010
# Yerel ve global eklenti dizinlerini ayarla
1111
self.proxy = proxy
12-
self.extractor_dir = extractor_dir
12+
self.ex_manager = ex_manager
1313
self.local_plugins_dir = Path(plugins_dir).resolve()
1414
self.global_plugins_dir = Path(__file__).parent.parent.parent / "Plugins"
1515

@@ -69,7 +69,7 @@ def _load_plugin(self, directory: Path, module_name: str):
6969
obj = getattr(module, attr)
7070
if isinstance(obj, type) and issubclass(obj, PluginBase) and obj is not PluginBase:
7171
# konsol.log(f"[yellow]Yüklenen sınıf\t\t: {module_name}.{obj.__name__} ({obj.__module__}.{obj.__name__})[/yellow]")
72-
return obj(proxy=self.proxy, extractor_dir=self.extractor_dir)
72+
return obj(proxy=self.proxy, ex_manager=self.ex_manager)
7373

7474
except Exception as hata:
7575
konsol.print(f"[red][!] Eklenti yüklenirken hata oluştu: {module_name}\nHata: {hata}")

KekikStream/Core/Plugin/PluginManager.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
from .PluginBase import PluginBase
55

66
class PluginManager:
7-
def __init__(self, plugin_dir="Plugins", proxy: str | dict | None = None, extractor_dir: str = "Extractors"):
7+
def __init__(self, plugin_dir="Plugins", proxy: str | dict | None = None, ex_manager: str | ExtractorManager = "Extractors"):
88
# Eklenti yükleyiciyi başlat ve tüm eklentileri yükle
9-
self.plugin_loader = PluginLoader(plugin_dir, proxy=proxy, extractor_dir=extractor_dir)
9+
self.plugin_loader = PluginLoader(plugin_dir, proxy=proxy, ex_manager=ex_manager)
1010
self.plugins = self.plugin_loader.load_all()
1111

1212
def get_plugin_names(self):

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
setup(
77
# ? Genel Bilgiler
88
name = "KekikStream",
9-
version = "2.5.3",
9+
version = "2.5.4",
1010
url = "https://github.com/keyiflerolsun/KekikStream",
1111
description = "terminal üzerinden medya içeriği aramanızı ve VLC/MPV gibi popüler medya oynatıcılar aracılığıyla doğrudan izlemenizi sağlayan modüler ve genişletilebilir bir bıdı bıdı",
1212
keywords = ["KekikStream", "KekikAkademi", "keyiflerolsun"],

0 commit comments

Comments
 (0)