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.
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/VideoSeyred.py +8 -1
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Plugins/DiziYou.py +6 -2
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/__init__.py +20 -9
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream.egg-info/PKG-INFO +1 -1
- {kekikstream-1.0.7 → kekikstream-1.1.0}/PKG-INFO +1 -1
- {kekikstream-1.0.7 → kekikstream-1.1.0}/setup.py +1 -1
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/CLI/__init__.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/CLI/pypi_kontrol.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Core/Extractor/ExtractorBase.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Core/Extractor/ExtractorLoader.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Core/Extractor/ExtractorManager.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Core/Extractor/ExtractorModels.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Core/Media/MediaHandler.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Core/Media/MediaManager.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Core/Plugin/PluginBase.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Core/Plugin/PluginLoader.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Core/Plugin/PluginManager.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Core/Plugin/PluginModels.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Core/UI/UIManager.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Core/__init__.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/CloseLoad.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/ContentX.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/FourCX.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/FourPichive.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/FourPlayRu.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/HDStreamAble.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/Hotlinger.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/MailRu.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/MixPlayHD.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/MolyStream.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/Odnoklassniki.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/OkRuHTTP.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/OkRuSSL.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/PeaceMakerst.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/Pichive.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/PixelDrain.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/PlayRu.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/RapidVid.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/SibNet.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/Sobreatsesuyp.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/TRsTX.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/TauVideo.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/TurboImgz.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/VidMoly.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/VidMolyMe.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Extractors/VidMoxy.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Plugins/DiziBox.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Plugins/Dizilla.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Plugins/FilmMakinesi.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Plugins/FullHDFilmizlesene.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Plugins/JetFilmizle.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Plugins/RecTV.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Plugins/SezonlukDizi.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Plugins/Shorten.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Plugins/SineWix.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/Plugins/UgurFilm.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/__main__.py +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream/requirements.txt +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream.egg-info/SOURCES.txt +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream.egg-info/dependency_links.txt +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream.egg-info/entry_points.txt +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream.egg-info/requires.txt +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/KekikStream.egg-info/top_level.txt +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/LICENSE +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/MANIFEST.in +0 -0
- {kekikstream-1.0.7 → kekikstream-1.1.0}/README.md +0 -0
- {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()
|
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
|
222
|
-
|
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
|
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
|
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
|
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
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|