KekikStream 1.7.5__py3-none-any.whl → 1.7.7__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.
@@ -93,7 +93,7 @@ class Odnoklassniki(ExtractorBase):
93
93
  """Yönlendirmeleri takip eden bir fonksiyon"""
94
94
  redirects = 0
95
95
  while redirects < max_redirects:
96
- istek = await self.httpx.get(url, allow_redirects=False)
96
+ istek = await self.httpx.get(url, follow_redirects=False)
97
97
 
98
98
  if istek.status_code not in [301, 302]:
99
99
  break # Yönlendirme yoksa çık
@@ -48,7 +48,7 @@ class DiziBox(PluginBase):
48
48
  })
49
49
  istek = await self.httpx.get(
50
50
  url = f"{url.replace('SAYFA', str(page))}",
51
- allow_redirects = True
51
+ follow_redirects = True
52
52
  )
53
53
  secici = Selector(istek.text)
54
54
 
@@ -21,7 +21,7 @@ class JetFilmizle(PluginBase):
21
21
 
22
22
  #@kekik_cache(ttl=60*60)
23
23
  async def get_main_page(self, page: int, url: str, category: str) -> list[MainPageResult]:
24
- istek = await self.httpx.get(f"{url}{page}", allow_redirects=True)
24
+ istek = await self.httpx.get(f"{url}{page}", follow_redirects=True)
25
25
  secici = Selector(istek.text)
26
26
 
27
27
  return [
@@ -25,7 +25,7 @@ class UgurFilm(PluginBase):
25
25
 
26
26
  #@kekik_cache(ttl=60*60)
27
27
  async def get_main_page(self, page: int, url: str, category: str) -> list[MainPageResult]:
28
- istek = await self.httpx.get(f"{url}{page}", allow_redirects=True)
28
+ istek = await self.httpx.get(f"{url}{page}", follow_redirects=True)
29
29
  secici = Selector(istek.text)
30
30
 
31
31
  return [
KekikStream/__init__.py CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  from .CLI import konsol, cikis_yap, hata_yakala, pypi_kontrol_guncelle
4
4
  from .Core import PluginManager, ExtractorManager, UIManager, MediaManager, PluginBase, ExtractorBase, SeriesInfo
5
- from asyncio import run
5
+ from asyncio import run, TaskGroup, Semaphore
6
6
  from contextlib import suppress
7
7
 
8
8
  class KekikStream:
@@ -90,21 +90,34 @@ class KekikStream:
90
90
 
91
91
  query = await self.ui.prompt_text("Arama sorgusu:")
92
92
  all_results = []
93
-
94
- for name, plugin in self.plugin.plugins.items():
95
- if not isinstance(plugin, PluginBase) or name == "Shorten":
96
- continue
97
-
98
- konsol.log(f"[yellow][~] {name:<19} aranıyor...[/]")
99
- try:
100
- results = await plugin.search(query)
101
- if results:
102
- all_results.extend([
103
- {"plugin": name, "title": r.title, "url": r.url, "poster": r.poster}
104
- for r in results
105
- ])
106
- except Exception as e:
107
- konsol.print(f"[bold red]{name} hatası: {e}[/bold red]")
93
+
94
+ # Maksimum 5 eşzamanlı arama için semaphore
95
+ semaphore = Semaphore(5)
96
+
97
+ async def search_plugin(name: str, plugin: PluginBase):
98
+ """Tek bir plugin'de ara (semaphore ile sınırlandırılmış)"""
99
+ async with semaphore:
100
+ konsol.log(f"[yellow][~] {name:<19} aranıyor...[/]")
101
+ try:
102
+ results = await plugin.search(query)
103
+ if results:
104
+ return [
105
+ {"plugin": name, "title": r.title, "url": r.url, "poster": r.poster}
106
+ for r in results
107
+ ]
108
+ except Exception as e:
109
+ konsol.print(f"[bold red]{name} hatası: {e}[/bold red]")
110
+ return []
111
+
112
+ # Tüm plugin'leri paralel olarak ara
113
+ async with TaskGroup() as tg:
114
+ tasks = []
115
+ for name, plugin in self.plugin.plugins.items():
116
+ tasks.append(tg.create_task(search_plugin(name, plugin)))
117
+
118
+ # Sonuçları topla
119
+ for task in tasks:
120
+ all_results.extend(task.result())
108
121
 
109
122
  if not all_results:
110
123
  return await self.handle_no_results()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: KekikStream
3
- Version: 1.7.5
3
+ Version: 1.7.7
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
@@ -10,7 +10,7 @@ Keywords: KekikStream,KekikAkademi,keyiflerolsun
10
10
  Classifier: Development Status :: 5 - Production/Stable
11
11
  Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
12
12
  Classifier: Programming Language :: Python :: 3
13
- Requires-Python: >=3.10
13
+ Requires-Python: >=3.11
14
14
  Description-Content-Type: text/markdown
15
15
  License-File: LICENSE
16
16
  Requires-Dist: setuptools
@@ -1,4 +1,4 @@
1
- KekikStream/__init__.py,sha256=exQu4iKuhqayenfODFPFWp15Q78h3RnVcMZVTAIlKMI,13061
1
+ KekikStream/__init__.py,sha256=Qgb2Dq_10q_z1lSNcrU_M6e-iKwEwjvA_A6AGVgYDS4,13600
2
2
  KekikStream/__main__.py,sha256=B81dQoeGEb-T5Sycs3eNAmW7unvx0Mef0syCjs4nPds,137
3
3
  KekikStream/requirements.txt,sha256=ENISGfW7D7abbqEh-1Yp2BaQdFJyYIJ0p8zNTUscuwU,80
4
4
  KekikStream/CLI/__init__.py,sha256=U6oLq_O7u5y2eHhBnmfhZNns_EqHHJXJmzl8jvZFUNY,230
@@ -31,7 +31,7 @@ KekikStream/Extractors/MailRu.py,sha256=9TfjtgqkbcRAvoWfSwDJK3zvtq1z5-_JCdPDdZj5
31
31
  KekikStream/Extractors/MixPlayHD.py,sha256=810efcVXQ1OniIz7gGtrsjNpqFy5Z6HScxDsJNsubHA,1584
32
32
  KekikStream/Extractors/MixTiger.py,sha256=nf5wq3Y_h2trE8bLbUWEza3BTgFK-Pfsb0OdQyar1VM,2238
33
33
  KekikStream/Extractors/MolyStream.py,sha256=y1kB2Fuf0kEchl6mxcyFdaRWOKwt6zSwYy3ojPC135M,1171
34
- KekikStream/Extractors/Odnoklassniki.py,sha256=YG_e3SbIUCwEkWXJHD1zihvbQiRByJEUPxBhI5e8hTs,3779
34
+ KekikStream/Extractors/Odnoklassniki.py,sha256=B_uwJtxZ4lUoKLz1u4ejdOY3JiL5DVLPkXSnMCGXKTQ,3780
35
35
  KekikStream/Extractors/OkRuHTTP.py,sha256=L-B0i_i_Vnm61GvUfd6cGIW-o_H4M-C7DO_cdw2rQPU,228
36
36
  KekikStream/Extractors/OkRuSSL.py,sha256=FHJ5XZ1dO5ED3mIku3e3vnq8K0slrcr0jqhaUnHmfVk,227
37
37
  KekikStream/Extractors/PeaceMakerst.py,sha256=NYrVJrh32iu1T5Lnv1cjpUdzFcPgxfgSt7JM4ZoejnE,2124
@@ -55,7 +55,7 @@ KekikStream/Extractors/VidMoxy.py,sha256=vwyw2MgC9EIdF4PYB_5O7gkUxF5JTkfbmlVudZe
55
55
  KekikStream/Extractors/VidPapi.py,sha256=Y9wBhZi-uH5VlYJaREByjheAGuVKQ7gXqNkQ_dlwlVM,3287
56
56
  KekikStream/Extractors/VideoSeyred.py,sha256=HHzS8Ew1yJgWmyzi64dJkPD5bGP6Ku00EoSdZ7ncgaA,2009
57
57
  KekikStream/Extractors/YildizKisaFilm.py,sha256=TZp9y3TQBKs_6MLxrrnXV1RbqLuCxHXbEId63tiBPcg,1344
58
- KekikStream/Plugins/DiziBox.py,sha256=P9DwqsI3XqNJtTymZWL2TPOZmprxP1BRAIc0lJFeLmw,10091
58
+ KekikStream/Plugins/DiziBox.py,sha256=x7lChsXwaKbWeIPs9uN-jU1ZlVG73a7_1H5_emoPlUQ,10092
59
59
  KekikStream/Plugins/DiziPal.py,sha256=u9hAB7y3mo7MtP_wOth-wUA_xov4d8ktYu6DpR4NLHI,10194
60
60
  KekikStream/Plugins/DiziYou.py,sha256=f1rxPM_9Mut2Cws3-sKesq5Gn9p0gZL7zvbrGrawqhk,8004
61
61
  KekikStream/Plugins/Dizilla.py,sha256=aaORb3ZfNZm5gXB940d3Q9FgRjuNiVtQoY64W0hYbOA,7450
@@ -65,7 +65,7 @@ KekikStream/Plugins/FilmModu.py,sha256=11c6dSMMfu6SQsIbRLD9n84KxN2MnbZ00nH0Tnc2a
65
65
  KekikStream/Plugins/FullHDFilm.py,sha256=kkb-JtWf23uiEzP9f_uds0tROYiKOyxcX0D-jNtQFi0,7005
66
66
  KekikStream/Plugins/FullHDFilmizlesene.py,sha256=UYOMLJqbH72gkXWizNV3gWLZHATWeC6h8YaqThgGduI,6281
67
67
  KekikStream/Plugins/HDFilmCehennemi.py,sha256=w49XXVNyU9hyA5vU0pIkJbB4OzHaa15p8STtnkVa1Uc,9913
68
- KekikStream/Plugins/JetFilmizle.py,sha256=7EpWvl2mUCRq8x72ZMluUSurAq9pJjWtVQNCtKXyG_Y,6091
68
+ KekikStream/Plugins/JetFilmizle.py,sha256=0UgHnBTkd4mMXKSLjYxAixFMGXrVa0qOLqYiLb6RKZQ,6092
69
69
  KekikStream/Plugins/KultFilmler.py,sha256=VZET3RUoOVYKE-C2YbkMW8oNcxz6zE2pR7a3z-B4nD4,8987
70
70
  KekikStream/Plugins/RecTV.py,sha256=000u2dwMVd9HgqFn1m74y97Yod6gOwVR2zEiIkJvno8,7713
71
71
  KekikStream/Plugins/RoketDizi.py,sha256=lmdGNkv8QdmOsYcC3BQbviXHL94qVzz5onGNOXF8c9w,7813
@@ -76,10 +76,10 @@ KekikStream/Plugins/Sinefy.py,sha256=mRwtQYiH7I_1k4EZS0g4MhnRDEx0NXwY8sa5tI33dog
76
76
  KekikStream/Plugins/SinemaCX.py,sha256=-vCHGhycKOoynnfkhTQwmMrBl_c7IsTO43UuIQwf3Mk,7263
77
77
  KekikStream/Plugins/Sinezy.py,sha256=t7InHEtKdIVyBQj8HJWwWcHhRP9AXKKXYE0O3YD8MYg,3647
78
78
  KekikStream/Plugins/SuperFilmGeldi.py,sha256=Ohm21BPsJH_S1tx5i2APEgAOD25k2NiwRP7rSgAKvRs,5289
79
- KekikStream/Plugins/UgurFilm.py,sha256=DSzQD9wQMFiUKn82VNJ2KTpRhwx3X8K9Aj-zBCbpZVc,4960
80
- kekikstream-1.7.5.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
81
- kekikstream-1.7.5.dist-info/METADATA,sha256=c6IQsgCa7CwDqG3P4G8xrAFLzaraFO7mM5y2pBV_qhI,4983
82
- kekikstream-1.7.5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
83
- kekikstream-1.7.5.dist-info/entry_points.txt,sha256=dFwdiTx8djyehI0Gsz-rZwjAfZzUzoBSrmzRu9ubjJc,50
84
- kekikstream-1.7.5.dist-info/top_level.txt,sha256=DNmGJDXl27Drdfobrak8KYLmocW_uznVYFJOzcjUgmY,12
85
- kekikstream-1.7.5.dist-info/RECORD,,
79
+ KekikStream/Plugins/UgurFilm.py,sha256=BUoDQOQF6tsj2tZj06OL9ga7j_oj116p3C2GQsnMXTU,4961
80
+ kekikstream-1.7.7.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
81
+ kekikstream-1.7.7.dist-info/METADATA,sha256=Cucbfex4SUODsqwD4QBgIQyvD2DcQfw6D7x5ElaCrno,4983
82
+ kekikstream-1.7.7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
83
+ kekikstream-1.7.7.dist-info/entry_points.txt,sha256=dFwdiTx8djyehI0Gsz-rZwjAfZzUzoBSrmzRu9ubjJc,50
84
+ kekikstream-1.7.7.dist-info/top_level.txt,sha256=DNmGJDXl27Drdfobrak8KYLmocW_uznVYFJOzcjUgmY,12
85
+ kekikstream-1.7.7.dist-info/RECORD,,