KekikStream 2.5.1__tar.gz → 2.5.5__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Core/Extractor/ExtractorLoader.py +8 -14
  2. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Core/Plugin/PluginBase.py +7 -2
  3. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Core/Plugin/PluginLoader.py +13 -15
  4. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Core/Plugin/PluginManager.py +2 -2
  5. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/__init__.py +1 -1
  6. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream.egg-info/PKG-INFO +1 -1
  7. {kekikstream-2.5.1 → kekikstream-2.5.5}/PKG-INFO +1 -1
  8. {kekikstream-2.5.1 → kekikstream-2.5.5}/setup.py +1 -1
  9. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/CLI/__init__.py +0 -0
  10. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/CLI/pypi_kontrol.py +0 -0
  11. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Core/Extractor/ExtractorBase.py +0 -0
  12. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Core/Extractor/ExtractorManager.py +0 -0
  13. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Core/Extractor/ExtractorModels.py +0 -0
  14. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Core/Extractor/YTDLPCache.py +0 -0
  15. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Core/HTMLHelper.py +0 -0
  16. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Core/Media/MediaHandler.py +0 -0
  17. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Core/Media/MediaManager.py +0 -0
  18. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Core/Plugin/PluginModels.py +0 -0
  19. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Core/UI/UIManager.py +0 -0
  20. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Core/__init__.py +0 -0
  21. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Extractors/Abstream.py +0 -0
  22. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Extractors/CloseLoad.py +0 -0
  23. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Extractors/ContentX.py +0 -0
  24. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Extractors/DonilasPlay.py +0 -0
  25. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Extractors/DzenRu.py +0 -0
  26. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Extractors/ExPlay.py +0 -0
  27. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Extractors/Filemoon.py +0 -0
  28. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Extractors/HDMomPlayer.py +0 -0
  29. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Extractors/HDPlayerSystem.py +0 -0
  30. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Extractors/HotStream.py +0 -0
  31. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Extractors/JFVid.py +0 -0
  32. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Extractors/JetTv.py +0 -0
  33. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Extractors/JetV.py +0 -0
  34. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Extractors/MailRu.py +0 -0
  35. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Extractors/MixPlayHD.py +0 -0
  36. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Extractors/MixTiger.py +0 -0
  37. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Extractors/MolyStream.py +0 -0
  38. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Extractors/Odnoklassniki.py +0 -0
  39. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Extractors/PeaceMakerst.py +0 -0
  40. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Extractors/PixelDrain.py +0 -0
  41. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Extractors/PlayerFilmIzle.py +0 -0
  42. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Extractors/RapidVid.py +0 -0
  43. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Extractors/SetPlay.py +0 -0
  44. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Extractors/SetPrime.py +0 -0
  45. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Extractors/SibNet.py +0 -0
  46. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Extractors/Sobreatsesuyp.py +0 -0
  47. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Extractors/TRsTX.py +0 -0
  48. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Extractors/TauVideo.py +0 -0
  49. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Extractors/TurboImgz.py +0 -0
  50. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Extractors/TurkeyPlayer.py +0 -0
  51. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Extractors/VCTPlay.py +0 -0
  52. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Extractors/Veev.py +0 -0
  53. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Extractors/VidBiz.py +0 -0
  54. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Extractors/VidHide.py +0 -0
  55. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Extractors/VidMoly.py +0 -0
  56. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Extractors/VidMoxy.py +0 -0
  57. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Extractors/VidPapi.py +0 -0
  58. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Extractors/VideoSeyred.py +0 -0
  59. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Extractors/Videostr.py +0 -0
  60. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Extractors/Vidoza.py +0 -0
  61. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Extractors/Vtbe.py +0 -0
  62. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Extractors/YTDLP.py +0 -0
  63. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Extractors/YildizKisaFilm.py +0 -0
  64. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Extractors/Zeus.py +0 -0
  65. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Plugins/BelgeselX.py +0 -0
  66. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Plugins/DiziBox.py +0 -0
  67. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Plugins/DiziMom.py +0 -0
  68. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Plugins/DiziPal.py +0 -0
  69. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Plugins/DiziYou.py +0 -0
  70. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Plugins/Dizilla.py +0 -0
  71. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Plugins/FilmBip.py +0 -0
  72. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Plugins/FilmEkseni.py +0 -0
  73. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Plugins/FilmMakinesi.py +0 -0
  74. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Plugins/FilmModu.py +0 -0
  75. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Plugins/Filmatek.py +0 -0
  76. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Plugins/FilmciBaba.py +0 -0
  77. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Plugins/FullHDFilmizlesene.py +0 -0
  78. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Plugins/HDFilm.py +0 -0
  79. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Plugins/HDFilmCehennemi.py +0 -0
  80. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Plugins/JetFilmizle.py +0 -0
  81. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Plugins/KultFilmler.py +0 -0
  82. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Plugins/RecTV.py +0 -0
  83. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Plugins/RoketDizi.py +0 -0
  84. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Plugins/SelcukFlix.py +0 -0
  85. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Plugins/SetFilmIzle.py +0 -0
  86. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Plugins/SezonlukDizi.py +0 -0
  87. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Plugins/SineWix.py +0 -0
  88. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Plugins/Sinefy.py +0 -0
  89. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Plugins/SinemaCX.py +0 -0
  90. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Plugins/Sinezy.py +0 -0
  91. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Plugins/SuperFilmGeldi.py +0 -0
  92. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Plugins/UgurFilm.py +0 -0
  93. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Plugins/Watch32.py +0 -0
  94. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/Plugins/YabanciDizi.py +0 -0
  95. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/__main__.py +0 -0
  96. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream/requirements.txt +0 -0
  97. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream.egg-info/SOURCES.txt +0 -0
  98. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream.egg-info/dependency_links.txt +0 -0
  99. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream.egg-info/entry_points.txt +0 -0
  100. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream.egg-info/requires.txt +0 -0
  101. {kekikstream-2.5.1 → kekikstream-2.5.5}/KekikStream.egg-info/top_level.txt +0 -0
  102. {kekikstream-2.5.1 → kekikstream-2.5.5}/LICENSE +0 -0
  103. {kekikstream-2.5.1 → kekikstream-2.5.5}/MANIFEST.in +0 -0
  104. {kekikstream-2.5.1 → kekikstream-2.5.5}/README.md +0 -0
  105. {kekikstream-2.5.1 → kekikstream-2.5.5}/setup.cfg +0 -0
@@ -9,7 +9,7 @@ class ExtractorLoader:
9
9
  def __init__(self, extractors_dir: str):
10
10
  # Yerel ve global çıkarıcı dizinlerini ayarla
11
11
  self.local_extractors_dir = Path(extractors_dir)
12
- self.global_extractors_dir = Path(__file__).parent.parent.parent / extractors_dir
12
+ self.global_extractors_dir = Path(__file__).parent.parent.parent / "Extractors"
13
13
 
14
14
  # Dizin kontrolü
15
15
  if not self.local_extractors_dir.exists() and not self.global_extractors_dir.exists():
@@ -19,22 +19,16 @@ class ExtractorLoader:
19
19
  def load_all(self) -> list[ExtractorBase]:
20
20
  extractors = []
21
21
 
22
- # Eğer yerel dizinde Extractor varsa, sadece onları yükle (eklenti geliştirme modu)
23
- if self.local_extractors_dir.exists():
22
+ # Yerel Extractor'lar varsa önce onları yükle (ek/öncelikli yetenekler)
23
+ # Eğer yerel dizin global dizinle aynıysa (örn: doğrudan core'da çalışırken) tekrar yükleme yapma
24
+ if self.local_extractors_dir.exists() and self.local_extractors_dir.resolve() != self.global_extractors_dir.resolve():
24
25
  # konsol.log(f"[green][*] Yerel Extractor dizininden yükleniyor: {self.local_extractors_dir}[/green]")
25
- local_extractors = self._load_from_directory(self.local_extractors_dir)
26
- # konsol.log(f"[green]Yerel Extractor'lar: {[e.__name__ for e in local_extractors]}[/green]")
26
+ extractors.extend(self._load_from_directory(self.local_extractors_dir))
27
27
 
28
- if local_extractors:
29
- # konsol.log("[cyan][*] Yerel Extractor bulundu, global Extractor'lar atlanıyor (eklenti geliştirme modu)[/cyan]")
30
- extractors.extend(local_extractors)
31
-
32
- # Yerel dizinde Extractor yoksa, global'leri yükle
33
- if not extractors and self.global_extractors_dir.exists():
28
+ # Global Extractor'ları her zaman yükle (temel yetenekler)
29
+ if self.global_extractors_dir.exists():
34
30
  # konsol.log(f"[green][*] Global Extractor dizininden yükleniyor: {self.global_extractors_dir}[/green]")
35
- global_extractors = self._load_from_directory(self.global_extractors_dir)
36
- # konsol.log(f"[green]Global Extractor'lar: {[e.__name__ for e in global_extractors]}[/green]")
37
- extractors.extend(global_extractors)
31
+ extractors.extend(self._load_from_directory(self.global_extractors_dir))
38
32
 
39
33
  # Benzersizliği sağlama (modül adı + sınıf adı bazında)
40
34
  unique_extractors = []
@@ -25,7 +25,7 @@ class PluginBase(ABC):
25
25
  self.main_page = {url.replace(self.main_url, new_url): category for url, category in self.main_page.items()}
26
26
  self.main_url = new_url
27
27
 
28
- def __init__(self, proxy: str | dict | None = None):
28
+ def __init__(self, proxy: str | dict | None = None, ex_manager: str | ExtractorManager = "Extractors"):
29
29
  # cloudscraper - for bypassing Cloudflare
30
30
  self.cloudscraper = CloudScraper()
31
31
  if proxy:
@@ -50,7 +50,12 @@ class PluginBase(ABC):
50
50
  })
51
51
 
52
52
  self.media_handler = MediaHandler()
53
- self.ex_manager = ExtractorManager()
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)
54
59
 
55
60
  @abstractmethod
56
61
  async def get_main_page(self, page: int, url: str, category: str) -> list[MainPageResult]:
@@ -6,11 +6,12 @@ from pathlib import Path
6
6
  import os, importlib.util, traceback
7
7
 
8
8
  class PluginLoader:
9
- def __init__(self, plugins_dir: str, proxy: str | dict | None = None):
9
+ def __init__(self, plugins_dir: str, ex_manager: str | ExtractorManager = "Extractors", proxy: str | dict | None = None):
10
10
  # Yerel ve global eklenti dizinlerini ayarla
11
- self.proxy = proxy
11
+ self.ex_manager = ex_manager
12
+ self.proxy = proxy
12
13
  self.local_plugins_dir = Path(plugins_dir).resolve()
13
- self.global_plugins_dir = Path(__file__).parent.parent.parent / plugins_dir
14
+ self.global_plugins_dir = Path(__file__).parent.parent.parent / "Plugins"
14
15
 
15
16
  # Dizin kontrolü
16
17
  if not self.local_plugins_dir.exists() and not self.global_plugins_dir.exists():
@@ -18,19 +19,16 @@ class PluginLoader:
18
19
  cikis_yap(False)
19
20
 
20
21
  def load_all(self) -> dict[str, PluginBase]:
21
- plugins = {}
22
+ plugins = {}
23
+ local_dir_exists = self.local_plugins_dir.exists() and self.local_plugins_dir.resolve() != self.global_plugins_dir.resolve()
22
24
 
23
- # Eğer yerel dizinde Plugin varsa, sadece onları yükle (eklenti geliştirme modu)
24
- if self.local_plugins_dir.exists():
25
+ # Eğer yerel dizin varsa, sadece oradan yükle (eklenti geliştirme/yayınlama modu)
26
+ if local_dir_exists:
25
27
  # konsol.log(f"[green][*] Yerel Eklenti dizininden yükleniyor: {self.local_plugins_dir}[/green]")
26
- local_plugins = self._load_from_directory(self.local_plugins_dir)
27
-
28
- if local_plugins:
29
- # konsol.log("[cyan][*] Yerel Plugin bulundu, global Plugin'ler atlanıyor (eklenti geliştirme modu)[/cyan]")
30
- plugins |= local_plugins
31
-
32
- # Yerel dizinde Plugin yoksa, global'leri yükle
33
- if not plugins and self.global_plugins_dir.exists():
28
+ plugins |= self._load_from_directory(self.local_plugins_dir)
29
+
30
+ # Yerel dizin yoksa (veya core ile aynı yerse), global'leri yükle
31
+ else:
34
32
  # konsol.log(f"[green][*] Global Eklenti dizininden yükleniyor: {self.global_plugins_dir}[/green]")
35
33
  plugins |= self._load_from_directory(self.global_plugins_dir)
36
34
 
@@ -71,7 +69,7 @@ class PluginLoader:
71
69
  obj = getattr(module, attr)
72
70
  if isinstance(obj, type) and issubclass(obj, PluginBase) and obj is not PluginBase:
73
71
  # konsol.log(f"[yellow]Yüklenen sınıf\t\t: {module_name}.{obj.__name__} ({obj.__module__}.{obj.__name__})[/yellow]")
74
- return obj(proxy=self.proxy)
72
+ return obj(proxy=self.proxy, ex_manager=self.ex_manager)
75
73
 
76
74
  except Exception as hata:
77
75
  konsol.print(f"[red][!] Eklenti yüklenirken hata oluştu: {module_name}\nHata: {hata}")
@@ -4,9 +4,9 @@ from .PluginLoader import PluginLoader
4
4
  from .PluginBase import PluginBase
5
5
 
6
6
  class PluginManager:
7
- def __init__(self, plugin_dir="Plugins", proxy: str | dict | None = None):
7
+ def __init__(self, plugin_dir="Plugins", ex_manager: str | ExtractorManager = "Extractors", proxy: str | dict | None = None):
8
8
  # Eklenti yükleyiciyi başlat ve tüm eklentileri yükle
9
- self.plugin_loader = PluginLoader(plugin_dir, proxy=proxy)
9
+ self.plugin_loader = PluginLoader(plugin_dir, ex_manager=ex_manager, proxy=proxy)
10
10
  self.plugins = self.plugin_loader.load_all()
11
11
 
12
12
  def get_plugin_names(self):
@@ -7,8 +7,8 @@ from contextlib import suppress
7
7
 
8
8
  class KekikStream:
9
9
  def __init__(self):
10
- self.plugin = PluginManager()
11
10
  self.extractor = ExtractorManager()
11
+ self.plugin = PluginManager(ex_manager=self.extractor)
12
12
  self.ui = UIManager()
13
13
  self.media = MediaManager()
14
14
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: KekikStream
3
- Version: 2.5.1
3
+ Version: 2.5.5
4
4
  Summary: 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ı
5
5
  Home-page: https://github.com/keyiflerolsun/KekikStream
6
6
  Author: keyiflerolsun
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: KekikStream
3
- Version: 2.5.1
3
+ Version: 2.5.5
4
4
  Summary: 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ı
5
5
  Home-page: https://github.com/keyiflerolsun/KekikStream
6
6
  Author: keyiflerolsun
@@ -6,7 +6,7 @@ from io import open
6
6
  setup(
7
7
  # ? Genel Bilgiler
8
8
  name = "KekikStream",
9
- version = "2.5.1",
9
+ version = "2.5.5",
10
10
  url = "https://github.com/keyiflerolsun/KekikStream",
11
11
  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ı",
12
12
  keywords = ["KekikStream", "KekikAkademi", "keyiflerolsun"],
File without changes
File without changes
File without changes
File without changes