KekikStream 1.0.7__tar.gz → 1.1.0__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/VideoSeyred.py +8 -1
  2. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Plugins/DiziYou.py +6 -2
  3. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/__init__.py +20 -9
  4. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream.egg-info/PKG-INFO +1 -1
  5. {kekikstream-1.0.7 → kekikstream-1.1.0}/PKG-INFO +1 -1
  6. {kekikstream-1.0.7 → kekikstream-1.1.0}/setup.py +1 -1
  7. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/CLI/__init__.py +0 -0
  8. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/CLI/pypi_kontrol.py +0 -0
  9. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Core/Extractor/ExtractorBase.py +0 -0
  10. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Core/Extractor/ExtractorLoader.py +0 -0
  11. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Core/Extractor/ExtractorManager.py +0 -0
  12. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Core/Extractor/ExtractorModels.py +0 -0
  13. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Core/Media/MediaHandler.py +0 -0
  14. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Core/Media/MediaManager.py +0 -0
  15. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Core/Plugin/PluginBase.py +0 -0
  16. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Core/Plugin/PluginLoader.py +0 -0
  17. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Core/Plugin/PluginManager.py +0 -0
  18. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Core/Plugin/PluginModels.py +0 -0
  19. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Core/UI/UIManager.py +0 -0
  20. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Core/__init__.py +0 -0
  21. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/CloseLoad.py +0 -0
  22. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/ContentX.py +0 -0
  23. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/FourCX.py +0 -0
  24. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/FourPichive.py +0 -0
  25. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/FourPlayRu.py +0 -0
  26. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/HDStreamAble.py +0 -0
  27. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/Hotlinger.py +0 -0
  28. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/MailRu.py +0 -0
  29. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/MixPlayHD.py +0 -0
  30. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/MolyStream.py +0 -0
  31. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/Odnoklassniki.py +0 -0
  32. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/OkRuHTTP.py +0 -0
  33. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/OkRuSSL.py +0 -0
  34. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/PeaceMakerst.py +0 -0
  35. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/Pichive.py +0 -0
  36. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/PixelDrain.py +0 -0
  37. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/PlayRu.py +0 -0
  38. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/RapidVid.py +0 -0
  39. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/SibNet.py +0 -0
  40. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/Sobreatsesuyp.py +0 -0
  41. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/TRsTX.py +0 -0
  42. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/TauVideo.py +0 -0
  43. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/TurboImgz.py +0 -0
  44. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/VidMoly.py +0 -0
  45. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/VidMolyMe.py +0 -0
  46. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/VidMoxy.py +0 -0
  47. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Plugins/DiziBox.py +0 -0
  48. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Plugins/Dizilla.py +0 -0
  49. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Plugins/FilmMakinesi.py +0 -0
  50. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Plugins/FullHDFilmizlesene.py +0 -0
  51. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Plugins/JetFilmizle.py +0 -0
  52. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Plugins/RecTV.py +0 -0
  53. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Plugins/SezonlukDizi.py +0 -0
  54. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Plugins/Shorten.py +0 -0
  55. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Plugins/SineWix.py +0 -0
  56. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Plugins/UgurFilm.py +0 -0
  57. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/__main__.py +0 -0
  58. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/requirements.txt +0 -0
  59. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream.egg-info/SOURCES.txt +0 -0
  60. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream.egg-info/dependency_links.txt +0 -0
  61. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream.egg-info/entry_points.txt +0 -0
  62. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream.egg-info/requires.txt +0 -0
  63. {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream.egg-info/top_level.txt +0 -0
  64. {kekikstream-1.0.7 → kekikstream-1.1.0}/LICENSE +0 -0
  65. {kekikstream-1.0.7 → kekikstream-1.1.0}/MANIFEST.in +0 -0
  66. {kekikstream-1.0.7 → kekikstream-1.1.0}/README.md +0 -0
  67. {kekikstream-1.0.7 → kekikstream-1.1.0}/setup.cfg +0 -0
@@ -1,17 +1,24 @@
1
1
  # ! Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
2
2
 
3
3
  from KekikStream.Core import ExtractorBase, ExtractResult, Subtitle
4
- import json
4
+ import json, re
5
5
 
6
6
  class VideoSeyred(ExtractorBase):
7
7
  name = "VideoSeyred"
8
8
  main_url = "https://videoseyred.in"
9
9
 
10
10
  async def extract(self, url, referer=None) -> ExtractResult:
11
+ print(url)
11
12
  if referer:
12
13
  self.oturum.headers.update({"Referer": referer})
13
14
 
14
15
  video_id = url.split("embed/")[1].split("?")[0]
16
+ if len(video_id) > 10:
17
+ kontrol = await self.oturum.get(url)
18
+ kontrol.raise_for_status()
19
+
20
+ video_id = re.search(r"playlist\/(.*)\.json", kontrol.text)[1]
21
+
15
22
  video_url = f"{self.main_url}/playlist/{video_id}.json"
16
23
 
17
24
  response = await self.oturum.get(video_url)
@@ -71,7 +71,8 @@ class DiziYou(PluginBase):
71
71
  istek = await self.oturum.get(url)
72
72
  secici = Selector(istek.text)
73
73
 
74
- item_title = secici.css("div.title h1::text").get().strip()
74
+ item_title = secici.css("div.title h1::text").get()
75
+ ep_name = secici.css("div#bolum-ismi::text").get().strip()
75
76
  item_id = secici.css("iframe#diziyouPlayer::attr(src)").get().split("/")[-1].replace(".html", "")
76
77
 
77
78
  subtitles = []
@@ -114,7 +115,7 @@ class DiziYou(PluginBase):
114
115
  for stream in stream_urls:
115
116
  self._data[stream.get("url")] = {
116
117
  "ext_name" : f"{self.name} | {stream.get('dil')}",
117
- "name" : f"{self.name} | {stream.get('dil')} | {item_title}",
118
+ "name" : f"{self.name} | {stream.get('dil')} | {item_title} - {ep_name}",
118
119
  "referer" : url,
119
120
  "subtitles" : subtitles
120
121
  }
@@ -124,4 +125,7 @@ class DiziYou(PluginBase):
124
125
  async def play(self, name: str, url: str, referer: str, subtitles: list[Subtitle]):
125
126
  extract_result = ExtractResult(name=name, url=url, referer=referer, subtitles=subtitles)
126
127
  self.media_handler.title = name
128
+ if self.name not in self.media_handler.title:
129
+ self.media_handler.title = f"{self.name} | {self.media_handler.title}"
130
+
127
131
  self.media_handler.play_media(extract_result)
@@ -17,8 +17,9 @@ class KekikStream:
17
17
  self.suanki_eklenti: PluginBase = None
18
18
  self.secilen_sonuc = None
19
19
  self.dizi = False
20
+ self.bolum_baslik = ""
20
21
 
21
- def _temizle_ve_baslik_goster(self, baslik: str):
22
+ async def _temizle_ve_baslik_goster(self, baslik: str):
22
23
  """
23
24
  Konsolu temizler ve verilen başlıkla bir kural (separator) gösterir.
24
25
  """
@@ -29,7 +30,7 @@ class KekikStream:
29
30
  """
30
31
  Uygulamayı başlatır: konsolu temizler, başlığı gösterir ve eklenti seçimiyle devam eder.
31
32
  """
32
- self._temizle_ve_baslik_goster("[bold cyan]KekikStream Başlatılıyor[/bold cyan]")
33
+ await self._temizle_ve_baslik_goster("[bold cyan]KekikStream Başlatılıyor[/bold cyan]")
33
34
  # Eklenti kontrolü
34
35
  if not self.eklentiler_yonetici.get_plugin_names():
35
36
  return konsol.print("[bold red]Hiçbir eklenti bulunamadı![/bold red]")
@@ -41,7 +42,7 @@ class KekikStream:
41
42
  await self.eklentiler_yonetici.close_plugins()
42
43
 
43
44
  async def bi_bolum_daha(self):
44
- self._temizle_ve_baslik_goster(f"[bold cyan]{self.suanki_eklenti.name} » Bi Bölüm Daha?[/bold cyan]")
45
+ await self._temizle_ve_baslik_goster(f"[bold cyan]{self.suanki_eklenti.name} » Bi Bölüm Daha?[/bold cyan]")
45
46
  return await self.sonuc_detaylari_goster(self.secilen_sonuc)
46
47
 
47
48
  async def icerik_bitti(self):
@@ -83,7 +84,7 @@ class KekikStream:
83
84
  """
84
85
  Seçilen eklentiyle arama yapar; kullanıcıdan sorgu alır, sonuçları listeler ve seçim sonrası detayları gösterir.
85
86
  """
86
- self._temizle_ve_baslik_goster(f"[bold cyan]{self.suanki_eklenti.name} Eklentisinde Arama Yapın[/bold cyan]")
87
+ await self._temizle_ve_baslik_goster(f"[bold cyan]{self.suanki_eklenti.name} Eklentisinde Arama Yapın[/bold cyan]")
87
88
 
88
89
  # Kullanıcıdan sorgu al ve ara
89
90
  sorgu = await self.arayuz_yonetici.prompt_text("Arama sorgusu girin:")
@@ -110,7 +111,7 @@ class KekikStream:
110
111
  """
111
112
  Tüm eklentilerde arama yapar ve sonuçlara göre işlem yapar.
112
113
  """
113
- self._temizle_ve_baslik_goster("[bold cyan]Tüm Eklentilerde Arama Yapın[/bold cyan]")
114
+ await self._temizle_ve_baslik_goster("[bold cyan]Tüm Eklentilerde Arama Yapın[/bold cyan]")
114
115
  sorgu = await self.arayuz_yonetici.prompt_text("Arama sorgusu girin:")
115
116
  sonuclar = await self.tum_eklentilerde_arama_sorgula(sorgu)
116
117
 
@@ -218,14 +219,19 @@ class KekikStream:
218
219
  self.dizi = True
219
220
  await self.dizi_bolum_secimi(medya_bilgi)
220
221
  else:
221
- self.dizi = False
222
- baglantilar = await self.suanki_eklenti.load_links(medya_bilgi.url)
222
+ self.dizi = False
223
+ self.bolum_baslik = ""
224
+ baglantilar = await self.suanki_eklenti.load_links(medya_bilgi.url)
223
225
  await self.baglanti_secenekleri_goster(baglantilar)
224
226
 
225
227
  async def dizi_bolum_secimi(self, medya_bilgi: SeriesInfo):
226
228
  """
227
229
  Dizi içeriği için bölüm seçimi yapar ve seçilen bölümün bağlantılarını yükler.
228
230
  """
231
+ bolumler = {
232
+ bolum.url: f"{bolum.season}. Sezon {bolum.episode}. Bölüm" + (f" - {bolum.title}" if bolum.title else "")
233
+ for bolum in medya_bilgi.episodes
234
+ }
229
235
  secilen_bolum = await self.arayuz_yonetici.select_from_fuzzy(
230
236
  message = "İzlemek istediğiniz bölümü seçin:",
231
237
  choices = [
@@ -234,6 +240,8 @@ class KekikStream:
234
240
  ]
235
241
  )
236
242
  if secilen_bolum:
243
+ self.bolum_baslik = bolumler[secilen_bolum]
244
+
237
245
  baglantilar = await self.suanki_eklenti.load_links(secilen_bolum)
238
246
  await self.baglanti_secenekleri_goster(baglantilar)
239
247
 
@@ -323,7 +331,7 @@ class KekikStream:
323
331
  if not secilen_data:
324
332
  return
325
333
 
326
- self.__medya_ayarla(secilen_data)
334
+ await self.__medya_ayarla(secilen_data)
327
335
  self.medya_yonetici.play_media(secilen_data)
328
336
 
329
337
  await self.icerik_bitti()
@@ -339,7 +347,7 @@ class KekikStream:
339
347
  )
340
348
  return extract_data
341
349
 
342
- def __medya_ayarla(self, secilen_data):
350
+ async def __medya_ayarla(self, secilen_data):
343
351
  """
344
352
  Medya bilgilerini ayarlar.
345
353
  """
@@ -351,6 +359,9 @@ class KekikStream:
351
359
  if self.suanki_eklenti.name not in self.medya_yonetici.get_title():
352
360
  self.medya_yonetici.set_title(f"{self.suanki_eklenti.name} | {self.medya_yonetici.get_title()}")
353
361
 
362
+ if self.bolum_baslik:
363
+ self.medya_yonetici.set_title(f"{self.medya_yonetici.get_title()} | {self.bolum_baslik}")
364
+
354
365
  if secilen_data.name not in self.medya_yonetici.get_title():
355
366
  self.medya_yonetici.set_title(f"{self.medya_yonetici.get_title()} | {secilen_data.name}")
356
367
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: KekikStream
3
- Version: 1.0.7
3
+ Version: 1.1.0
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.2
2
2
  Name: KekikStream
3
- Version: 1.0.7
3
+ Version: 1.1.0
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 = "1.0.7",
9
+ version = "1.1.0",
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