KekikStream 2.1.0__tar.gz → 2.1.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 (86) hide show
  1. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Extractors/MixTiger.py +5 -5
  2. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Plugins/FilmMakinesi.py +15 -7
  3. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Plugins/HDFilmCehennemi.py +2 -21
  4. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream.egg-info/PKG-INFO +1 -1
  5. {kekikstream-2.1.0 → kekikstream-2.1.2}/PKG-INFO +1 -1
  6. {kekikstream-2.1.0 → kekikstream-2.1.2}/setup.py +1 -1
  7. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/CLI/__init__.py +0 -0
  8. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/CLI/pypi_kontrol.py +0 -0
  9. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Core/Extractor/ExtractorBase.py +0 -0
  10. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Core/Extractor/ExtractorLoader.py +0 -0
  11. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Core/Extractor/ExtractorManager.py +0 -0
  12. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Core/Extractor/ExtractorModels.py +0 -0
  13. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Core/Extractor/YTDLPCache.py +0 -0
  14. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Core/Media/MediaHandler.py +0 -0
  15. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Core/Media/MediaManager.py +0 -0
  16. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Core/Plugin/PluginBase.py +0 -0
  17. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Core/Plugin/PluginLoader.py +0 -0
  18. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Core/Plugin/PluginManager.py +0 -0
  19. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Core/Plugin/PluginModels.py +0 -0
  20. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Core/UI/UIManager.py +0 -0
  21. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Core/__init__.py +0 -0
  22. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Extractors/CloseLoad.py +0 -0
  23. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Extractors/ContentX.py +0 -0
  24. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Extractors/DonilasPlay.py +0 -0
  25. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Extractors/DzenRu.py +0 -0
  26. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Extractors/ExPlay.py +0 -0
  27. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Extractors/HDPlayerSystem.py +0 -0
  28. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Extractors/JetTv.py +0 -0
  29. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Extractors/MailRu.py +0 -0
  30. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Extractors/MixPlayHD.py +0 -0
  31. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Extractors/MolyStream.py +0 -0
  32. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Extractors/Odnoklassniki.py +0 -0
  33. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Extractors/PeaceMakerst.py +0 -0
  34. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Extractors/PixelDrain.py +0 -0
  35. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Extractors/PlayerFilmIzle.py +0 -0
  36. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Extractors/RapidVid.py +0 -0
  37. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Extractors/SetPlay.py +0 -0
  38. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Extractors/SetPrime.py +0 -0
  39. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Extractors/SibNet.py +0 -0
  40. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Extractors/Sobreatsesuyp.py +0 -0
  41. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Extractors/TRsTX.py +0 -0
  42. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Extractors/TauVideo.py +0 -0
  43. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Extractors/TurboImgz.py +0 -0
  44. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Extractors/TurkeyPlayer.py +0 -0
  45. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Extractors/VCTPlay.py +0 -0
  46. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Extractors/VidHide.py +0 -0
  47. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Extractors/VidMoly.py +0 -0
  48. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Extractors/VidMoxy.py +0 -0
  49. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Extractors/VidPapi.py +0 -0
  50. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Extractors/VideoSeyred.py +0 -0
  51. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Extractors/YTDLP.py +0 -0
  52. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Extractors/YildizKisaFilm.py +0 -0
  53. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Plugins/BelgeselX.py +0 -0
  54. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Plugins/DiziBox.py +0 -0
  55. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Plugins/DiziPal.py +0 -0
  56. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Plugins/DiziYou.py +0 -0
  57. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Plugins/Dizilla.py +0 -0
  58. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Plugins/FilmBip.py +0 -0
  59. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Plugins/FilmModu.py +0 -0
  60. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Plugins/FullHDFilm.py +0 -0
  61. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Plugins/FullHDFilmizlesene.py +0 -0
  62. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Plugins/JetFilmizle.py +0 -0
  63. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Plugins/KultFilmler.py +0 -0
  64. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Plugins/RecTV.py +0 -0
  65. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Plugins/RoketDizi.py +0 -0
  66. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Plugins/SelcukFlix.py +0 -0
  67. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Plugins/SetFilmIzle.py +0 -0
  68. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Plugins/SezonlukDizi.py +0 -0
  69. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Plugins/SineWix.py +0 -0
  70. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Plugins/Sinefy.py +0 -0
  71. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Plugins/SinemaCX.py +0 -0
  72. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Plugins/Sinezy.py +0 -0
  73. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Plugins/SuperFilmGeldi.py +0 -0
  74. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/Plugins/UgurFilm.py +0 -0
  75. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/__init__.py +0 -0
  76. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/__main__.py +0 -0
  77. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream/requirements.txt +0 -0
  78. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream.egg-info/SOURCES.txt +0 -0
  79. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream.egg-info/dependency_links.txt +0 -0
  80. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream.egg-info/entry_points.txt +0 -0
  81. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream.egg-info/requires.txt +0 -0
  82. {kekikstream-2.1.0 → kekikstream-2.1.2}/KekikStream.egg-info/top_level.txt +0 -0
  83. {kekikstream-2.1.0 → kekikstream-2.1.2}/LICENSE +0 -0
  84. {kekikstream-2.1.0 → kekikstream-2.1.2}/MANIFEST.in +0 -0
  85. {kekikstream-2.1.0 → kekikstream-2.1.2}/README.md +0 -0
  86. {kekikstream-2.1.0 → kekikstream-2.1.2}/setup.cfg +0 -0
@@ -37,16 +37,15 @@ class MixTiger(ExtractorBase):
37
37
  if not m3u_link:
38
38
  raise ValueError("Video URL not found in response")
39
39
 
40
- # Recursive extraction check
40
+ # Recursive extraction check - başka extractor kullanılabilir mi?
41
41
  try:
42
42
  from KekikStream.Core.Extractor.ExtractorManager import ExtractorManager
43
- # Import inside method to avoid circular dependency
44
43
  manager = ExtractorManager()
45
44
  if nested_extractor := manager.find_extractor(m3u_link):
46
- # Use recursive extraction
47
- return await nested_extractor.extract(m3u_link, referer=final_referer)
45
+ # Nested extractor ile çıkar
46
+ return await nested_extractor.extract(m3u_link, referer=ext_ref)
48
47
  except Exception:
49
- # If recursion fails, fallback to standard result
48
+ # Recursive extraction başarısız olursa standart sonucu döndür
50
49
  pass
51
50
 
52
51
  return ExtractResult(
@@ -55,3 +54,4 @@ class MixTiger(ExtractorBase):
55
54
  referer = None if "disk.yandex" in m3u_link else ext_ref,
56
55
  subtitles = []
57
56
  )
57
+
@@ -104,16 +104,24 @@ class FilmMakinesi(PluginBase):
104
104
  istek = await self.httpx.get(url)
105
105
  secici = Selector(istek.text)
106
106
 
107
- iframe_src = secici.css("iframe::attr(data-src)").get()
107
+ response = []
108
108
 
109
- all_links = [iframe_src] if iframe_src else []
109
+ # Video parts linklerini ve etiketlerini al
110
110
  for link in secici.css("div.video-parts a[data-video_url]"):
111
- all_links.append(link.attrib.get("data-video_url"))
111
+ video_url = link.attrib.get("data-video_url")
112
+ label = link.css("::text").get() or ""
113
+ label = label.strip()
112
114
 
113
- response = []
114
- for link in all_links:
115
- data = await self.extract(link)
115
+ data = await self.extract(video_url, prefix=label.split()[0] if label else None)
116
116
  if data:
117
117
  response.append(data)
118
118
 
119
- return response
119
+ # Eğer video-parts yoksa iframe kullan
120
+ if not response:
121
+ iframe_src = secici.css("iframe::attr(data-src)").get()
122
+ if iframe_src:
123
+ data = await self.extract(iframe_src)
124
+ if data:
125
+ response.append(data)
126
+
127
+ return response
@@ -147,29 +147,10 @@ class HDFilmCehennemi(PluginBase):
147
147
  def hdch_decode(self, value_parts: list[str]) -> str:
148
148
  """
149
149
  HDFilmCehennemi için özel decoder.
150
- JavaScript sırası: join -> reverse -> atob -> atob -> shift_back
150
+ StreamDecoder._brute_force ile 24 farklı permütasyonu dener.
151
151
  """
152
152
  try:
153
- # 1. Parçaları birleştir
154
- joined = ''.join(value_parts)
155
-
156
- # 2. Ters çevir (REV)
157
- result = StreamDecoder._reverse(joined)
158
-
159
- # 3. İlk base64 decode (B64D)
160
- result = StreamDecoder._base64_decode(result)
161
- if result is None:
162
- return ""
163
-
164
- # 4. İkinci base64 decode (B64D) - JavaScript'te iki kez atob yapılıyor!
165
- result = StreamDecoder._base64_decode(result)
166
- if result is None:
167
- return ""
168
-
169
- # 5. Shift back (SHF)
170
- result = StreamDecoder._shift_back(result)
171
-
172
- return result
153
+ return StreamDecoder._brute_force(value_parts) or ""
173
154
  except Exception:
174
155
  return ""
175
156
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: KekikStream
3
- Version: 2.1.0
3
+ Version: 2.1.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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: KekikStream
3
- Version: 2.1.0
3
+ Version: 2.1.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.1.0",
9
+ version = "2.1.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