KekikStream 2.0.2__py3-none-any.whl → 2.2.0__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.
- KekikStream/Core/Extractor/ExtractorBase.py +7 -2
- KekikStream/Core/Plugin/PluginBase.py +61 -13
- KekikStream/Extractors/CloseLoad.py +17 -2
- KekikStream/Extractors/ContentX.py +19 -2
- KekikStream/Extractors/DonilasPlay.py +86 -0
- KekikStream/Extractors/Filemoon.py +78 -0
- KekikStream/Extractors/MixTiger.py +5 -5
- KekikStream/Extractors/Odnoklassniki.py +6 -0
- KekikStream/Extractors/PeaceMakerst.py +6 -0
- KekikStream/Extractors/PlayerFilmIzle.py +8 -5
- KekikStream/Extractors/RapidVid.py +21 -5
- KekikStream/Extractors/SetPlay.py +13 -4
- KekikStream/Extractors/VCTPlay.py +41 -0
- KekikStream/Extractors/VidHide.py +11 -2
- KekikStream/Extractors/VidMoly.py +52 -30
- KekikStream/Extractors/YTDLP.py +88 -54
- KekikStream/Plugins/BelgeselX.py +196 -0
- KekikStream/Plugins/DiziBox.py +8 -12
- KekikStream/Plugins/DiziPal.py +11 -22
- KekikStream/Plugins/DiziYou.py +9 -17
- KekikStream/Plugins/Dizilla.py +19 -14
- KekikStream/Plugins/FilmBip.py +5 -8
- KekikStream/Plugins/FilmMakinesi.py +31 -21
- KekikStream/Plugins/FilmModu.py +14 -18
- KekikStream/Plugins/FullHDFilm.py +83 -27
- KekikStream/Plugins/FullHDFilmizlesene.py +6 -8
- KekikStream/Plugins/HDFilmCehennemi.py +133 -57
- KekikStream/Plugins/JetFilmizle.py +29 -14
- KekikStream/Plugins/KultFilmler.py +13 -15
- KekikStream/Plugins/RecTV.py +16 -24
- KekikStream/Plugins/RoketDizi.py +22 -32
- KekikStream/Plugins/SelcukFlix.py +99 -80
- KekikStream/Plugins/SetFilmIzle.py +252 -0
- KekikStream/Plugins/SezonlukDizi.py +43 -9
- KekikStream/Plugins/SineWix.py +13 -21
- KekikStream/Plugins/Sinefy.py +13 -10
- KekikStream/Plugins/SinemaCX.py +35 -38
- KekikStream/Plugins/Sinezy.py +5 -8
- KekikStream/Plugins/SuperFilmGeldi.py +36 -27
- KekikStream/Plugins/UgurFilm.py +7 -9
- KekikStream/__init__.py +17 -36
- {kekikstream-2.0.2.dist-info → kekikstream-2.2.0.dist-info}/METADATA +6 -3
- kekikstream-2.2.0.dist-info/RECORD +81 -0
- KekikStream/Extractors/ContentX_.py +0 -40
- KekikStream/Extractors/FirePlayer.py +0 -60
- KekikStream/Extractors/Odnoklassniki_.py +0 -11
- KekikStream/Extractors/PeaceMakerst_.py +0 -7
- KekikStream/Extractors/RapidVid_.py +0 -7
- KekikStream/Extractors/VidMoly_.py +0 -7
- kekikstream-2.0.2.dist-info/RECORD +0 -82
- {kekikstream-2.0.2.dist-info → kekikstream-2.2.0.dist-info}/WHEEL +0 -0
- {kekikstream-2.0.2.dist-info → kekikstream-2.2.0.dist-info}/entry_points.txt +0 -0
- {kekikstream-2.0.2.dist-info → kekikstream-2.2.0.dist-info}/licenses/LICENSE +0 -0
- {kekikstream-2.0.2.dist-info → kekikstream-2.2.0.dist-info}/top_level.txt +0 -0
KekikStream/Plugins/SineWix.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
|
2
2
|
|
|
3
|
-
from KekikStream.Core import PluginBase, MainPageResult, SearchResult, MovieInfo, Episode, SeriesInfo, ExtractResult
|
|
3
|
+
from KekikStream.Core import PluginBase, MainPageResult, SearchResult, MovieInfo, Episode, SeriesInfo, ExtractResult
|
|
4
4
|
import json
|
|
5
5
|
|
|
6
6
|
class SineWix(PluginBase):
|
|
@@ -123,21 +123,21 @@ class SineWix(PluginBase):
|
|
|
123
123
|
episodes = episodes,
|
|
124
124
|
)
|
|
125
125
|
|
|
126
|
-
async def load_links(self, url: str) -> list[
|
|
126
|
+
async def load_links(self, url: str) -> list[ExtractResult]:
|
|
127
127
|
try:
|
|
128
128
|
veri = json.loads(url)
|
|
129
129
|
if veri.get("is_episode"):
|
|
130
|
-
return [
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
130
|
+
return [ExtractResult(
|
|
131
|
+
url = veri.get("url"),
|
|
132
|
+
name = veri.get("title"),
|
|
133
|
+
referer = self.main_url
|
|
134
|
+
)]
|
|
135
135
|
except Exception:
|
|
136
136
|
pass
|
|
137
137
|
|
|
138
138
|
# Eğer JSON değilse ve direkt URL ise (eski yapı veya harici link)
|
|
139
139
|
if not url.startswith(self.main_url) and not url.startswith("{"):
|
|
140
|
-
return [
|
|
140
|
+
return [ExtractResult(url=url, name="Video")]
|
|
141
141
|
|
|
142
142
|
istek = await self.httpx.get(url)
|
|
143
143
|
veri = istek.json()
|
|
@@ -149,18 +149,10 @@ class SineWix(PluginBase):
|
|
|
149
149
|
results = []
|
|
150
150
|
for video in veri.get("videos"):
|
|
151
151
|
video_link = video.get("link").split("_blank\">")[-1]
|
|
152
|
-
results.append(
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
152
|
+
results.append(ExtractResult(
|
|
153
|
+
url = video_link,
|
|
154
|
+
name = f"{self.name}",
|
|
155
|
+
referer = self.main_url
|
|
156
|
+
))
|
|
157
157
|
|
|
158
158
|
return results
|
|
159
|
-
|
|
160
|
-
async def play(self, **kwargs):
|
|
161
|
-
extract_result = ExtractResult(**kwargs)
|
|
162
|
-
self.media_handler.title = kwargs.get("name")
|
|
163
|
-
if self.name not in self.media_handler.title:
|
|
164
|
-
self.media_handler.title = f"{self.name} | {self.media_handler.title}"
|
|
165
|
-
|
|
166
|
-
self.media_handler.play_media(extract_result)
|
KekikStream/Plugins/Sinefy.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
|
2
2
|
|
|
3
|
-
from KekikStream.Core import PluginBase, MainPageResult, SearchResult, SeriesInfo, Episode, MovieInfo
|
|
3
|
+
from KekikStream.Core import PluginBase, MainPageResult, SearchResult, SeriesInfo, Episode, MovieInfo, ExtractResult
|
|
4
4
|
from parsel import Selector
|
|
5
5
|
import re, json, urllib.parse
|
|
6
6
|
|
|
@@ -223,16 +223,19 @@ class Sinefy(PluginBase):
|
|
|
223
223
|
year = year
|
|
224
224
|
)
|
|
225
225
|
|
|
226
|
-
async def load_links(self, url: str) -> list[
|
|
226
|
+
async def load_links(self, url: str) -> list[ExtractResult]:
|
|
227
227
|
resp = await self.httpx.get(url)
|
|
228
228
|
sel = Selector(resp.text)
|
|
229
229
|
|
|
230
230
|
iframe = sel.css("iframe::attr(src)").get()
|
|
231
|
-
if iframe:
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
return [
|
|
231
|
+
if not iframe:
|
|
232
|
+
return []
|
|
233
|
+
|
|
234
|
+
iframe_url = self.fix_url(iframe)
|
|
235
|
+
|
|
236
|
+
# Always return iframe (matching Kotlin - no extractor check)
|
|
237
|
+
# loadExtractor in Kotlin handles extraction internally
|
|
238
|
+
return [ExtractResult(
|
|
239
|
+
url = iframe_url,
|
|
240
|
+
name = "Sinefy Player"
|
|
241
|
+
)]
|
KekikStream/Plugins/SinemaCX.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
|
2
2
|
|
|
3
|
-
from KekikStream.Core import PluginBase, MainPageResult, SearchResult, MovieInfo,
|
|
3
|
+
from KekikStream.Core import PluginBase, MainPageResult, SearchResult, MovieInfo, Subtitle, ExtractResult
|
|
4
4
|
from parsel import Selector
|
|
5
5
|
import re
|
|
6
6
|
|
|
@@ -9,23 +9,32 @@ class SinemaCX(PluginBase):
|
|
|
9
9
|
language = "tr"
|
|
10
10
|
main_url = "https://www.sinema.fit"
|
|
11
11
|
favicon = f"https://www.google.com/s2/favicons?domain={main_url}&sz=64"
|
|
12
|
-
description = "
|
|
12
|
+
description = "Türkiye'nin en iyi film platformu Sinema.cc! 2026'nın en yeni ve popüler yabancı yapımları, Türkçe dublaj ve altyazılı HD kalitede, reklamsız ve ücretsiz olarak seni bekliyor. Şimdi izle!"
|
|
13
13
|
|
|
14
14
|
main_page = {
|
|
15
|
-
f"{main_url}/page/SAYFA"
|
|
16
|
-
f"{main_url}/izle/aile-filmleri/page/SAYFA"
|
|
17
|
-
f"{main_url}/izle/aksiyon-filmleri/page/SAYFA"
|
|
18
|
-
f"{main_url}/izle/animasyon-filmleri/page/SAYFA"
|
|
19
|
-
f"{main_url}/izle/belgesel/page/SAYFA"
|
|
20
|
-
f"{main_url}/izle/bilim-kurgu-filmleri/page/SAYFA"
|
|
21
|
-
f"{main_url}/izle/biyografi/page/SAYFA"
|
|
22
|
-
f"{main_url}/izle/
|
|
23
|
-
f"{main_url}/izle/
|
|
24
|
-
f"{main_url}/izle/
|
|
25
|
-
f"{main_url}/izle/
|
|
26
|
-
f"{main_url}/izle/
|
|
27
|
-
f"{main_url}/izle/
|
|
28
|
-
f"{main_url}/izle/
|
|
15
|
+
f"{main_url}/page/SAYFA" : "Son Eklenen Filmler",
|
|
16
|
+
f"{main_url}/izle/aile-filmleri/page/SAYFA" : "Aile Filmleri",
|
|
17
|
+
f"{main_url}/izle/aksiyon-filmleri/page/SAYFA" : "Aksiyon Filmleri",
|
|
18
|
+
f"{main_url}/izle/animasyon-filmleri/page/SAYFA" : "Animasyon Filmleri",
|
|
19
|
+
f"{main_url}/izle/belgesel/page/SAYFA" : "Belgesel Filmleri",
|
|
20
|
+
f"{main_url}/izle/bilim-kurgu-filmleri/page/SAYFA" : "Bilim Kurgu Filmler",
|
|
21
|
+
f"{main_url}/izle/biyografi/page/SAYFA" : "Biyografi Filmleri",
|
|
22
|
+
f"{main_url}/izle/dram-filmleri/page/SAYFA" : "Dram Filmleri",
|
|
23
|
+
f"{main_url}/izle/erotik-filmler/page/SAYFA" : "Erotik Film",
|
|
24
|
+
f"{main_url}/izle/fantastik-filmler/page/SAYFA" : "Fantastik Filmler",
|
|
25
|
+
f"{main_url}/izle/gerilim-filmleri/page/SAYFA" : "Gerilim Filmleri",
|
|
26
|
+
f"{main_url}/izle/gizem-filmleri/page/SAYFA" : "Gizem Filmleri",
|
|
27
|
+
f"{main_url}/izle/komedi-filmleri/page/SAYFA" : "Komedi Filmleri",
|
|
28
|
+
f"{main_url}/izle/korku-filmleri/page/SAYFA" : "Korku Filmleri",
|
|
29
|
+
f"{main_url}/izle/macera-filmleri/page/SAYFA" : "Macera Filmleri",
|
|
30
|
+
f"{main_url}/izle/muzikal-filmler/page/SAYFA" : "Müzikal Filmler",
|
|
31
|
+
f"{main_url}/izle/romantik-filmler/page/SAYFA" : "Romantik Filmler",
|
|
32
|
+
f"{main_url}/izle/savas-filmleri/page/SAYFA" : "Savaş Filmleri",
|
|
33
|
+
f"{main_url}/izle/seri-filmler/page/SAYFA" : "Seri Filmler",
|
|
34
|
+
f"{main_url}/izle/spor-filmleri/page/SAYFA" : "Spor Filmleri",
|
|
35
|
+
f"{main_url}/izle/suc-filmleri/page/SAYFA" : "Suç Filmleri",
|
|
36
|
+
f"{main_url}/izle/tarihi-filmler/page/SAYFA" : "Tarih Filmler",
|
|
37
|
+
f"{main_url}/izle/western-filmleri/page/SAYFA" : "Western Filmler",
|
|
29
38
|
}
|
|
30
39
|
|
|
31
40
|
async def get_main_page(self, page: int, url: str, category: str) -> list[MainPageResult]:
|
|
@@ -75,7 +84,7 @@ class SinemaCX(PluginBase):
|
|
|
75
84
|
duration = int(duration_match[1]) if duration_match else None,
|
|
76
85
|
)
|
|
77
86
|
|
|
78
|
-
async def load_links(self, url: str) -> list[
|
|
87
|
+
async def load_links(self, url: str) -> list[ExtractResult]:
|
|
79
88
|
istek = await self.httpx.get(url)
|
|
80
89
|
secici = Selector(istek.text)
|
|
81
90
|
|
|
@@ -130,28 +139,16 @@ class SinemaCX(PluginBase):
|
|
|
130
139
|
vid_data = vid_istek.json()
|
|
131
140
|
|
|
132
141
|
if vid_data.get("securedLink"):
|
|
133
|
-
results.append(
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
142
|
+
results.append(ExtractResult(
|
|
143
|
+
name = f"{self.name}",
|
|
144
|
+
url = vid_data["securedLink"],
|
|
145
|
+
referer = iframe,
|
|
146
|
+
subtitles = subtitles
|
|
147
|
+
))
|
|
139
148
|
else:
|
|
140
149
|
# Extractor'a yönlendir
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
"url" : iframe,
|
|
145
|
-
"referer" : f"{self.main_url}/",
|
|
146
|
-
"subtitles" : subtitles
|
|
147
|
-
})
|
|
150
|
+
data = await self.extract(iframe)
|
|
151
|
+
if data:
|
|
152
|
+
results.append(data)
|
|
148
153
|
|
|
149
154
|
return results
|
|
150
|
-
|
|
151
|
-
async def play(self, **kwargs):
|
|
152
|
-
extract_result = ExtractResult(**kwargs)
|
|
153
|
-
self.media_handler.title = kwargs.get("name")
|
|
154
|
-
if self.name not in self.media_handler.title:
|
|
155
|
-
self.media_handler.title = f"{self.name} | {self.media_handler.title}"
|
|
156
|
-
|
|
157
|
-
self.media_handler.play_media(extract_result)
|
KekikStream/Plugins/Sinezy.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
|
2
2
|
|
|
3
|
-
from KekikStream.Core import PluginBase, MainPageResult, SearchResult, MovieInfo
|
|
3
|
+
from KekikStream.Core import PluginBase, MainPageResult, SearchResult, MovieInfo, ExtractResult
|
|
4
4
|
from parsel import Selector
|
|
5
5
|
import re, base64
|
|
6
6
|
|
|
@@ -120,7 +120,7 @@ class Sinezy(PluginBase):
|
|
|
120
120
|
year = year
|
|
121
121
|
)
|
|
122
122
|
|
|
123
|
-
async def load_links(self, url: str) -> list[
|
|
123
|
+
async def load_links(self, url: str) -> list[ExtractResult]:
|
|
124
124
|
resp = await self.httpx.get(url)
|
|
125
125
|
|
|
126
126
|
match = re.search(r"ilkpartkod\s*=\s*'([^']+)'", resp.text, re.IGNORECASE)
|
|
@@ -134,12 +134,9 @@ class Sinezy(PluginBase):
|
|
|
134
134
|
iframe = iframe_match.group(1)
|
|
135
135
|
iframe = self.fix_url(iframe)
|
|
136
136
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
"url" : iframe,
|
|
141
|
-
"name" : extractor.name if extractor else "Iframe"
|
|
142
|
-
}]
|
|
137
|
+
data = await self.extract(iframe)
|
|
138
|
+
if data:
|
|
139
|
+
return [data]
|
|
143
140
|
except Exception:
|
|
144
141
|
pass
|
|
145
142
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
|
2
2
|
|
|
3
|
-
from KekikStream.Core import PluginBase, MainPageResult, SearchResult, MovieInfo, ExtractResult
|
|
3
|
+
from KekikStream.Core import PluginBase, MainPageResult, SearchResult, MovieInfo, ExtractResult
|
|
4
4
|
from parsel import Selector
|
|
5
5
|
import re
|
|
6
6
|
|
|
@@ -9,20 +9,29 @@ class SuperFilmGeldi(PluginBase):
|
|
|
9
9
|
language = "tr"
|
|
10
10
|
main_url = "https://www.superfilmgeldi13.art"
|
|
11
11
|
favicon = f"https://www.google.com/s2/favicons?domain={main_url}&sz=64"
|
|
12
|
-
description = "
|
|
12
|
+
description = "Hd film izliyerek arkadaşlarınızla ve sevdiklerinizle iyi bir vakit geçirmek istiyorsanız açın bir film eğlenmeye bakın. Bilim kurgu filmleri, aşk drama vahşet aşk romantik sıradışı korku filmlerini izle."
|
|
13
13
|
|
|
14
14
|
main_page = {
|
|
15
|
-
f"{main_url}/page/SAYFA"
|
|
16
|
-
f"{main_url}/hdizle/category/aksiyon/page/SAYFA"
|
|
17
|
-
f"{main_url}/hdizle/category/animasyon/page/SAYFA"
|
|
18
|
-
f"{main_url}/hdizle/category/belgesel/page/SAYFA"
|
|
19
|
-
f"{main_url}/hdizle/category/
|
|
20
|
-
f"{main_url}/hdizle/category/
|
|
21
|
-
f"{main_url}/hdizle/category/
|
|
22
|
-
f"{main_url}/hdizle/category/
|
|
23
|
-
f"{main_url}/hdizle/category/gerilim/page/SAYFA"
|
|
24
|
-
f"{main_url}/hdizle/category/
|
|
25
|
-
f"{main_url}/hdizle/category/
|
|
15
|
+
f"{main_url}/page/SAYFA" : "Son Eklenenler",
|
|
16
|
+
f"{main_url}/hdizle/category/aksiyon/page/SAYFA" : "Aksiyon",
|
|
17
|
+
f"{main_url}/hdizle/category/animasyon/page/SAYFA" : "Animasyon",
|
|
18
|
+
f"{main_url}/hdizle/category/belgesel/page/SAYFA" : "Belgesel",
|
|
19
|
+
f"{main_url}/hdizle/category/biyografi/page/SAYFA" : "Biyografi",
|
|
20
|
+
f"{main_url}/hdizle/category/bilim-kurgu/page/SAYFA" : "Bilim Kurgu",
|
|
21
|
+
f"{main_url}/hdizle/category/fantastik/page/SAYFA" : "Fantastik",
|
|
22
|
+
f"{main_url}/hdizle/category/dram/page/SAYFA" : "Dram",
|
|
23
|
+
f"{main_url}/hdizle/category/gerilim/page/SAYFA" : "Gerilim",
|
|
24
|
+
f"{main_url}/hdizle/category/gizem/page/SAYFA" : "Gizem",
|
|
25
|
+
f"{main_url}/hdizle/category/komedi-filmleri/page/SAYFA" : "Komedi Filmleri",
|
|
26
|
+
f"{main_url}/hdizle/category/karete-filmleri/page/SAYFA" : "Karate Filmleri",
|
|
27
|
+
f"{main_url}/hdizle/category/korku/page/SAYFA" : "Korku",
|
|
28
|
+
f"{main_url}/hdizle/category/muzik/page/SAYFA" : "Müzik",
|
|
29
|
+
f"{main_url}/hdizle/category/macera/page/SAYFA" : "Macera",
|
|
30
|
+
f"{main_url}/hdizle/category/romantik/page/SAYFA" : "Romantik",
|
|
31
|
+
f"{main_url}/hdizle/category/spor/page/SAYFA" : "Spor",
|
|
32
|
+
f"{main_url}/hdizle/category/savas/page/SAYFA" : "Savaş",
|
|
33
|
+
f"{main_url}/hdizle/category/suc/page/SAYFA" : "Suç",
|
|
34
|
+
f"{main_url}/hdizle/category/western/page/SAYFA" : "Western",
|
|
26
35
|
}
|
|
27
36
|
|
|
28
37
|
async def get_main_page(self, page: int, url: str, category: str) -> list[MainPageResult]:
|
|
@@ -76,7 +85,9 @@ class SuperFilmGeldi(PluginBase):
|
|
|
76
85
|
actors = actors,
|
|
77
86
|
)
|
|
78
87
|
|
|
79
|
-
async def load_links(self, url: str) -> list[
|
|
88
|
+
async def load_links(self, url: str) -> list[ExtractResult]:
|
|
89
|
+
from KekikStream.Core import ExtractResult
|
|
90
|
+
|
|
80
91
|
istek = await self.httpx.get(url)
|
|
81
92
|
secici = Selector(istek.text)
|
|
82
93
|
|
|
@@ -89,7 +100,7 @@ class SuperFilmGeldi(PluginBase):
|
|
|
89
100
|
# Mix player özel işleme
|
|
90
101
|
if "mix" in iframe and "index.php?data=" in iframe:
|
|
91
102
|
iframe_istek = await self.httpx.get(iframe, headers={"Referer": f"{self.main_url}/"})
|
|
92
|
-
mix_point = re.search(r'videoUrl"
|
|
103
|
+
mix_point = re.search(r'videoUrl"\s*:\s*"(.*?)"\s*,\s*"videoServer', iframe_istek.text)
|
|
93
104
|
|
|
94
105
|
if mix_point:
|
|
95
106
|
mix_point = mix_point[1].replace("\\", "")
|
|
@@ -104,18 +115,16 @@ class SuperFilmGeldi(PluginBase):
|
|
|
104
115
|
|
|
105
116
|
m3u_link = iframe.split("/player")[0] + mix_point + end_point
|
|
106
117
|
|
|
107
|
-
results.append(
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
118
|
+
results.append(ExtractResult(
|
|
119
|
+
name = f"{self.name} | Mix Player",
|
|
120
|
+
url = m3u_link,
|
|
121
|
+
referer = iframe,
|
|
122
|
+
subtitles = []
|
|
123
|
+
))
|
|
113
124
|
else:
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
"referer" : f"{self.main_url}/"
|
|
119
|
-
})
|
|
125
|
+
# Extractor'a yönlendir
|
|
126
|
+
data = await self.extract(iframe)
|
|
127
|
+
if data:
|
|
128
|
+
results.append(data)
|
|
120
129
|
|
|
121
130
|
return results
|
KekikStream/Plugins/UgurFilm.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
|
2
2
|
|
|
3
|
-
from KekikStream.Core import PluginBase, MainPageResult, SearchResult, MovieInfo
|
|
3
|
+
from KekikStream.Core import PluginBase, MainPageResult, SearchResult, MovieInfo, ExtractResult
|
|
4
4
|
from parsel import Selector
|
|
5
5
|
|
|
6
6
|
class UgurFilm(PluginBase):
|
|
@@ -8,7 +8,7 @@ class UgurFilm(PluginBase):
|
|
|
8
8
|
language = "tr"
|
|
9
9
|
main_url = "https://ugurfilm3.xyz"
|
|
10
10
|
favicon = f"https://www.google.com/s2/favicons?domain={main_url}&sz=64"
|
|
11
|
-
description = "
|
|
11
|
+
description = "Uğur Film ile film izle! En yeni ve güncel filmleri, Türk yerli filmleri Full HD 1080p kalitede Türkçe Altyazılı olarak izle."
|
|
12
12
|
|
|
13
13
|
main_page = {
|
|
14
14
|
f"{main_url}/turkce-altyazili-filmler/page/" : "Türkçe Altyazılı Filmler",
|
|
@@ -79,12 +79,12 @@ class UgurFilm(PluginBase):
|
|
|
79
79
|
actors = actors,
|
|
80
80
|
)
|
|
81
81
|
|
|
82
|
-
async def load_links(self, url: str) -> list[
|
|
82
|
+
async def load_links(self, url: str) -> list[ExtractResult]:
|
|
83
83
|
istek = await self.httpx.get(url)
|
|
84
84
|
secici = Selector(istek.text)
|
|
85
85
|
results = []
|
|
86
86
|
|
|
87
|
-
for
|
|
87
|
+
for part_link in secici.css("li.parttab a::attr(href)").getall():
|
|
88
88
|
sub_response = await self.httpx.get(part_link)
|
|
89
89
|
sub_selector = Selector(sub_response.text)
|
|
90
90
|
|
|
@@ -100,10 +100,8 @@ class UgurFilm(PluginBase):
|
|
|
100
100
|
data = post_data
|
|
101
101
|
)
|
|
102
102
|
iframe = self.fix_url(player_response.json().get("iframe"))
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
"name" : f"{extractor.name if extractor else f'Part {idx + 1}'}"
|
|
107
|
-
})
|
|
103
|
+
data = await self.extract(iframe)
|
|
104
|
+
if data:
|
|
105
|
+
results.append(data)
|
|
108
106
|
|
|
109
107
|
return results
|
KekikStream/__init__.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
|
2
2
|
|
|
3
3
|
from .CLI import konsol, cikis_yap, hata_yakala, pypi_kontrol_guncelle
|
|
4
|
-
from .Core import PluginManager, ExtractorManager, UIManager, MediaManager, PluginBase, ExtractorBase, SeriesInfo
|
|
4
|
+
from .Core import PluginManager, ExtractorManager, UIManager, MediaManager, PluginBase, ExtractorBase, SeriesInfo, ExtractResult
|
|
5
5
|
from asyncio import run, TaskGroup, Semaphore
|
|
6
6
|
from contextlib import suppress
|
|
7
7
|
|
|
@@ -226,61 +226,42 @@ class KekikStream:
|
|
|
226
226
|
case "Çıkış":
|
|
227
227
|
cikis_yap(False)
|
|
228
228
|
|
|
229
|
-
async def show_link_options(self, links: list[
|
|
229
|
+
async def show_link_options(self, links: list[ExtractResult]):
|
|
230
230
|
"""Bağlantı seçeneklerini göster"""
|
|
231
231
|
if not links:
|
|
232
232
|
konsol.print("[bold red]Bağlantı bulunamadı![/bold red]")
|
|
233
233
|
return await self.handle_no_results()
|
|
234
234
|
|
|
235
|
-
# Direkt oynatma
|
|
236
|
-
|
|
237
|
-
return await self.play_direct(links)
|
|
235
|
+
# Direkt oynatma - tüm pluginlerde artık play metodu var (PluginBase'den miras)
|
|
236
|
+
return await self.play_direct(links)
|
|
238
237
|
|
|
239
|
-
|
|
240
|
-
url_list = [link["url"] for link in links]
|
|
241
|
-
mapping = self.extractor.map_links_to_extractors(url_list)
|
|
242
|
-
|
|
243
|
-
if not mapping:
|
|
244
|
-
konsol.print("[bold red]Extractor bulunamadı![/bold red]")
|
|
245
|
-
return await self.handle_no_results()
|
|
246
|
-
|
|
247
|
-
choice = await self.ui.select_from_list("Ne yapmak istersiniz?", ["İzle", "Tüm Eklentilerde Ara", "Ana Menü"])
|
|
248
|
-
|
|
249
|
-
match choice:
|
|
250
|
-
case "İzle":
|
|
251
|
-
await self.play_with_extractor(links, mapping)
|
|
252
|
-
case "Tüm Eklentilerde Ara":
|
|
253
|
-
await self.search_all_plugins()
|
|
254
|
-
case "Ana Menü":
|
|
255
|
-
await self.start()
|
|
256
|
-
|
|
257
|
-
async def play_direct(self, links: list[dict]):
|
|
238
|
+
async def play_direct(self, links: list[ExtractResult]):
|
|
258
239
|
"""Plugin'in kendi metoduyla oynat"""
|
|
259
240
|
selected = await self.ui.select_from_list(
|
|
260
241
|
message = "Bağlantı seçin:",
|
|
261
|
-
choices = [{"name": link.
|
|
242
|
+
choices = [{"name": link.name or "Bilinmiyor", "value": link} for link in links]
|
|
262
243
|
)
|
|
263
244
|
|
|
264
245
|
if not selected:
|
|
265
246
|
return await self.content_finished()
|
|
266
247
|
|
|
267
248
|
self.update_title(self.episode_title)
|
|
268
|
-
self.update_title(selected.
|
|
249
|
+
self.update_title(selected.name)
|
|
269
250
|
|
|
270
251
|
await self.current_plugin.play(
|
|
271
252
|
name = self.media.get_title(),
|
|
272
|
-
url = selected.
|
|
273
|
-
user_agent = selected.
|
|
274
|
-
referer = selected.
|
|
275
|
-
subtitles = selected.
|
|
253
|
+
url = selected.url,
|
|
254
|
+
user_agent = selected.user_agent,
|
|
255
|
+
referer = selected.referer,
|
|
256
|
+
subtitles = selected.subtitles or []
|
|
276
257
|
)
|
|
277
258
|
return await self.content_finished()
|
|
278
259
|
|
|
279
|
-
async def play_with_extractor(self, links: list[
|
|
260
|
+
async def play_with_extractor(self, links: list[ExtractResult], mapping: dict):
|
|
280
261
|
"""Extractor ile oynat"""
|
|
281
262
|
options = [
|
|
282
|
-
{"name": link.
|
|
283
|
-
for link in links if link
|
|
263
|
+
{"name": link.name or mapping.get(link.url, "Bilinmiyor"), "value": link}
|
|
264
|
+
for link in links if link.url in mapping
|
|
284
265
|
]
|
|
285
266
|
|
|
286
267
|
if not options:
|
|
@@ -291,7 +272,7 @@ class KekikStream:
|
|
|
291
272
|
if not selected:
|
|
292
273
|
return await self.content_finished()
|
|
293
274
|
|
|
294
|
-
url = selected.
|
|
275
|
+
url = selected.url
|
|
295
276
|
extractor: ExtractorBase = self.extractor.find_extractor(url)
|
|
296
277
|
|
|
297
278
|
if not extractor:
|
|
@@ -299,7 +280,7 @@ class KekikStream:
|
|
|
299
280
|
return await self.handle_no_results()
|
|
300
281
|
|
|
301
282
|
try:
|
|
302
|
-
referer = selected.
|
|
283
|
+
referer = selected.referer or self.current_plugin.main_url
|
|
303
284
|
extract_data = await extractor.extract(url, referer=referer)
|
|
304
285
|
except Exception as e:
|
|
305
286
|
konsol.print(f"[bold red]{extractor.name} hatası: {e}[/bold red]")
|
|
@@ -317,7 +298,7 @@ class KekikStream:
|
|
|
317
298
|
|
|
318
299
|
# Başlıkları güncelle ve oynat
|
|
319
300
|
self.update_title(self.episode_title)
|
|
320
|
-
self.update_title(selected.
|
|
301
|
+
self.update_title(selected.name)
|
|
321
302
|
self.update_title(extract_data.name)
|
|
322
303
|
|
|
323
304
|
self.media.play_media(extract_data)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: KekikStream
|
|
3
|
-
Version: 2.0
|
|
3
|
+
Version: 2.2.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
|
|
@@ -104,7 +104,7 @@ KekikStream modüler bir plugin mimarisi kullanır; her medya kaynağı bağıms
|
|
|
104
104
|
|
|
105
105
|
**Plugin Geliştirme:**
|
|
106
106
|
```python
|
|
107
|
-
from KekikStream.Core import PluginBase, MainPageResult, SearchResult, MovieInfo, SeriesInfo
|
|
107
|
+
from KekikStream.Core import PluginBase, MainPageResult, SearchResult, MovieInfo, SeriesInfo, ExtractResult
|
|
108
108
|
|
|
109
109
|
class MyPlugin(PluginBase):
|
|
110
110
|
name = "MyPlugin"
|
|
@@ -126,7 +126,7 @@ class MyPlugin(PluginBase):
|
|
|
126
126
|
async def load_item(self, url: str) -> MovieInfo | SeriesInfo:
|
|
127
127
|
return details
|
|
128
128
|
|
|
129
|
-
async def load_links(self, url: str) -> list[
|
|
129
|
+
async def load_links(self, url: str) -> list[ExtractResult]:
|
|
130
130
|
return links
|
|
131
131
|
```
|
|
132
132
|
|
|
@@ -292,6 +292,9 @@ Projeyi geliştirmek için katkılarınızı bekliyoruz!
|
|
|
292
292
|
|
|
293
293
|
- [keyiflerolsun/Kekik-cloudstream](https://github.com/keyiflerolsun/Kekik-cloudstream)
|
|
294
294
|
- [keyiflerolsun/seyirTurk-Parser](https://github.com/keyiflerolsun/seyirTurk-Parser)
|
|
295
|
+
- [feroxx/Kekik-cloudstream](https://github.com/feroxx/Kekik-cloudstream)
|
|
296
|
+
- [kerimmkirac/cs-kerim](https://github.com/kerimmkirac/cs-kerim)
|
|
297
|
+
- [Phisher98/Extractors](https://github.com/phisher98/cloudstream-extensions-phisher/blob/master/StreamPlay/src/main/kotlin/com/Phisher98/Extractors.kt)
|
|
295
298
|
|
|
296
299
|
## 🌐 Telif Hakkı ve Lisans
|
|
297
300
|
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
KekikStream/__init__.py,sha256=nTgIxO1716DVX-cZnMvwi6OjPbuebFyeYpHvpqCJ0Js,12767
|
|
2
|
+
KekikStream/__main__.py,sha256=B81dQoeGEb-T5Sycs3eNAmW7unvx0Mef0syCjs4nPds,137
|
|
3
|
+
KekikStream/requirements.txt,sha256=0fO-7byqgLMr4NyJO7fQBFOnLv0zcAeqk7tLhHXqonk,76
|
|
4
|
+
KekikStream/CLI/__init__.py,sha256=U6oLq_O7u5y2eHhBnmfhZNns_EqHHJXJmzl8jvZFUNY,230
|
|
5
|
+
KekikStream/CLI/pypi_kontrol.py,sha256=q6fNs6EKJDc5VuUFig9DBzLzNPp_kMD1vOVgLElcii8,1487
|
|
6
|
+
KekikStream/Core/__init__.py,sha256=Ise27_Hqe1YeqTcSNnf3HqynhbySEVC-pNP2uKa2GOo,771
|
|
7
|
+
KekikStream/Core/Extractor/ExtractorBase.py,sha256=CAdeel6zGlj_RHD0lwjyNW5hAaivo1XyAZbnmiVDaZo,2023
|
|
8
|
+
KekikStream/Core/Extractor/ExtractorLoader.py,sha256=GPGCmgFpDBywR8CsNw43-ddseZhSKTjAUETp1Ohbi6E,4796
|
|
9
|
+
KekikStream/Core/Extractor/ExtractorManager.py,sha256=VYkj4CCE5Puqsr6PCeN8i_OS0hfYKI4NScj98BLO39o,2644
|
|
10
|
+
KekikStream/Core/Extractor/ExtractorModels.py,sha256=Qj_gbIeGRewaZXNfYkTi4FFRRq6XBOc0HS0tXGDwajI,445
|
|
11
|
+
KekikStream/Core/Extractor/YTDLPCache.py,sha256=sRg5kwFxkRXA_8iRwsV29E51g9qQJvg8dWUnzfr7EwA,984
|
|
12
|
+
KekikStream/Core/Media/MediaHandler.py,sha256=MEn3spPAThVloN3WcoCwWhpoyMA7tAZvcwYjmjJsX3U,7678
|
|
13
|
+
KekikStream/Core/Media/MediaManager.py,sha256=AaUq2D7JSJIphjoAj2fjLOJjswm7Qf5hjYCbBdrbnDU,438
|
|
14
|
+
KekikStream/Core/Plugin/PluginBase.py,sha256=iirN7cQHccqUa6f6Gr86x8XYg4Rr6TlkaWOtbhnzU9g,5923
|
|
15
|
+
KekikStream/Core/Plugin/PluginLoader.py,sha256=GcDqN1u3nJeoGKH_oDFHCpwteJlLCxHNbmPrC5L-hZE,3692
|
|
16
|
+
KekikStream/Core/Plugin/PluginManager.py,sha256=CZVg1eegi8vfMfccx0DRV0Box8kXz-aoULTQLgbPbvM,893
|
|
17
|
+
KekikStream/Core/Plugin/PluginModels.py,sha256=Yvx-6Fkn8QCIcuqAkFbCP5EJcq3XBkK_P8S0tRNhS6E,2476
|
|
18
|
+
KekikStream/Core/UI/UIManager.py,sha256=T4V_kdTTWa-UDamgLSKa__dWJuzcvRK9NuwBlzU9Bzc,1693
|
|
19
|
+
KekikStream/Extractors/CloseLoad.py,sha256=m3wpLvbLRakqv0yn9v6OOpVlEDIqgAy6XBMIiuD5g0Q,1558
|
|
20
|
+
KekikStream/Extractors/ContentX.py,sha256=x0j67e1OAw4L1m7ejUTyiIxqr1EhvpjaA_0U-s4IQ-I,3617
|
|
21
|
+
KekikStream/Extractors/DonilasPlay.py,sha256=Lr60pEht96SMlXICYWo9J5dOwV4ty8fetBCCqJ3ARUY,3221
|
|
22
|
+
KekikStream/Extractors/DzenRu.py,sha256=X0Rhm1-W4YjQwVrJs8YFqVcCxMaZi8rsKiLhK_ZsYlU,1185
|
|
23
|
+
KekikStream/Extractors/ExPlay.py,sha256=EJNVKAbaIxlbOsCx7J9aLfNHKOFoqSLZZUw7W4QYeH0,1827
|
|
24
|
+
KekikStream/Extractors/Filemoon.py,sha256=l0AVyRrYA2DTuSkYoy6Jh02_w53TeBRyROkY9koiees,2684
|
|
25
|
+
KekikStream/Extractors/HDPlayerSystem.py,sha256=EgnFzx5Q4PkuwAtuff5SYU9k59B-CyOdySl7lbCZ9hM,1312
|
|
26
|
+
KekikStream/Extractors/JetTv.py,sha256=aA3WeOvR-tszac-WSwunZZb1NRy25TQH8vxY3TDscRI,1596
|
|
27
|
+
KekikStream/Extractors/MailRu.py,sha256=xQVCWwYqNoG5T43VAW1_m0v4e80FbO-1pNPKkwhTccU,1218
|
|
28
|
+
KekikStream/Extractors/MixPlayHD.py,sha256=POV_yq3KoZ6S6EqFsKYULEBz92NdUa2BpYKNo0eNQH8,1552
|
|
29
|
+
KekikStream/Extractors/MixTiger.py,sha256=4VbOYgE4s5H-BGVvJI0AI57M-WBWqnek_LGfCFHAucw,2116
|
|
30
|
+
KekikStream/Extractors/MolyStream.py,sha256=IeeBw9tJJrL5QQ-t2Yp-a-6lnDc3Y00UNiaN6m-o-7c,1160
|
|
31
|
+
KekikStream/Extractors/Odnoklassniki.py,sha256=YfFRCL3Ag5N4zDzK9ZLOr3HVQcsETFQpff1px02imJ0,4019
|
|
32
|
+
KekikStream/Extractors/PeaceMakerst.py,sha256=pEgJb3KDfEPAUjbuvrYbUlxIciKgED-Vd0arrRO3QCk,2317
|
|
33
|
+
KekikStream/Extractors/PixelDrain.py,sha256=Uk2pPvtBzaKtRXu1iNO8FLHd0EAuIOIzI1H_n02tg-U,964
|
|
34
|
+
KekikStream/Extractors/PlayerFilmIzle.py,sha256=kH-O_RtQvG4iRLGKi-sFn1ST14DrxxoAa5iRT2PsdXc,2503
|
|
35
|
+
KekikStream/Extractors/RapidVid.py,sha256=t_8ZUp5DCTIaohc5aW4s9HEQQ1A2lU5bTMX84lctmtY,3529
|
|
36
|
+
KekikStream/Extractors/SetPlay.py,sha256=6XuNXoNFM1h3KOCkTxeZmcAl8QTdqzVN_pp_dEIKF8A,2235
|
|
37
|
+
KekikStream/Extractors/SetPrime.py,sha256=ob09y-Sm91YR7rIRzikhZiMHX6D4Djm5QzFTg6KbO4k,1536
|
|
38
|
+
KekikStream/Extractors/SibNet.py,sha256=zJTkzlr34ufKCWzKKCgJrzhb2o-fpjTjFdi38gv6N6g,849
|
|
39
|
+
KekikStream/Extractors/Sobreatsesuyp.py,sha256=qlSQHUHjTjBoY0nsuZQWAjnfswbPORkBg6rUuP7SagA,2000
|
|
40
|
+
KekikStream/Extractors/TRsTX.py,sha256=mbSRGnQt26a73SbqwtY9rpiYFwgRgVbvA6bkGb_PvP8,2152
|
|
41
|
+
KekikStream/Extractors/TauVideo.py,sha256=2ai9BwwM6qlCgxK7E0B642LtOF5y4hEb9tQ2aDpbMtc,1112
|
|
42
|
+
KekikStream/Extractors/TurboImgz.py,sha256=nnWnP1K4JZbMj6S-YuXxej31UZtF4JcboSW4n7A4A5c,824
|
|
43
|
+
KekikStream/Extractors/TurkeyPlayer.py,sha256=FX_H3vzXjAD7IjK11bjJVVw_VdPQ4n6YQLfjQ6E3t7o,1247
|
|
44
|
+
KekikStream/Extractors/VCTPlay.py,sha256=1BCl2_vVIrwvG56LCzl2KE5g2CUaMAhzImOZMdZpZCQ,1377
|
|
45
|
+
KekikStream/Extractors/VidHide.py,sha256=UIAPFLbGDPRjcJVuDmaVbFN5r0ZyJoW4CRn1INH8mJs,2837
|
|
46
|
+
KekikStream/Extractors/VidMoly.py,sha256=QLRRGH1uHFTREl5Oq3V8WIkVpqaZuuygmHaW1ulj1Lg,4774
|
|
47
|
+
KekikStream/Extractors/VidMoxy.py,sha256=LT7wTKBtuuagXwfGjWZwQF2NQGuChurZJ-I6gM0Jcek,1771
|
|
48
|
+
KekikStream/Extractors/VidPapi.py,sha256=g9ohdL9VJrxy4N7xerbIRz3ZxjsXFHlJWy0NaZ31hFY,3259
|
|
49
|
+
KekikStream/Extractors/VideoSeyred.py,sha256=M6QPZ_isX9vM_7LPo-2I_8Cf1vB9awHw8vvzBODtoiQ,1977
|
|
50
|
+
KekikStream/Extractors/YTDLP.py,sha256=Hy8loCSFSquu2zaL3INord-Jm6T8CM6K2-VcDA2K79g,7390
|
|
51
|
+
KekikStream/Extractors/YildizKisaFilm.py,sha256=R_JlrOVeMiDlXYcuTdItnKvidyx8_u3B14fSrxew2aE,1316
|
|
52
|
+
KekikStream/Plugins/BelgeselX.py,sha256=upxN78gIFrPdVCw3hJ0DGqwa6vtrd_ShCWbO7_JLQhg,8427
|
|
53
|
+
KekikStream/Plugins/DiziBox.py,sha256=3O8RHPvzMPcMB-8Wc1gwxI7GQlBitQvz4WDR6bmXuqQ,9715
|
|
54
|
+
KekikStream/Plugins/DiziPal.py,sha256=xwz6XeN2bMvShClfsPTK5dI4EktSZQyCrVu8Gn0x_pU,9715
|
|
55
|
+
KekikStream/Plugins/DiziYou.py,sha256=sH4UOCEbl-o9fIGORgz1YVMMnfbZVfjnitPsGuCl7PI,8698
|
|
56
|
+
KekikStream/Plugins/Dizilla.py,sha256=Rk_rS6ymlj5RT-ZBspjXS-Dv0ds3d9n46LCpGKtycP4,11765
|
|
57
|
+
KekikStream/Plugins/FilmBip.py,sha256=xJA79gwPXwvdQLfUu5QGdwv8kGZngjAg3csLQqQYSDU,6036
|
|
58
|
+
KekikStream/Plugins/FilmMakinesi.py,sha256=_Ulwi0bo-8bXZZjRxbpBKAIkAnlyG6D0qEvD1UJTsjk,5708
|
|
59
|
+
KekikStream/Plugins/FilmModu.py,sha256=HVawdKHuqcFb3PQ-93uwGlwv1dNhkM2kpStBlTJJXR4,6553
|
|
60
|
+
KekikStream/Plugins/FullHDFilm.py,sha256=fimK5MqPYjmog859lfuEuJeg8AGylYyDm36Ak3X3Msg,9768
|
|
61
|
+
KekikStream/Plugins/FullHDFilmizlesene.py,sha256=_-HaoNvPVzITB_aK3jOkSSAOA50SYFNdnjHH4JGCmOc,6078
|
|
62
|
+
KekikStream/Plugins/HDFilmCehennemi.py,sha256=I-dwkerkwfzcaSQA9XzIGh2LeRywBGydX0D0k6FmoOc,13029
|
|
63
|
+
KekikStream/Plugins/JetFilmizle.py,sha256=njmaX7Rhi0bewZvK_NO9PTs86uB-8zxYcuwrYthA2aw,7956
|
|
64
|
+
KekikStream/Plugins/KultFilmler.py,sha256=ODnQu2_qLKx68dpT16MFUiIXYQlkQSDU0x15o91LWU8,9097
|
|
65
|
+
KekikStream/Plugins/RecTV.py,sha256=Nj4AdeetPMzvZ-VKUdUGhBC1SiFSBRYRebODgE2UeI8,7228
|
|
66
|
+
KekikStream/Plugins/RoketDizi.py,sha256=7cP6935unhrn_yDt0hsLoW3nboX3WUD0P2DqqRny3_M,8568
|
|
67
|
+
KekikStream/Plugins/SelcukFlix.py,sha256=WKMsZpVVdHn_zW69xxhAuIP7OhAPbPFxFRWzGzHBgaE,13601
|
|
68
|
+
KekikStream/Plugins/SetFilmIzle.py,sha256=EcoHSacJO9bvzA9lZZzDZAwAhXfaDstI4M4C3YOwvEU,10113
|
|
69
|
+
KekikStream/Plugins/SezonlukDizi.py,sha256=7N4S8ikA4IzHszD5WaXAUESAVfHDKSnMQeX4iQFP3KY,8457
|
|
70
|
+
KekikStream/Plugins/SineWix.py,sha256=z0r90lggAugEWE1g9vg8gZsInBObUZPnVFQwq7GYmJs,7052
|
|
71
|
+
KekikStream/Plugins/Sinefy.py,sha256=Ogw0-qjROz8T0EkV1jwbOvz0WM4FN9D24bNrJmi314k,9998
|
|
72
|
+
KekikStream/Plugins/SinemaCX.py,sha256=aujqCWPGZHcRqKcMFlZYEwMonj0C_UQ_J4ZqCyF59pU,7492
|
|
73
|
+
KekikStream/Plugins/Sinezy.py,sha256=lFOfbMwxzP6IkhPZ_C3ZWGrgwThSk58pYQAD61rCJnM,6128
|
|
74
|
+
KekikStream/Plugins/SuperFilmGeldi.py,sha256=dqU1IJHcTPU9zlnA9rSKsX0ehpBYSgDuz6eSlCCop8k,6044
|
|
75
|
+
KekikStream/Plugins/UgurFilm.py,sha256=TlMDy3tSfkEUy_ziIdCkgnfmoRtVdXEv8m4kjKeAWrE,4696
|
|
76
|
+
kekikstream-2.2.0.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
|
77
|
+
kekikstream-2.2.0.dist-info/METADATA,sha256=bTOZwY8eWMqFaV8mBsxRjS-NPd8HAAtdJGQvjD3K_Ng,10407
|
|
78
|
+
kekikstream-2.2.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
79
|
+
kekikstream-2.2.0.dist-info/entry_points.txt,sha256=dFwdiTx8djyehI0Gsz-rZwjAfZzUzoBSrmzRu9ubjJc,50
|
|
80
|
+
kekikstream-2.2.0.dist-info/top_level.txt,sha256=DNmGJDXl27Drdfobrak8KYLmocW_uznVYFJOzcjUgmY,12
|
|
81
|
+
kekikstream-2.2.0.dist-info/RECORD,,
|