KekikStream 0.3.5__py3-none-any.whl → 0.3.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.
@@ -99,7 +99,7 @@ class DiziBox(PluginBase):
99
99
 
100
100
  if atob_data := re.search(r"unescape\(\"(.*)\"\)", istek.text):
101
101
  decoded_atob = urllib.parse.unquote(atob_data[1])
102
- str_atob = base64.b64decode(decoded_atob).decode('utf-8')
102
+ str_atob = base64.b64decode(decoded_atob).decode("utf-8")
103
103
 
104
104
  if iframe := Selector(str_atob).css("div#Player iframe::attr(src)").get():
105
105
  results.append(iframe)
@@ -61,7 +61,7 @@ class FullHDFilmizlesene(PluginBase):
61
61
  secici = Selector(istek.text)
62
62
 
63
63
  script = secici.xpath("(//script)[1]").get()
64
- scx_data = json.loads(re.findall(r'scx = (.*?);', script)[0])
64
+ scx_data = json.loads(re.findall(r"scx = (.*?);", script)[0])
65
65
  scx_keys = list(scx_data.keys())
66
66
 
67
67
  link_list = []
@@ -72,6 +72,6 @@ class FullHDFilmizlesene(PluginBase):
72
72
  if isinstance(t, dict):
73
73
  link_list.extend(StringCodec.decode(v) for k, v in t.items())
74
74
 
75
- link_list = [f"https:{link}" if link.startswith('//') else link for link in link_list]
75
+ link_list = [f"https:{link}" if link.startswith("//") else link for link in link_list]
76
76
  # konsol.print(link_list)
77
77
  return link_list
KekikStream/__init__.py CHANGED
@@ -13,19 +13,18 @@ class KekikStream:
13
13
  self.medya_yonetici = MediaManager()
14
14
  self.suanki_eklenti: PluginBase = None
15
15
 
16
- async def calistir(self):
16
+ async def baslat(self):
17
17
  self.arayuz_yonetici.clear_console()
18
18
  konsol.rule("[bold cyan]KekikStream Başlatılıyor[/bold cyan]")
19
19
  if not self.eklentiler_yonetici.get_plugin_names():
20
- konsol.print("[bold red]Hiçbir eklenti bulunamadı![/bold red]")
21
- return
20
+ return konsol.print("[bold red]Hiçbir eklenti bulunamadı![/bold red]")
22
21
 
23
22
  try:
24
- await self.eklenti_sec()
23
+ await self.eklenti_secimi()
25
24
  finally:
26
25
  await self.eklentiler_yonetici.close_plugins()
27
26
 
28
- async def hicbir_sonuc_bulunamazsa(self):
27
+ async def sonuc_bulunamadi(self):
29
28
  secim = await self.arayuz_yonetici.select_from_list(
30
29
  message = "Ne yapmak istersiniz?",
31
30
  choices = ["Tüm Eklentilerde Ara", "Ana Menü", "Çıkış"]
@@ -33,25 +32,25 @@ class KekikStream:
33
32
 
34
33
  match secim:
35
34
  case "Tüm Eklentilerde Ara":
36
- await self.tum_eklentilerde_ara()
35
+ await self.tum_eklentilerde_arama()
37
36
  case "Ana Menü":
38
- await self.calistir()
37
+ await self.baslat()
39
38
  case "Çıkış":
40
39
  cikis_yap(False)
41
40
 
42
- async def eklenti_sec(self):
41
+ async def eklenti_secimi(self):
43
42
  eklenti_adi = await self.arayuz_yonetici.select_from_fuzzy(
44
43
  message = "Arama yapılacak eklentiyi seçin:",
45
44
  choices = ["Tüm Eklentilerde Ara", *self.eklentiler_yonetici.get_plugin_names()]
46
45
  )
47
46
 
48
47
  if eklenti_adi == "Tüm Eklentilerde Ara":
49
- await self.tum_eklentilerde_ara()
48
+ await self.tum_eklentilerde_arama()
50
49
  else:
51
50
  self.suanki_eklenti = self.eklentiler_yonetici.select_plugin(eklenti_adi)
52
- await self.eklenti_ile_ara()
51
+ await self.eklenti_ile_arama()
53
52
 
54
- async def eklenti_ile_ara(self):
53
+ async def eklenti_ile_arama(self):
55
54
  self.arayuz_yonetici.clear_console()
56
55
  konsol.rule(f"[bold cyan]{self.suanki_eklenti.name} Eklentisinde Arama Yapın[/bold cyan]")
57
56
 
@@ -60,33 +59,69 @@ class KekikStream:
60
59
 
61
60
  if not sonuclar:
62
61
  konsol.print("[bold red]Arama sonucu bulunamadı![/bold red]")
63
- return await self.hicbir_sonuc_bulunamazsa()
62
+ return await self.sonuc_bulunamadi()
63
+
64
+ if secilen_sonuc := await self.eklenti_sonuc_secimi(sonuclar):
65
+ await self.sonuc_detaylari_goster({"plugin": self.suanki_eklenti.name, "url": secilen_sonuc})
64
66
 
65
- if secilen_sonuc:= await self.sonuc_sec(sonuclar) :
66
- await self.detaylari_goster({"plugin": self.suanki_eklenti.name, "url": secilen_sonuc})
67
+ async def eklenti_sonuc_secimi(self, sonuclar):
68
+ return await self.arayuz_yonetici.select_from_fuzzy(
69
+ message = "İçerik sonuçlarından birini seçin:",
70
+ choices = [{"name": sonuc.title, "value": sonuc.url} for sonuc in sonuclar]
71
+ )
67
72
 
68
- async def tum_eklentilerde_ara(self):
73
+ async def tum_eklentilerde_arama(self):
69
74
  self.arayuz_yonetici.clear_console()
70
75
  konsol.rule("[bold cyan]Tüm Eklentilerde Arama Yapın[/bold cyan]")
71
76
 
72
77
  sorgu = await self.arayuz_yonetici.prompt_text("Arama sorgusu girin:")
73
- sonuclar = await self.tum_eklentilerde_arama(sorgu)
78
+ sonuclar = await self.tum_eklentilerde_arama_sorgula(sorgu)
74
79
 
75
80
  if not sonuclar:
76
- return await self.hicbir_sonuc_bulunamazsa()
81
+ return await self.sonuc_bulunamadi()
77
82
 
78
- secilen_sonuc = await self.tum_sonuc_sec(sonuclar)
83
+ secilen_sonuc = await self.tum_sonuc_secimi(sonuclar)
79
84
 
80
85
  if secilen_sonuc:
81
- await self.detaylari_goster(secilen_sonuc)
86
+ await self.sonuc_detaylari_goster(secilen_sonuc)
87
+
88
+ async def tum_eklentilerde_arama_sorgula(self, sorgu: str) -> list:
89
+ tum_sonuclar = []
90
+
91
+ for eklenti_adi, eklenti in self.eklentiler_yonetici.plugins.items():
92
+ if not isinstance(eklenti, PluginBase):
93
+ konsol.print(f"[yellow][!] {eklenti_adi} geçerli bir PluginBase değil, atlanıyor...[/yellow]")
94
+ continue
95
+
96
+ konsol.log(f"[yellow][~] {eklenti_adi:<19} aranıyor...[/]")
97
+ try:
98
+ sonuclar = await eklenti.search(sorgu)
99
+ if sonuclar:
100
+ tum_sonuclar.extend(
101
+ [{"plugin": eklenti_adi, "title": sonuc.title, "url": sonuc.url, "poster": sonuc.poster} for sonuc in sonuclar]
102
+ )
103
+ except Exception as hata:
104
+ konsol.print(f"[bold red]{eklenti_adi} » hata oluştu: {hata}[/bold red]")
105
+
106
+ if not tum_sonuclar:
107
+ konsol.print("[bold red]Hiçbir sonuç bulunamadı![/bold red]")
108
+ await self.sonuc_bulunamadi()
109
+ return []
110
+
111
+ return tum_sonuclar
112
+
113
+ async def tum_sonuc_secimi(self, sonuclar):
114
+ secenekler = [
115
+ {"name": f"[{sonuc['plugin']}]".ljust(21) + f" » {sonuc['title']}", "value": sonuc}
116
+ for sonuc in sonuclar
117
+ ]
82
118
 
83
- async def sonuc_sec(self, sonuclar):
84
119
  return await self.arayuz_yonetici.select_from_fuzzy(
85
- message = "İçerik sonuclarından birini seçin:",
86
- choices = [{"name": sonuc.title, "value": sonuc.url} for sonuc in sonuclar]
120
+ message = "Arama sonuçlarından bir içerik seçin:",
121
+ choices = secenekler
87
122
  )
88
123
 
89
- async def detaylari_goster(self, secilen_sonuc):
124
+ async def sonuc_detaylari_goster(self, secilen_sonuc):
90
125
  try:
91
126
  if isinstance(secilen_sonuc, dict) and "plugin" in secilen_sonuc:
92
127
  eklenti_adi = secilen_sonuc["plugin"]
@@ -99,8 +134,7 @@ class KekikStream:
99
134
  medya_bilgi = await self.suanki_eklenti.load_item(url)
100
135
  except Exception as hata:
101
136
  konsol.log(secilen_sonuc)
102
- hata_yakala(hata)
103
- return
137
+ return hata_yakala(hata)
104
138
 
105
139
  self.medya_yonetici.set_title(f"{self.suanki_eklenti.name} | {medya_bilgi.title}")
106
140
  self.arayuz_yonetici.display_media_info(f"{self.suanki_eklenti.name} | {medya_bilgi.title}", medya_bilgi)
@@ -115,15 +149,15 @@ class KekikStream:
115
149
  )
116
150
  if secilen_bolum:
117
151
  baglantilar = await self.suanki_eklenti.load_links(secilen_bolum)
118
- await self.secenekleri_goster(baglantilar)
152
+ await self.baglanti_secenekleri_goster(baglantilar)
119
153
  else:
120
154
  baglantilar = await self.suanki_eklenti.load_links(medya_bilgi.url)
121
- await self.secenekleri_goster(baglantilar)
155
+ await self.baglanti_secenekleri_goster(baglantilar)
122
156
 
123
- async def secenekleri_goster(self, baglantilar):
157
+ async def baglanti_secenekleri_goster(self, baglantilar):
124
158
  if not baglantilar:
125
159
  konsol.print("[bold red]Hiçbir bağlantı bulunamadı![/bold red]")
126
- return await self.hicbir_sonuc_bulunamazsa()
160
+ return await self.sonuc_bulunamadi()
127
161
 
128
162
  haritalama = self.cikaricilar_yonetici.map_links_to_extractors(baglantilar)
129
163
  play_fonksiyonu_var = hasattr(self.suanki_eklenti, "play") and callable(getattr(self.suanki_eklenti, "play", None))
@@ -132,7 +166,7 @@ class KekikStream:
132
166
  if not haritalama and not play_fonksiyonu_var:
133
167
  konsol.print("[bold red]Hiçbir Extractor bulunamadı![/bold red]")
134
168
  konsol.print(baglantilar)
135
- return await self.hicbir_sonuc_bulunamazsa()
169
+ return await self.sonuc_bulunamadi()
136
170
 
137
171
  if not haritalama:
138
172
  secilen_link = await self.arayuz_yonetici.select_from_list(
@@ -158,10 +192,10 @@ class KekikStream:
158
192
  await self.medya_oynat(secilen_link)
159
193
 
160
194
  case "Tüm Eklentilerde Ara":
161
- await self.tum_eklentilerde_ara()
195
+ await self.tum_eklentilerde_arama()
162
196
 
163
197
  case _:
164
- await self.calistir()
198
+ await self.baslat()
165
199
 
166
200
  async def medya_oynat(self, secilen_link):
167
201
  if hasattr(self.suanki_eklenti, "play") and callable(self.suanki_eklenti.play):
@@ -181,7 +215,7 @@ class KekikStream:
181
215
  extract_data = await cikarici.extract(secilen_link, referer=self.suanki_eklenti.main_url)
182
216
  except Exception as hata:
183
217
  konsol.print(f"[bold red]{cikarici.name} » hata oluştu: {hata}[/bold red]")
184
- return await self.hicbir_sonuc_bulunamazsa()
218
+ return await self.sonuc_bulunamadi()
185
219
 
186
220
  if isinstance(extract_data, list):
187
221
  secilen_data = await self.arayuz_yonetici.select_from_list(
@@ -199,48 +233,12 @@ class KekikStream:
199
233
  konsol.log(f"[yellow][»] Oynatılıyor : {secilen_data.url}")
200
234
  self.medya_yonetici.play_media(secilen_data)
201
235
 
202
- async def tum_eklentilerde_arama(self, sorgu: str):
203
- tum_sonuclar = []
204
-
205
- for eklenti_adi, eklenti in self.eklentiler_yonetici.plugins.items():
206
- if not isinstance(eklenti, PluginBase):
207
- konsol.print(f"[yellow][!] {eklenti_adi} geçerli bir PluginBase değil, atlanıyor...[/yellow]")
208
- continue
209
-
210
- konsol.log(f"[yellow][~] {eklenti_adi:<19} aranıyor...[/]")
211
- try:
212
- sonuclar = await eklenti.search(sorgu)
213
- if sonuclar:
214
- tum_sonuclar.extend(
215
- [{"plugin": eklenti_adi, "title": sonuc.title, "url": sonuc.url, "poster": sonuc.poster} for sonuc in sonuclar]
216
- )
217
- except Exception as hata:
218
- konsol.print(f"[bold red]{eklenti_adi} » hata oluştu: {hata}[/bold red]")
219
-
220
- if not tum_sonuclar:
221
- konsol.print("[bold red]Hiçbir sonuç bulunamadı![/bold red]")
222
- await self.hicbir_sonuc_bulunamazsa()
223
- return []
224
-
225
- return tum_sonuclar
226
-
227
- async def tum_sonuc_sec(self, sonuclar):
228
- secenekler = [
229
- {"name": f"{f'[{sonuc["plugin"]}]':<21} » {sonuc['title']}", "value": sonuc}
230
- for sonuc in sonuclar
231
- ]
232
-
233
- return await self.arayuz_yonetici.select_from_fuzzy(
234
- message = "Arama sonuclarından bir içerik seçin:",
235
- choices = secenekler
236
- )
237
-
238
236
  def basla():
239
237
  try:
240
238
  pypi_kontrol_guncelle("KekikStream")
241
239
 
242
240
  app = KekikStream()
243
- run(app.calistir())
241
+ run(app.baslat())
244
242
  cikis_yap(False)
245
243
  except KeyboardInterrupt:
246
244
  cikis_yap(True)
KekikStream/__main__.py CHANGED
@@ -2,5 +2,5 @@
2
2
 
3
3
  from . import basla
4
4
 
5
- if __name__ == '__main__':
5
+ if __name__ == "__main__":
6
6
  basla()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: KekikStream
3
- Version: 0.3.5
3
+ Version: 0.3.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
@@ -1,5 +1,5 @@
1
- KekikStream/__init__.py,sha256=rvxttmpyOKC4MSTv6n8ThVaVtl3XEKaJ4K_fVedWvEU,10453
2
- KekikStream/__main__.py,sha256=4U-NO1f0Mts5Mf_QnWhWqRbTsRBy2y2VPlpHyaqG9_I,137
1
+ KekikStream/__init__.py,sha256=FR1jcEZkFpOP7_GLRPLqUcYYxFaElmAo_3R9gZpigdE,10489
2
+ KekikStream/__main__.py,sha256=B81dQoeGEb-T5Sycs3eNAmW7unvx0Mef0syCjs4nPds,137
3
3
  KekikStream/requirements.txt,sha256=gS_TUUQx5A7FUmRGxj2dQedxheD7qA6AswdUb2y_Ub8,70
4
4
  KekikStream/CLI/__init__.py,sha256=U6oLq_O7u5y2eHhBnmfhZNns_EqHHJXJmzl8jvZFUNY,230
5
5
  KekikStream/CLI/pypi_kontrol.py,sha256=MchatOwCWCpFBtgt09yag9Rjal9XFyh2W_oVs2p7SNg,1518
@@ -41,16 +41,16 @@ KekikStream/Managers/MediaManager.py,sha256=F7mkSvAttAaMHRvnDcxnV2K1D_sK644BCSrE
41
41
  KekikStream/Managers/PluginManager.py,sha256=YDBLHB_Fh79A3Pei0ny2KLVY4VSihdNiKBh_w5tBl-0,637
42
42
  KekikStream/Managers/UIManager.py,sha256=OrGxzbhRPTCqiLEXjipLb8ChF7saV3fvFIUXLKT9w6Q,1612
43
43
  KekikStream/Managers/__init__.py,sha256=3085I_9Sa2L_Vq6Z-QvYUYn1BapkN4sQqBo8ITZoD_4,251
44
- KekikStream/Plugins/DiziBox.py,sha256=RXw83392Nv-1F1wBC60fEakxo87CQP0CAuEhBNZoRig,5722
44
+ KekikStream/Plugins/DiziBox.py,sha256=ARzsao-r91c3PVV_3-NCLvNcVRSIxjlGdWl_3-1Q6Mo,5722
45
45
  KekikStream/Plugins/FilmMakinesi.py,sha256=rz8TQeL41PJbeEmksgPHIhp6J-4vbSCBTeEH0ukExz4,2822
46
- KekikStream/Plugins/FullHDFilmizlesene.py,sha256=HJzHDXHhhMpvXxiD2SjpoZEYs7dmnPymE8EXCSvLKVo,3106
46
+ KekikStream/Plugins/FullHDFilmizlesene.py,sha256=MKTaDQaatI_XuJk-NFj3xqsTXO5bFnoy4-I5tCL0A-M,3106
47
47
  KekikStream/Plugins/JetFilmizle.py,sha256=DPdvTEns8r2MI9pHY8d9EEsUZmlQU7N2C9yr8ox80qU,4016
48
48
  KekikStream/Plugins/SezonlukDizi.py,sha256=5BZVzQ2eQtymHxO0bzjA2ho4FFNahPFQly4hoHuH8lo,4441
49
49
  KekikStream/Plugins/SineWix.py,sha256=ZtcIwPW0ONGkSjT7Ye8b71RWdHZMUZefX-JTWu6uGSs,4854
50
50
  KekikStream/Plugins/UgurFilm.py,sha256=yYXee5uxwNnPqFJZ6s6cRkmUyqS3Vv8x-iesPalc4j4,2930
51
- KekikStream-0.3.5.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
52
- KekikStream-0.3.5.dist-info/METADATA,sha256=bX__FH-Oc-Jirv9-9Jkz3AtTJbV6JGXMsmMeQ6AeDNQ,3987
53
- KekikStream-0.3.5.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
54
- KekikStream-0.3.5.dist-info/entry_points.txt,sha256=dFwdiTx8djyehI0Gsz-rZwjAfZzUzoBSrmzRu9ubjJc,50
55
- KekikStream-0.3.5.dist-info/top_level.txt,sha256=DNmGJDXl27Drdfobrak8KYLmocW_uznVYFJOzcjUgmY,12
56
- KekikStream-0.3.5.dist-info/RECORD,,
51
+ KekikStream-0.3.7.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
52
+ KekikStream-0.3.7.dist-info/METADATA,sha256=z7V9PBvDmXcYGScDp3K2oNJR8YMOpdj_Zoe_F5m0iw0,3987
53
+ KekikStream-0.3.7.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
54
+ KekikStream-0.3.7.dist-info/entry_points.txt,sha256=dFwdiTx8djyehI0Gsz-rZwjAfZzUzoBSrmzRu9ubjJc,50
55
+ KekikStream-0.3.7.dist-info/top_level.txt,sha256=DNmGJDXl27Drdfobrak8KYLmocW_uznVYFJOzcjUgmY,12
56
+ KekikStream-0.3.7.dist-info/RECORD,,