KekikStream 1.4.4__py3-none-any.whl → 2.0.2__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/CLI/pypi_kontrol.py +6 -6
- KekikStream/Core/Extractor/ExtractorBase.py +13 -12
- KekikStream/Core/Extractor/ExtractorLoader.py +25 -17
- KekikStream/Core/Extractor/ExtractorManager.py +53 -9
- KekikStream/Core/Extractor/ExtractorModels.py +5 -7
- KekikStream/Core/Extractor/YTDLPCache.py +35 -0
- KekikStream/Core/Media/MediaHandler.py +52 -31
- KekikStream/Core/Media/MediaManager.py +0 -3
- KekikStream/Core/Plugin/PluginBase.py +47 -21
- KekikStream/Core/Plugin/PluginLoader.py +11 -7
- KekikStream/Core/Plugin/PluginModels.py +25 -25
- KekikStream/Core/__init__.py +1 -0
- KekikStream/Extractors/CloseLoad.py +6 -26
- KekikStream/Extractors/ContentX_.py +40 -0
- KekikStream/Extractors/DzenRu.py +38 -0
- KekikStream/Extractors/ExPlay.py +53 -0
- KekikStream/Extractors/FirePlayer.py +60 -0
- KekikStream/Extractors/HDPlayerSystem.py +41 -0
- KekikStream/Extractors/JetTv.py +45 -0
- KekikStream/Extractors/MailRu.py +2 -4
- KekikStream/Extractors/MixTiger.py +57 -0
- KekikStream/Extractors/MolyStream.py +25 -7
- KekikStream/Extractors/Odnoklassniki.py +16 -11
- KekikStream/Extractors/{OkRuHTTP.py → Odnoklassniki_.py} +5 -1
- KekikStream/Extractors/{HDStreamAble.py → PeaceMakerst_.py} +1 -1
- KekikStream/Extractors/PixelDrain.py +0 -1
- KekikStream/Extractors/PlayerFilmIzle.py +62 -0
- KekikStream/Extractors/RapidVid.py +30 -13
- KekikStream/Extractors/RapidVid_.py +7 -0
- KekikStream/Extractors/SetPlay.py +57 -0
- KekikStream/Extractors/SetPrime.py +45 -0
- KekikStream/Extractors/SibNet.py +0 -1
- KekikStream/Extractors/TurkeyPlayer.py +34 -0
- KekikStream/Extractors/VidHide.py +72 -0
- KekikStream/Extractors/VidMoly.py +20 -19
- KekikStream/Extractors/{VidMolyMe.py → VidMoly_.py} +1 -1
- KekikStream/Extractors/VidMoxy.py +0 -1
- KekikStream/Extractors/VidPapi.py +89 -0
- KekikStream/Extractors/YTDLP.py +177 -0
- KekikStream/Extractors/YildizKisaFilm.py +41 -0
- KekikStream/Plugins/DiziBox.py +28 -16
- KekikStream/Plugins/DiziPal.py +246 -0
- KekikStream/Plugins/DiziYou.py +58 -31
- KekikStream/Plugins/Dizilla.py +97 -68
- KekikStream/Plugins/FilmBip.py +145 -0
- KekikStream/Plugins/FilmMakinesi.py +61 -52
- KekikStream/Plugins/FilmModu.py +138 -0
- KekikStream/Plugins/FullHDFilm.py +164 -0
- KekikStream/Plugins/FullHDFilmizlesene.py +38 -37
- KekikStream/Plugins/HDFilmCehennemi.py +44 -54
- KekikStream/Plugins/JetFilmizle.py +68 -42
- KekikStream/Plugins/KultFilmler.py +219 -0
- KekikStream/Plugins/RecTV.py +41 -37
- KekikStream/Plugins/RoketDizi.py +232 -0
- KekikStream/Plugins/SelcukFlix.py +309 -0
- KekikStream/Plugins/SezonlukDizi.py +16 -14
- KekikStream/Plugins/SineWix.py +39 -30
- KekikStream/Plugins/Sinefy.py +238 -0
- KekikStream/Plugins/SinemaCX.py +157 -0
- KekikStream/Plugins/Sinezy.py +146 -0
- KekikStream/Plugins/SuperFilmGeldi.py +121 -0
- KekikStream/Plugins/UgurFilm.py +10 -10
- KekikStream/__init__.py +296 -319
- KekikStream/requirements.txt +3 -4
- kekikstream-2.0.2.dist-info/METADATA +309 -0
- kekikstream-2.0.2.dist-info/RECORD +82 -0
- {kekikstream-1.4.4.dist-info → kekikstream-2.0.2.dist-info}/WHEEL +1 -1
- KekikStream/Extractors/FourCX.py +0 -7
- KekikStream/Extractors/FourPichive.py +0 -7
- KekikStream/Extractors/FourPlayRu.py +0 -7
- KekikStream/Extractors/Hotlinger.py +0 -7
- KekikStream/Extractors/OkRuSSL.py +0 -7
- KekikStream/Extractors/Pichive.py +0 -7
- KekikStream/Extractors/PlayRu.py +0 -7
- KekikStream/Helpers/Unpack.py +0 -75
- KekikStream/Plugins/Shorten.py +0 -225
- kekikstream-1.4.4.dist-info/METADATA +0 -108
- kekikstream-1.4.4.dist-info/RECORD +0 -63
- {kekikstream-1.4.4.dist-info → kekikstream-2.0.2.dist-info}/entry_points.txt +0 -0
- {kekikstream-1.4.4.dist-info → kekikstream-2.0.2.dist-info/licenses}/LICENSE +0 -0
- {kekikstream-1.4.4.dist-info → kekikstream-2.0.2.dist-info}/top_level.txt +0 -0
KekikStream/Plugins/Shorten.py
DELETED
|
@@ -1,225 +0,0 @@
|
|
|
1
|
-
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
|
2
|
-
|
|
3
|
-
from KekikStream.Core import kekik_cache, PluginBase, SearchResult, MovieInfo, Episode, SeriesInfo, ExtractResult, Subtitle
|
|
4
|
-
from Kekik.unicode_tr import unicode_tr
|
|
5
|
-
import re, json, base64
|
|
6
|
-
|
|
7
|
-
async def extract_next_f_push_data(source_code):
|
|
8
|
-
"""
|
|
9
|
-
Kaynak kod içerisindeki self.__next_f.push(...) çağrılarını yakalayıp,
|
|
10
|
-
içlerindeki key-value bilgilerini tek bir sözlükte birleştirir.
|
|
11
|
-
"""
|
|
12
|
-
# self.__next_f.push( ... ) içindeki array'i yakalayan regex (DOTALL ile çok satırlı aramalarda)
|
|
13
|
-
pattern = r"self\.__next_f\.push\(\s*(\[[\s\S]*?\])\s*\)"
|
|
14
|
-
matches = re.findall(pattern, source_code, re.DOTALL)
|
|
15
|
-
|
|
16
|
-
combined = {}
|
|
17
|
-
|
|
18
|
-
for match in matches:
|
|
19
|
-
try:
|
|
20
|
-
# Yakalanan array'i JSON olarak ayrıştırıyoruz
|
|
21
|
-
arr = json.loads(match)
|
|
22
|
-
except json.JSONDecodeError as e:
|
|
23
|
-
print("JSON ayrıştırma hatası:", e)
|
|
24
|
-
continue
|
|
25
|
-
|
|
26
|
-
# Eğer push çağrısı iki elemanlı ve ikinci eleman string ise işleme alalım.
|
|
27
|
-
if isinstance(arr, list) and len(arr) == 2 and isinstance(arr[1], str):
|
|
28
|
-
data_str = arr[1]
|
|
29
|
-
# String içerisindeki satırları ayırıyoruz
|
|
30
|
-
for line in data_str.splitlines():
|
|
31
|
-
line = line.strip()
|
|
32
|
-
if not line:
|
|
33
|
-
continue
|
|
34
|
-
# Beklenen format: key:değer şeklinde
|
|
35
|
-
if ':' in line:
|
|
36
|
-
key, value = line.split(':', 1)
|
|
37
|
-
key = key.strip()
|
|
38
|
-
value = value.strip()
|
|
39
|
-
|
|
40
|
-
# Eğer değer HL[...] veya I[...] gibi bir formatta ise
|
|
41
|
-
m = re.match(r'^(HL|I)(\[[\s\S]*\])$', value)
|
|
42
|
-
if m:
|
|
43
|
-
prefix = m.group(1)
|
|
44
|
-
json_part = m.group(2)
|
|
45
|
-
try:
|
|
46
|
-
parsed_val = json.loads(json_part)
|
|
47
|
-
value = {prefix: parsed_val}
|
|
48
|
-
except json.JSONDecodeError:
|
|
49
|
-
# Ayrıştırılamazsa orijinal değeri bırakıyoruz.
|
|
50
|
-
pass
|
|
51
|
-
else:
|
|
52
|
-
# Değerin tamamı [ ... ] veya { ... } şeklinde ise JSON ayrıştırmayı deniyoruz.
|
|
53
|
-
if (value.startswith('[') and value.endswith(']')) or (value.startswith('{') and value.endswith('}')):
|
|
54
|
-
try:
|
|
55
|
-
value = json.loads(value)
|
|
56
|
-
except json.JSONDecodeError:
|
|
57
|
-
pass
|
|
58
|
-
# Eğer aynı anahtar daha önce varsa üzerine yazar.
|
|
59
|
-
combined[key] = value
|
|
60
|
-
# Eğer push çağrısı farklı bir formatta ise (örneğin [0] veya [2, null]),
|
|
61
|
-
# ihtiyaca göre burada ek işleme yapabilirsiniz.
|
|
62
|
-
|
|
63
|
-
return combined
|
|
64
|
-
|
|
65
|
-
class Shorten(PluginBase):
|
|
66
|
-
name = "Shorten"
|
|
67
|
-
main_url = "https://shorten.com"
|
|
68
|
-
token = None
|
|
69
|
-
|
|
70
|
-
async def __giris(self):
|
|
71
|
-
await self.httpx.get(f"{self.main_url}/tr", follow_redirects=True)
|
|
72
|
-
|
|
73
|
-
self.token = await self.httpx.get(f"{self.main_url}/api/session")
|
|
74
|
-
self.token = self.token.json().get("token")
|
|
75
|
-
|
|
76
|
-
self.httpx.headers.update({"Authorization": f"Bearer {self.token}"})
|
|
77
|
-
|
|
78
|
-
async def raw_diziler(self):
|
|
79
|
-
if not self.token:
|
|
80
|
-
await self.__giris()
|
|
81
|
-
|
|
82
|
-
veriler = await self.httpx.get("https://api.shorten.watch/api/series/you-might-like?page=1&per_page=100")
|
|
83
|
-
veriler = veriler.json()
|
|
84
|
-
|
|
85
|
-
return [
|
|
86
|
-
{
|
|
87
|
-
"title" : unicode_tr(veri.get("title")).title(),
|
|
88
|
-
"slug" : veri.get("slug"),
|
|
89
|
-
} for veri in veriler.get("data")
|
|
90
|
-
]
|
|
91
|
-
|
|
92
|
-
async def raw_bolumler(self, slug):
|
|
93
|
-
if not self.token:
|
|
94
|
-
await self.__giris()
|
|
95
|
-
|
|
96
|
-
istek = await self.httpx.get(f"{self.main_url}/tr/series/{slug}", follow_redirects=True)
|
|
97
|
-
veriler = await extract_next_f_push_data(istek.text)
|
|
98
|
-
veriler = veriler["8"][-1]["children"][-2][-1]["children"][-1]["data"]
|
|
99
|
-
return [
|
|
100
|
-
{
|
|
101
|
-
"number" : veri.get("number"),
|
|
102
|
-
"hash" : veri.get("hash")
|
|
103
|
-
} for veri in veriler.get("episodes")
|
|
104
|
-
]
|
|
105
|
-
|
|
106
|
-
async def hls_decode_video(self, token):
|
|
107
|
-
token = base64.b64decode(token).decode("utf-8")
|
|
108
|
-
token = json.loads(token).get("GetPlayInfoToken")
|
|
109
|
-
|
|
110
|
-
istek = self.cloudscraper.get(
|
|
111
|
-
url = f"https://vod.byteplusapi.com/?{token}",
|
|
112
|
-
headers = {
|
|
113
|
-
"User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36",
|
|
114
|
-
"Content-Type" : "application/json",
|
|
115
|
-
"Origin" : "https://vod.byteplusapi.com",
|
|
116
|
-
"Referer" : f"{self.main_url}/",
|
|
117
|
-
}
|
|
118
|
-
)
|
|
119
|
-
|
|
120
|
-
veriler = istek.json()
|
|
121
|
-
return veriler["Result"]["PlayInfoList"][-1]["MainPlayUrl"]
|
|
122
|
-
|
|
123
|
-
async def bolumler(self, slug):
|
|
124
|
-
if not self.token:
|
|
125
|
-
await self.__giris()
|
|
126
|
-
|
|
127
|
-
raw_req = await self.raw_bolumler(slug)
|
|
128
|
-
number, _hash = raw_req[0].values()
|
|
129
|
-
|
|
130
|
-
istek = await self.httpx.get(f"{self.main_url}/tr/series/{slug}/episode-{number}-{_hash}", follow_redirects=True)
|
|
131
|
-
veriler = await extract_next_f_push_data(istek.text)
|
|
132
|
-
veriler = veriler["b"][3]["children"][1][3]["children"][3]["children"][3]["children"][-1]
|
|
133
|
-
|
|
134
|
-
for index, video in enumerate(veriler["videos"]):
|
|
135
|
-
copy = veriler["data"]["episodes"][index].copy()
|
|
136
|
-
for key in copy.keys():
|
|
137
|
-
del veriler["data"]["episodes"][index][key]
|
|
138
|
-
|
|
139
|
-
for sub in copy.get("subtitles"):
|
|
140
|
-
for sil in ["id", "format", "sub_id"]:
|
|
141
|
-
del sub[sil]
|
|
142
|
-
sub["url"] = f"https://cdn.shorten.watch/{sub['url']}"
|
|
143
|
-
|
|
144
|
-
veriler["data"]["episodes"][index] = {
|
|
145
|
-
"number" : copy.get("number"),
|
|
146
|
-
"image" : copy.get("cover_image"),
|
|
147
|
-
"hls" : video["hashHls"],
|
|
148
|
-
"subtitles" : copy.get("subtitles")
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
veriler["data"]["episode"] = veriler["data"]["episode"]["total"]
|
|
152
|
-
del veriler["data"]["is_favorite"]
|
|
153
|
-
|
|
154
|
-
veriler["data"]["title"] = unicode_tr(veriler["data"]["title"]).title()
|
|
155
|
-
|
|
156
|
-
return veriler["data"]
|
|
157
|
-
|
|
158
|
-
@kekik_cache(ttl=60*60)
|
|
159
|
-
async def search(self, query: str) -> list[SearchResult]:
|
|
160
|
-
veriler = await self.raw_diziler()
|
|
161
|
-
|
|
162
|
-
return [
|
|
163
|
-
SearchResult(
|
|
164
|
-
title = veri.get("title"),
|
|
165
|
-
url = veri.get("slug"),
|
|
166
|
-
poster = "",
|
|
167
|
-
)
|
|
168
|
-
for veri in veriler
|
|
169
|
-
]
|
|
170
|
-
|
|
171
|
-
@kekik_cache(ttl=60*60)
|
|
172
|
-
async def load_item(self, url: str) -> MovieInfo:
|
|
173
|
-
veri = await self.bolumler(url)
|
|
174
|
-
|
|
175
|
-
episodes = []
|
|
176
|
-
for episode in veri.get("episodes"):
|
|
177
|
-
episode["name"] = veri["title"] + f" | {episode.get('number')}. Bölüm"
|
|
178
|
-
episode["subtitles"] = [subtitle for subtitle in episode["subtitles"] if subtitle.get("code").lower() in ["tr", "en"]]
|
|
179
|
-
episode["subtitles"].reverse()
|
|
180
|
-
|
|
181
|
-
ep_model = Episode(
|
|
182
|
-
season = 1,
|
|
183
|
-
episode = episode.get("number"),
|
|
184
|
-
title = "",
|
|
185
|
-
url = json.dumps(episode, indent=2, ensure_ascii=False, sort_keys=False),
|
|
186
|
-
)
|
|
187
|
-
|
|
188
|
-
episodes.append(ep_model)
|
|
189
|
-
self._data[ep_model.url] = {
|
|
190
|
-
"ext_name" : self.name,
|
|
191
|
-
"name" : f"{ep_model.title}",
|
|
192
|
-
"referer" : f"{self.main_url}/tr",
|
|
193
|
-
"subtitles" : []
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
return SeriesInfo(
|
|
197
|
-
url = url,
|
|
198
|
-
poster = veri.get("image"),
|
|
199
|
-
title = veri.get("title"),
|
|
200
|
-
description = veri.get("description"),
|
|
201
|
-
tags = [genre.get("static_key") for genre in veri.get("categories")],
|
|
202
|
-
rating = 0,
|
|
203
|
-
year = 0,
|
|
204
|
-
actors = [],
|
|
205
|
-
episodes = episodes,
|
|
206
|
-
)
|
|
207
|
-
|
|
208
|
-
@kekik_cache(ttl=15*60)
|
|
209
|
-
async def load_links(self, url: str) -> list[str]:
|
|
210
|
-
return [url]
|
|
211
|
-
|
|
212
|
-
async def play(self, name: str, url: str, referer: str, subtitles: list[Subtitle]):
|
|
213
|
-
veri = json.loads(url)
|
|
214
|
-
name = veri.get("name")
|
|
215
|
-
url = await self.hls_decode_video(veri.get("hls"))
|
|
216
|
-
subtitles = [
|
|
217
|
-
Subtitle(
|
|
218
|
-
name = subtitle.get("language"),
|
|
219
|
-
url = subtitle.get("url"),
|
|
220
|
-
)
|
|
221
|
-
for subtitle in veri.get("subtitles")
|
|
222
|
-
]
|
|
223
|
-
extract_result = ExtractResult(name=name, url=url, referer=referer, subtitles=subtitles)
|
|
224
|
-
self.media_handler.title = name
|
|
225
|
-
self.media_handler.play_media(extract_result)
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.2
|
|
2
|
-
Name: KekikStream
|
|
3
|
-
Version: 1.4.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
|
-
Home-page: https://github.com/keyiflerolsun/KekikStream
|
|
6
|
-
Author: keyiflerolsun
|
|
7
|
-
Author-email: keyiflerolsun@gmail.com
|
|
8
|
-
License: GPLv3+
|
|
9
|
-
Keywords: KekikStream,KekikAkademi,keyiflerolsun
|
|
10
|
-
Classifier: Development Status :: 5 - Production/Stable
|
|
11
|
-
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
|
|
12
|
-
Classifier: Programming Language :: Python :: 3
|
|
13
|
-
Requires-Python: >=3.10
|
|
14
|
-
Description-Content-Type: text/markdown
|
|
15
|
-
License-File: LICENSE
|
|
16
|
-
Requires-Dist: setuptools
|
|
17
|
-
Requires-Dist: wheel
|
|
18
|
-
Requires-Dist: Kekik
|
|
19
|
-
Requires-Dist: httpx[http2]
|
|
20
|
-
Requires-Dist: cloudscraper
|
|
21
|
-
Requires-Dist: parsel
|
|
22
|
-
Requires-Dist: pydantic
|
|
23
|
-
Requires-Dist: InquirerPy
|
|
24
|
-
Requires-Dist: yt-dlp
|
|
25
|
-
Dynamic: author
|
|
26
|
-
Dynamic: author-email
|
|
27
|
-
Dynamic: classifier
|
|
28
|
-
Dynamic: description
|
|
29
|
-
Dynamic: description-content-type
|
|
30
|
-
Dynamic: home-page
|
|
31
|
-
Dynamic: keywords
|
|
32
|
-
Dynamic: license
|
|
33
|
-
Dynamic: requires-dist
|
|
34
|
-
Dynamic: requires-python
|
|
35
|
-
Dynamic: summary
|
|
36
|
-
|
|
37
|
-
# <img src="https://github.com/keyiflerolsun/KekikStream/raw/master/.github/icons/KekikStream.png?raw=True" height="32" align="center"> KekikStream
|
|
38
|
-
|
|
39
|
-
[](#)
|
|
40
|
-
[](#)
|
|
41
|
-
<a href="https://KekikAkademi.org/Kahve" target="_blank"><img src="https://img.shields.io/badge/☕️-Kahve Ismarla-ffdd00" title="☕️ Kahve Ismarla" style="padding-left:5px;"></a>
|
|
42
|
-
|
|
43
|
-
[](https://pypi.org/project/KekikStream)
|
|
44
|
-
[](https://pypi.org/project/KekikStream)
|
|
45
|
-
[](https://pypi.org/project/KekikStream)
|
|
46
|
-
|
|
47
|
-
[](#)
|
|
48
|
-
[](#)
|
|
49
|
-
[](#)
|
|
50
|
-
|
|
51
|
-
[](https://github.com/keyiflerolsun/KekikStream/actions/workflows/pypiYukle.yml)
|
|
52
|
-
|
|
53
|
-
*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ı*
|
|
54
|
-
|
|
55
|
-
[](https://github.com/user-attachments/assets/63d31bb0-0b69-40b4-84aa-66623f2a253f)
|
|
56
|
-
|
|
57
|
-
[](https://www.python.org/)
|
|
58
|
-
[](https://GitHub.com/keyiflerolsun/)
|
|
59
|
-
|
|
60
|
-
## 🚀 Kurulum
|
|
61
|
-
|
|
62
|
-
> Sisteminizde VLC ve MPV yüklü olmalıdır..
|
|
63
|
-
|
|
64
|
-
```bash
|
|
65
|
-
# Yüklemek
|
|
66
|
-
pip install KekikStream
|
|
67
|
-
|
|
68
|
-
# Güncellemek
|
|
69
|
-
pip install -U KekikStream
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
## <img src="https://www.akashtrehan.com/assets/images/emoji/terminal.png" height="32" align="center"> Kullanım
|
|
73
|
-
|
|
74
|
-
```bash
|
|
75
|
-
KekikStream
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
## 💻 Kendi Projenizde Kullanabilirsiniz
|
|
79
|
-
|
|
80
|
-
- _Python için örnek iş akışı_ » **[KekikStream/Tests/Single.py](https://github.com/keyiflerolsun/KekikStream/blob/master/Tests/Single.py)**
|
|
81
|
-
- _Yerelde ağ genelinde kullanmak için API_ » **[KekikStreamAPI](https://github.com/keyiflerolsun/KekikStreamAPI)**
|
|
82
|
-
- _API için örnek iş akışı_ » **[KekikStreamAPI/Tests/Single.py](https://github.com/keyiflerolsun/KekikStreamAPI/blob/master/Tests/Single.py)**
|
|
83
|
-
|
|
84
|
-
## 💸 Bağış Yap
|
|
85
|
-
|
|
86
|
-
**[☕️ Kahve Ismarla](https://KekikAkademi.org/Kahve)**
|
|
87
|
-
|
|
88
|
-
### 🎁 Teşekkürler
|
|
89
|
-
|
|
90
|
-
- [DeoDorqnt387/aniwatch-tr](https://github.com/DeoDorqnt387/aniwatch-tr)
|
|
91
|
-
|
|
92
|
-
### 💻 Genişletme Referansları
|
|
93
|
-
|
|
94
|
-
- [keyiflerolsun/Kekik-cloudstream](https://github.com/keyiflerolsun/Kekik-cloudstream)
|
|
95
|
-
- [keyiflerolsun/seyirTurk-Parser](https://github.com/keyiflerolsun/seyirTurk-Parser)
|
|
96
|
-
|
|
97
|
-
## 🌐 Telif Hakkı ve Lisans
|
|
98
|
-
|
|
99
|
-
* *Copyright (C) 2024 by* [keyiflerolsun](https://github.com/keyiflerolsun) ❤️️
|
|
100
|
-
* [GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007](https://github.com/keyiflerolsun/KekikStream/blob/master/LICENSE) *Koşullarına göre lisanslanmıştır..*
|
|
101
|
-
|
|
102
|
-
## ♻️ İletişim
|
|
103
|
-
|
|
104
|
-
*Benimle iletişime geçmek isterseniz, **Telegram**'dan mesaj göndermekten çekinmeyin;* [@keyiflerolsun](https://t.me/KekikKahve)
|
|
105
|
-
|
|
106
|
-
##
|
|
107
|
-
|
|
108
|
-
> **[@KekikAkademi](https://t.me/KekikAkademi)** *için yazılmıştır..*
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
KekikStream/__init__.py,sha256=T6b93GPnam4ww2tOU2dZaS-WHKwCEXqNAaRh6Lrg4Kw,15477
|
|
2
|
-
KekikStream/__main__.py,sha256=B81dQoeGEb-T5Sycs3eNAmW7unvx0Mef0syCjs4nPds,137
|
|
3
|
-
KekikStream/requirements.txt,sha256=QWCXrrmKodIm7mGtIz9cWr9sks-lmL_TilKMrruWJn0,77
|
|
4
|
-
KekikStream/CLI/__init__.py,sha256=U6oLq_O7u5y2eHhBnmfhZNns_EqHHJXJmzl8jvZFUNY,230
|
|
5
|
-
KekikStream/CLI/pypi_kontrol.py,sha256=MchatOwCWCpFBtgt09yag9Rjal9XFyh2W_oVs2p7SNg,1518
|
|
6
|
-
KekikStream/Core/__init__.py,sha256=ar2MZQF83ryfLfydEXcfjdwNe4Too_HT6bP-D_4TopA,710
|
|
7
|
-
KekikStream/Core/Extractor/ExtractorBase.py,sha256=7dmYh5e1Za5N_pLJrTZRuwFh-CqwGc0YJOBWf5dirjc,1724
|
|
8
|
-
KekikStream/Core/Extractor/ExtractorLoader.py,sha256=7uxUXTAuF65KKkmbI6iRiCiUhx-IqrronB7ixhchcTU,4289
|
|
9
|
-
KekikStream/Core/Extractor/ExtractorManager.py,sha256=4L1H3jiTnf0kTq4W6uS7n95bBYHlKJ8_hh0og8z4erQ,1244
|
|
10
|
-
KekikStream/Core/Extractor/ExtractorModels.py,sha256=huIcPQ5VIRfMx0LcL5SS1u4dldZbHjzHKEdSEtOPlc0,456
|
|
11
|
-
KekikStream/Core/Media/MediaHandler.py,sha256=_cplsR-bt7s2oohY1Ngw0UyG427yQ-Fg0NQdAUzd0ec,6964
|
|
12
|
-
KekikStream/Core/Media/MediaManager.py,sha256=9ItiUguOkk3wg3YY5uf3mrjfwLPCvggnP8QviX0uiuE,526
|
|
13
|
-
KekikStream/Core/Plugin/PluginBase.py,sha256=gXD6a0__rAVBv1hbV7qtt4Ot5Wdx15JhF02TMd2QJd0,3179
|
|
14
|
-
KekikStream/Core/Plugin/PluginLoader.py,sha256=yZxMug-OcJ5RBm4fQkoquKrZxcBU7Pvt4IcY-d0WU8g,3393
|
|
15
|
-
KekikStream/Core/Plugin/PluginManager.py,sha256=CZVg1eegi8vfMfccx0DRV0Box8kXz-aoULTQLgbPbvM,893
|
|
16
|
-
KekikStream/Core/Plugin/PluginModels.py,sha256=ZZJUXbC0G2k0DU7Wpbf0rwjn7spywpiaLIHE7kLajhk,2533
|
|
17
|
-
KekikStream/Core/UI/UIManager.py,sha256=T4V_kdTTWa-UDamgLSKa__dWJuzcvRK9NuwBlzU9Bzc,1693
|
|
18
|
-
KekikStream/Extractors/CloseLoad.py,sha256=w_Wag5DUPTfdXbTTI1kQNje1BHD0aFWE3KOVZHFFmZo,1462
|
|
19
|
-
KekikStream/Extractors/ContentX.py,sha256=u1sDdM79MNx9OdPTPcAA0OQDS7537IO8aJlffxhMi8c,2976
|
|
20
|
-
KekikStream/Extractors/FourCX.py,sha256=4FrMj1IZBBpN_g1P6S3A-8eUu7QFwlt4fJXzJ7vfe0Q,221
|
|
21
|
-
KekikStream/Extractors/FourPichive.py,sha256=iq3BCUbih1UVF4y4BIWO--0hX5jP2nxqesNx3MGP3kQ,234
|
|
22
|
-
KekikStream/Extractors/FourPlayRu.py,sha256=wq1ylxKpsO_IBoYr_ALzB2dVrQpJ-jY9lf2zPhcAZX8,228
|
|
23
|
-
KekikStream/Extractors/HDStreamAble.py,sha256=66n5EvIdX_or5cdnlJ_Uqmzi50n4rl9c5VCw8kBqhQk,245
|
|
24
|
-
KekikStream/Extractors/Hotlinger.py,sha256=NFMRgUmb6BCrJfa7Hi0VarDNYvCeVknBWEk24FKBBa0,224
|
|
25
|
-
KekikStream/Extractors/MailRu.py,sha256=HH89V4GdQChG2TnIimqNbd5dGWco0bdrSGpLudt5WGs,1306
|
|
26
|
-
KekikStream/Extractors/MixPlayHD.py,sha256=POV_yq3KoZ6S6EqFsKYULEBz92NdUa2BpYKNo0eNQH8,1552
|
|
27
|
-
KekikStream/Extractors/MolyStream.py,sha256=aJZL1SE40gB5KeShu-TV5IWNICHCtAXY87F0wqYrw1k,604
|
|
28
|
-
KekikStream/Extractors/Odnoklassniki.py,sha256=TZOJyti05ch62QCUTKUzKNKmjzwGZYVpLWbmp92QTO4,3590
|
|
29
|
-
KekikStream/Extractors/OkRuHTTP.py,sha256=L-B0i_i_Vnm61GvUfd6cGIW-o_H4M-C7DO_cdw2rQPU,228
|
|
30
|
-
KekikStream/Extractors/OkRuSSL.py,sha256=FHJ5XZ1dO5ED3mIku3e3vnq8K0slrcr0jqhaUnHmfVk,227
|
|
31
|
-
KekikStream/Extractors/PeaceMakerst.py,sha256=ZKk454eNZpeamht61UH9yMYe00_zGb3MSyujfDlbVDc,2096
|
|
32
|
-
KekikStream/Extractors/Pichive.py,sha256=BSVYFwL3Ax6yGoS1WkpOWtngxNyuZLoKzpPwjibpu2s,221
|
|
33
|
-
KekikStream/Extractors/PixelDrain.py,sha256=WAlxFHwDYFZd7E3M-wTBkOSzDLbaLpX4J7r1zzlfJVo,991
|
|
34
|
-
KekikStream/Extractors/PlayRu.py,sha256=DQMZyCSJwLkrh-gfDD8T1DvUFNBAKUXpByeCAWuK6YY,215
|
|
35
|
-
KekikStream/Extractors/RapidVid.py,sha256=nTND3zuH105oeO359gltKKE9n35YLQsM9Crg17G7L0c,2367
|
|
36
|
-
KekikStream/Extractors/SibNet.py,sha256=tKo2y_JL0Es-B1mNSMk7IDeFTkk0CmMBZTKwWOy59ho,876
|
|
37
|
-
KekikStream/Extractors/Sobreatsesuyp.py,sha256=qlSQHUHjTjBoY0nsuZQWAjnfswbPORkBg6rUuP7SagA,2000
|
|
38
|
-
KekikStream/Extractors/TRsTX.py,sha256=mbSRGnQt26a73SbqwtY9rpiYFwgRgVbvA6bkGb_PvP8,2152
|
|
39
|
-
KekikStream/Extractors/TauVideo.py,sha256=2ai9BwwM6qlCgxK7E0B642LtOF5y4hEb9tQ2aDpbMtc,1112
|
|
40
|
-
KekikStream/Extractors/TurboImgz.py,sha256=nnWnP1K4JZbMj6S-YuXxej31UZtF4JcboSW4n7A4A5c,824
|
|
41
|
-
KekikStream/Extractors/VidMoly.py,sha256=O6F_82E-LeFVOgSw-ot91B1ZP8pqqt1jZ5pmkwklWGY,3526
|
|
42
|
-
KekikStream/Extractors/VidMolyMe.py,sha256=ogLiFUJVqFbhtzQrZ1gSB9me85DiHvntjWtSvidYVS8,218
|
|
43
|
-
KekikStream/Extractors/VidMoxy.py,sha256=T1iqfyOasRxoepmuWAmXeVW6E7M1O18KG3264KUSzc0,1798
|
|
44
|
-
KekikStream/Extractors/VideoSeyred.py,sha256=M6QPZ_isX9vM_7LPo-2I_8Cf1vB9awHw8vvzBODtoiQ,1977
|
|
45
|
-
KekikStream/Helpers/Unpack.py,sha256=iS-r6k-NHlBleWsVwv_QXLaEMbJRBUXDKqVE6NkWEIk,2235
|
|
46
|
-
KekikStream/Plugins/DiziBox.py,sha256=Vk7ujbMTORimFNXA7BTZkQnXs-6WBfI7iIJxFYRJaH0,9326
|
|
47
|
-
KekikStream/Plugins/DiziYou.py,sha256=yiLHe9cP_eG8CG6lcQ8KYEzDckjFUL3cw0A-1ixCLbg,7995
|
|
48
|
-
KekikStream/Plugins/Dizilla.py,sha256=E3HehhcnZBDVJzroRa7jlFzj3ixdx9-LT7YnWKmcX3Q,6899
|
|
49
|
-
KekikStream/Plugins/FilmMakinesi.py,sha256=J4v35Ln3RehWPai3I-9nWrasRLx3hN3IgrWVpt5b_HE,5712
|
|
50
|
-
KekikStream/Plugins/FullHDFilmizlesene.py,sha256=AO9Il0PE77JUvg1AN4Vxl95pTrCBbOjclqFGWuzo7cY,6271
|
|
51
|
-
KekikStream/Plugins/HDFilmCehennemi.py,sha256=w-sGlRb60PMHO75ZlreP1fpjeA048VzNJIiXEV1oFe4,9908
|
|
52
|
-
KekikStream/Plugins/JetFilmizle.py,sha256=Hi_yzjUyTQryx-4kTfxNdNSqqQcwodc_JJULOTKTrBA,5483
|
|
53
|
-
KekikStream/Plugins/RecTV.py,sha256=zftZucGIR0r0vkYYc-pmln3AJppL3s1LVZPwIrOV2QU,7246
|
|
54
|
-
KekikStream/Plugins/SezonlukDizi.py,sha256=IvmOB6qCEHBy41BS4KFBjsTegmzEF6l-2l_CvamYrW8,6099
|
|
55
|
-
KekikStream/Plugins/Shorten.py,sha256=dDYt89WX-CcDhJAAV2A4zaD4xcZa8aN6-YcAcseyVo4,8948
|
|
56
|
-
KekikStream/Plugins/SineWix.py,sha256=QCcuGzawAKA-k3kMWgY2ATiX_WefvPCRqX169Ej3wrw,7192
|
|
57
|
-
KekikStream/Plugins/UgurFilm.py,sha256=tChGgiAeQeVUqHqrVXDz_eMIyghOHqKuHJb0pCQqs1M,4724
|
|
58
|
-
kekikstream-1.4.4.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
|
59
|
-
kekikstream-1.4.4.dist-info/METADATA,sha256=zYJSz3Q7oweojUigcDvDkQ9pLEa1LU2y1aIHUEohb6Q,4973
|
|
60
|
-
kekikstream-1.4.4.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
|
|
61
|
-
kekikstream-1.4.4.dist-info/entry_points.txt,sha256=dFwdiTx8djyehI0Gsz-rZwjAfZzUzoBSrmzRu9ubjJc,50
|
|
62
|
-
kekikstream-1.4.4.dist-info/top_level.txt,sha256=DNmGJDXl27Drdfobrak8KYLmocW_uznVYFJOzcjUgmY,12
|
|
63
|
-
kekikstream-1.4.4.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|