KekikStream 2.1.0__py3-none-any.whl → 2.1.2__py3-none-any.whl

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.
@@ -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
@@ -25,7 +25,7 @@ KekikStream/Extractors/HDPlayerSystem.py,sha256=EgnFzx5Q4PkuwAtuff5SYU9k59B-CyOd
25
25
  KekikStream/Extractors/JetTv.py,sha256=aA3WeOvR-tszac-WSwunZZb1NRy25TQH8vxY3TDscRI,1596
26
26
  KekikStream/Extractors/MailRu.py,sha256=xQVCWwYqNoG5T43VAW1_m0v4e80FbO-1pNPKkwhTccU,1218
27
27
  KekikStream/Extractors/MixPlayHD.py,sha256=POV_yq3KoZ6S6EqFsKYULEBz92NdUa2BpYKNo0eNQH8,1552
28
- KekikStream/Extractors/MixTiger.py,sha256=mMEYhhr5-u6GgIrLESeFTRdwDykgSXKJO4KtkMML1bw,2124
28
+ KekikStream/Extractors/MixTiger.py,sha256=4VbOYgE4s5H-BGVvJI0AI57M-WBWqnek_LGfCFHAucw,2116
29
29
  KekikStream/Extractors/MolyStream.py,sha256=IeeBw9tJJrL5QQ-t2Yp-a-6lnDc3Y00UNiaN6m-o-7c,1160
30
30
  KekikStream/Extractors/Odnoklassniki.py,sha256=YfFRCL3Ag5N4zDzK9ZLOr3HVQcsETFQpff1px02imJ0,4019
31
31
  KekikStream/Extractors/PeaceMakerst.py,sha256=pEgJb3KDfEPAUjbuvrYbUlxIciKgED-Vd0arrRO3QCk,2317
@@ -54,11 +54,11 @@ KekikStream/Plugins/DiziPal.py,sha256=hCjf1as54Bc6aC3UV9P0T4yIbOFOP6jHIAoIgRMPbJ
54
54
  KekikStream/Plugins/DiziYou.py,sha256=XTTShRhlDjTNeqgc28HF-FN9Y7tGUBzHZU0KuFgwvYA,8669
55
55
  KekikStream/Plugins/Dizilla.py,sha256=OzZJuFDJK6q6szIcAFM-s3H1HNdUuTaK8VWVGhnONBs,11741
56
56
  KekikStream/Plugins/FilmBip.py,sha256=bgdUJWW6f_DoaKxJPES0tJJRauy2PVpw4jsg2zAjbcI,6012
57
- KekikStream/Plugins/FilmMakinesi.py,sha256=QtjgRjHz3wsbb76j9uNWd5xyOsCDOGEpCL9vNVg7wps,5126
57
+ KekikStream/Plugins/FilmMakinesi.py,sha256=ONAUlhf2m9dk1AkeFu8sEMG-gIL4qM64f7oXZAoETmo,5455
58
58
  KekikStream/Plugins/FilmModu.py,sha256=ux5FACwmkuNQxx3rXQEeX-bWSXC4L7CfFxBZOhPuPFc,6524
59
59
  KekikStream/Plugins/FullHDFilm.py,sha256=lYcGpes7HJYFHoKn_Ntk3gUL6bdm8MzDLAv0ns6S1YM,6837
60
60
  KekikStream/Plugins/FullHDFilmizlesene.py,sha256=nimV_mSaPYYxG4_d-gnW2Bh4EKMM6hGh0Ev8RbJVs-8,6054
61
- KekikStream/Plugins/HDFilmCehennemi.py,sha256=6rZX6xfGIo9l0hojE8YFrvKmsPeLgltFF3ySFla8dGk,12048
61
+ KekikStream/Plugins/HDFilmCehennemi.py,sha256=2cJMef1avcHi-HK-FUCVoLnv_fbCV6IqNZ9uvX_5hwA,11399
62
62
  KekikStream/Plugins/JetFilmizle.py,sha256=4gbvLgnjdzWr6f10jKYQAC4W5NEJCEOKxJnVQH36QTY,6386
63
63
  KekikStream/Plugins/KultFilmler.py,sha256=H_U2uil9Z-aw10tZuSUB0dmMtQJrnckodGRhaA6t6gg,8944
64
64
  KekikStream/Plugins/RecTV.py,sha256=tzIVjBP4YKL4dBvjRNIuECrAfNw6F892Fw0pXvLutoU,7187
@@ -72,9 +72,9 @@ KekikStream/Plugins/SinemaCX.py,sha256=jrE7gkvJgPKjk8XymztyxYErZtPVF9onW48E22Us9
72
72
  KekikStream/Plugins/Sinezy.py,sha256=_iituEi6A7b-Y-wGcTkFknwFus-oAvZje2XKayzCZHY,6104
73
73
  KekikStream/Plugins/SuperFilmGeldi.py,sha256=O3f8jwnX-ihF49kmZ7g6IKU2HZLmLf_RCucplDSglN4,5347
74
74
  KekikStream/Plugins/UgurFilm.py,sha256=9vulu0uP0dWVVhWzDf-C7RQN_dLKB2AOJ2NoxU-YMlA,4672
75
- kekikstream-2.1.0.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
76
- kekikstream-2.1.0.dist-info/METADATA,sha256=PkzjGPbxftAmFMzr9JxsJU_NnfjicQAcFiaKbR-0N7g,10090
77
- kekikstream-2.1.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
78
- kekikstream-2.1.0.dist-info/entry_points.txt,sha256=dFwdiTx8djyehI0Gsz-rZwjAfZzUzoBSrmzRu9ubjJc,50
79
- kekikstream-2.1.0.dist-info/top_level.txt,sha256=DNmGJDXl27Drdfobrak8KYLmocW_uznVYFJOzcjUgmY,12
80
- kekikstream-2.1.0.dist-info/RECORD,,
75
+ kekikstream-2.1.2.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
76
+ kekikstream-2.1.2.dist-info/METADATA,sha256=B1euPA4Tmtk4nmwxZxcp3MnViLHsRxFm0vY4yW16SJg,10090
77
+ kekikstream-2.1.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
78
+ kekikstream-2.1.2.dist-info/entry_points.txt,sha256=dFwdiTx8djyehI0Gsz-rZwjAfZzUzoBSrmzRu9ubjJc,50
79
+ kekikstream-2.1.2.dist-info/top_level.txt,sha256=DNmGJDXl27Drdfobrak8KYLmocW_uznVYFJOzcjUgmY,12
80
+ kekikstream-2.1.2.dist-info/RECORD,,