KekikStream 2.0.1__tar.gz → 2.0.2__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 (88) hide show
  1. kekikstream-2.0.2/KekikStream/Core/Extractor/YTDLPCache.py +35 -0
  2. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Core/__init__.py +1 -0
  3. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/YTDLP.py +14 -9
  4. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream.egg-info/PKG-INFO +1 -1
  5. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream.egg-info/SOURCES.txt +1 -0
  6. {kekikstream-2.0.1 → kekikstream-2.0.2}/PKG-INFO +1 -1
  7. {kekikstream-2.0.1 → kekikstream-2.0.2}/setup.py +1 -1
  8. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/CLI/__init__.py +0 -0
  9. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/CLI/pypi_kontrol.py +0 -0
  10. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Core/Extractor/ExtractorBase.py +0 -0
  11. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Core/Extractor/ExtractorLoader.py +0 -0
  12. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Core/Extractor/ExtractorManager.py +0 -0
  13. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Core/Extractor/ExtractorModels.py +0 -0
  14. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Core/Media/MediaHandler.py +0 -0
  15. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Core/Media/MediaManager.py +0 -0
  16. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Core/Plugin/PluginBase.py +0 -0
  17. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Core/Plugin/PluginLoader.py +0 -0
  18. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Core/Plugin/PluginManager.py +0 -0
  19. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Core/Plugin/PluginModels.py +0 -0
  20. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Core/UI/UIManager.py +0 -0
  21. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/CloseLoad.py +0 -0
  22. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/ContentX.py +0 -0
  23. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/ContentX_.py +0 -0
  24. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/DzenRu.py +0 -0
  25. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/ExPlay.py +0 -0
  26. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/FirePlayer.py +0 -0
  27. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/HDPlayerSystem.py +0 -0
  28. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/JetTv.py +0 -0
  29. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/MailRu.py +0 -0
  30. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/MixPlayHD.py +0 -0
  31. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/MixTiger.py +0 -0
  32. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/MolyStream.py +0 -0
  33. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/Odnoklassniki.py +0 -0
  34. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/Odnoklassniki_.py +0 -0
  35. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/PeaceMakerst.py +0 -0
  36. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/PeaceMakerst_.py +0 -0
  37. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/PixelDrain.py +0 -0
  38. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/PlayerFilmIzle.py +0 -0
  39. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/RapidVid.py +0 -0
  40. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/RapidVid_.py +0 -0
  41. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/SetPlay.py +0 -0
  42. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/SetPrime.py +0 -0
  43. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/SibNet.py +0 -0
  44. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/Sobreatsesuyp.py +0 -0
  45. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/TRsTX.py +0 -0
  46. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/TauVideo.py +0 -0
  47. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/TurboImgz.py +0 -0
  48. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/TurkeyPlayer.py +0 -0
  49. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/VidHide.py +0 -0
  50. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/VidMoly.py +0 -0
  51. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/VidMoly_.py +0 -0
  52. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/VidMoxy.py +0 -0
  53. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/VidPapi.py +0 -0
  54. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/VideoSeyred.py +0 -0
  55. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/YildizKisaFilm.py +0 -0
  56. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Plugins/DiziBox.py +0 -0
  57. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Plugins/DiziPal.py +0 -0
  58. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Plugins/DiziYou.py +0 -0
  59. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Plugins/Dizilla.py +0 -0
  60. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Plugins/FilmBip.py +0 -0
  61. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Plugins/FilmMakinesi.py +0 -0
  62. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Plugins/FilmModu.py +0 -0
  63. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Plugins/FullHDFilm.py +0 -0
  64. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Plugins/FullHDFilmizlesene.py +0 -0
  65. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Plugins/HDFilmCehennemi.py +0 -0
  66. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Plugins/JetFilmizle.py +0 -0
  67. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Plugins/KultFilmler.py +0 -0
  68. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Plugins/RecTV.py +0 -0
  69. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Plugins/RoketDizi.py +0 -0
  70. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Plugins/SelcukFlix.py +0 -0
  71. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Plugins/SezonlukDizi.py +0 -0
  72. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Plugins/SineWix.py +0 -0
  73. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Plugins/Sinefy.py +0 -0
  74. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Plugins/SinemaCX.py +0 -0
  75. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Plugins/Sinezy.py +0 -0
  76. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Plugins/SuperFilmGeldi.py +0 -0
  77. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Plugins/UgurFilm.py +0 -0
  78. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/__init__.py +0 -0
  79. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/__main__.py +0 -0
  80. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/requirements.txt +0 -0
  81. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream.egg-info/dependency_links.txt +0 -0
  82. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream.egg-info/entry_points.txt +0 -0
  83. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream.egg-info/requires.txt +0 -0
  84. {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream.egg-info/top_level.txt +0 -0
  85. {kekikstream-2.0.1 → kekikstream-2.0.2}/LICENSE +0 -0
  86. {kekikstream-2.0.1 → kekikstream-2.0.2}/MANIFEST.in +0 -0
  87. {kekikstream-2.0.1 → kekikstream-2.0.2}/README.md +0 -0
  88. {kekikstream-2.0.1 → kekikstream-2.0.2}/setup.cfg +0 -0
@@ -0,0 +1,35 @@
1
+ # Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
2
+
3
+ from Kekik.cli import konsol
4
+ from yt_dlp.extractor import gen_extractors
5
+
6
+ # Global cache (module-level singleton)
7
+ _YTDLP_EXTRACTORS_CACHE = None
8
+ _CACHE_INITIALIZED = False
9
+
10
+ def get_ytdlp_extractors() -> list:
11
+ """
12
+ yt-dlp extractorlarını cache'le ve döndür
13
+
14
+ Returns:
15
+ list: yt-dlp extractor sınıfları
16
+ """
17
+ global _YTDLP_EXTRACTORS_CACHE, _CACHE_INITIALIZED
18
+
19
+ if _CACHE_INITIALIZED:
20
+ return _YTDLP_EXTRACTORS_CACHE
21
+
22
+ try:
23
+ extractors = list(gen_extractors())
24
+ extractors = [ie for ie in extractors if ie.ie_key() != 'Generic']
25
+
26
+ _YTDLP_EXTRACTORS_CACHE = extractors
27
+ _CACHE_INITIALIZED = True
28
+
29
+ return extractors
30
+
31
+ except Exception as e:
32
+ konsol.log(f"[red][⚠] yt-dlp extractor cache hatası: {e}[/red]")
33
+ _YTDLP_EXTRACTORS_CACHE = []
34
+ _CACHE_INITIALIZED = True
35
+ return []
@@ -13,6 +13,7 @@ from .Extractor.ExtractorManager import ExtractorManager
13
13
  from .Extractor.ExtractorBase import ExtractorBase
14
14
  from .Extractor.ExtractorLoader import ExtractorLoader
15
15
  from .Extractor.ExtractorModels import ExtractResult, Subtitle
16
+ from .Extractor.YTDLPCache import get_ytdlp_extractors
16
17
 
17
18
  from .Media.MediaManager import MediaManager
18
19
  from .Media.MediaHandler import MediaHandler
@@ -1,8 +1,7 @@
1
1
  # Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
2
2
 
3
- from KekikStream.Core import ExtractorBase, ExtractResult, Subtitle
3
+ from KekikStream.Core import ExtractorBase, ExtractResult, Subtitle, get_ytdlp_extractors
4
4
  from urllib.parse import urlparse
5
- from yt_dlp.extractor import gen_extractors
6
5
  import yt_dlp, re, sys, os
7
6
 
8
7
  class YTDLP(ExtractorBase):
@@ -13,20 +12,22 @@ class YTDLP(ExtractorBase):
13
12
 
14
13
  @classmethod
15
14
  def _init_fast_domain_regex(cls):
15
+ """
16
+ Fast domain regex'i initialize et
17
+ """
16
18
  if cls._FAST_DOMAIN_RE is not None:
17
19
  return
18
20
 
19
21
  domains = set()
20
22
 
23
+ # Merkezi cache'den extractorları al
24
+ extractors = get_ytdlp_extractors()
25
+
21
26
  # yt-dlp extractor'larının _VALID_URL regex'lerinden domain yakala
22
27
  # Regex metinlerinde domainler genelde "\." şeklinde geçer.
23
28
  domain_pat = re.compile(r"(?:[a-z0-9-]+\\\.)+[a-z]{2,}", re.IGNORECASE)
24
29
 
25
- for ie in gen_extractors():
26
- # Generic'i fast-path'e dahil etmiyoruz
27
- if getattr(ie, "IE_NAME", "").lower() == "generic":
28
- continue
29
-
30
+ for ie in extractors:
30
31
  valid = getattr(ie, "_VALID_URL", None)
31
32
  if not valid or not isinstance(valid, str):
32
33
  continue
@@ -89,7 +90,9 @@ class YTDLP(ExtractorBase):
89
90
  "no_warnings" : True, # Uyarı mesajları yok
90
91
  "extract_flat" : True, # Minimal işlem
91
92
  "no_check_certificates" : True,
92
- "ignoreerrors" : True # Hataları yoksay
93
+ "ignoreerrors" : True, # Hataları yoksay
94
+ "socket_timeout" : 3,
95
+ "retries" : 1
93
96
  }
94
97
 
95
98
  with yt_dlp.YoutubeDL(ydl_opts) as ydl:
@@ -116,7 +119,9 @@ class YTDLP(ExtractorBase):
116
119
  "no_warnings" : True,
117
120
  "extract_flat" : False, # Tam bilgi al
118
121
  "format" : "best", # En iyi kalite
119
- "no_check_certificates" : True
122
+ "no_check_certificates" : True,
123
+ "socket_timeout" : 3,
124
+ "retries" : 1
120
125
  }
121
126
 
122
127
  # Referer varsa header olarak ekle
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: KekikStream
3
- Version: 2.0.1
3
+ Version: 2.0.2
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
@@ -18,6 +18,7 @@ KekikStream/Core/Extractor/ExtractorBase.py
18
18
  KekikStream/Core/Extractor/ExtractorLoader.py
19
19
  KekikStream/Core/Extractor/ExtractorManager.py
20
20
  KekikStream/Core/Extractor/ExtractorModels.py
21
+ KekikStream/Core/Extractor/YTDLPCache.py
21
22
  KekikStream/Core/Media/MediaHandler.py
22
23
  KekikStream/Core/Media/MediaManager.py
23
24
  KekikStream/Core/Plugin/PluginBase.py
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: KekikStream
3
- Version: 2.0.1
3
+ Version: 2.0.2
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.0.1",
9
+ version = "2.0.2",
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