KekikStream 2.1.2__tar.gz → 2.1.4__tar.gz
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-2.1.2 → kekikstream-2.1.4}/KekikStream/Plugins/FilmMakinesi.py +9 -5
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Plugins/HDFilmCehennemi.py +4 -14
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream.egg-info/PKG-INFO +1 -1
- {kekikstream-2.1.2 → kekikstream-2.1.4}/PKG-INFO +1 -1
- {kekikstream-2.1.2 → kekikstream-2.1.4}/setup.py +1 -1
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/CLI/__init__.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/CLI/pypi_kontrol.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Core/Extractor/ExtractorBase.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Core/Extractor/ExtractorLoader.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Core/Extractor/ExtractorManager.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Core/Extractor/ExtractorModels.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Core/Extractor/YTDLPCache.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Core/Media/MediaHandler.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Core/Media/MediaManager.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Core/Plugin/PluginBase.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Core/Plugin/PluginLoader.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Core/Plugin/PluginManager.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Core/Plugin/PluginModels.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Core/UI/UIManager.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Core/__init__.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Extractors/CloseLoad.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Extractors/ContentX.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Extractors/DonilasPlay.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Extractors/DzenRu.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Extractors/ExPlay.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Extractors/HDPlayerSystem.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Extractors/JetTv.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Extractors/MailRu.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Extractors/MixPlayHD.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Extractors/MixTiger.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Extractors/MolyStream.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Extractors/Odnoklassniki.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Extractors/PeaceMakerst.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Extractors/PixelDrain.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Extractors/PlayerFilmIzle.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Extractors/RapidVid.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Extractors/SetPlay.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Extractors/SetPrime.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Extractors/SibNet.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Extractors/Sobreatsesuyp.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Extractors/TRsTX.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Extractors/TauVideo.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Extractors/TurboImgz.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Extractors/TurkeyPlayer.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Extractors/VCTPlay.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Extractors/VidHide.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Extractors/VidMoly.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Extractors/VidMoxy.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Extractors/VidPapi.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Extractors/VideoSeyred.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Extractors/YTDLP.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Extractors/YildizKisaFilm.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Plugins/BelgeselX.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Plugins/DiziBox.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Plugins/DiziPal.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Plugins/DiziYou.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Plugins/Dizilla.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Plugins/FilmBip.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Plugins/FilmModu.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Plugins/FullHDFilm.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Plugins/FullHDFilmizlesene.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Plugins/JetFilmizle.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Plugins/KultFilmler.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Plugins/RecTV.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Plugins/RoketDizi.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Plugins/SelcukFlix.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Plugins/SetFilmIzle.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Plugins/SezonlukDizi.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Plugins/SineWix.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Plugins/Sinefy.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Plugins/SinemaCX.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Plugins/Sinezy.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Plugins/SuperFilmGeldi.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/Plugins/UgurFilm.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/__init__.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/__main__.py +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream/requirements.txt +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream.egg-info/SOURCES.txt +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream.egg-info/dependency_links.txt +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream.egg-info/entry_points.txt +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream.egg-info/requires.txt +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/KekikStream.egg-info/top_level.txt +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/LICENSE +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/MANIFEST.in +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/README.md +0 -0
- {kekikstream-2.1.2 → kekikstream-2.1.4}/setup.cfg +0 -0
|
@@ -75,18 +75,22 @@ class FilmMakinesi(PluginBase):
|
|
|
75
75
|
istek = await self.httpx.get(url)
|
|
76
76
|
secici = Selector(istek.text)
|
|
77
77
|
|
|
78
|
-
title = secici.css("h1.title::text").get()
|
|
79
|
-
|
|
80
|
-
|
|
78
|
+
title = secici.css("h1.title::text").get()
|
|
79
|
+
title = title.strip() if title else ""
|
|
80
|
+
poster = secici.css("img.cover-img::attr(src)").get()
|
|
81
|
+
poster = poster.strip() if poster else ""
|
|
82
|
+
description = secici.css("div.info-description p::text").get()
|
|
83
|
+
description = description.strip() if description else ""
|
|
81
84
|
rating = secici.css("div.score::text").get()
|
|
82
85
|
if rating:
|
|
83
86
|
rating = rating.strip().split()[0]
|
|
84
|
-
year = secici.css("span.date a::text").get()
|
|
87
|
+
year = secici.css("span.date a::text").get()
|
|
88
|
+
year = year.strip() if year else ""
|
|
85
89
|
actors = secici.css("div.cast-name::text").getall()
|
|
86
90
|
tags = secici.css("div.genre a::text").getall()
|
|
87
91
|
duration = secici.css("div.time::text").get()
|
|
88
92
|
if duration:
|
|
89
|
-
duration = duration.split()[1].strip()
|
|
93
|
+
duration = duration.split()[1].strip() if len(duration.split()) > 1 else ""
|
|
90
94
|
|
|
91
95
|
return MovieInfo(
|
|
92
96
|
url = url,
|
|
@@ -144,16 +144,6 @@ class HDFilmCehennemi(PluginBase):
|
|
|
144
144
|
|
|
145
145
|
return results
|
|
146
146
|
|
|
147
|
-
def hdch_decode(self, value_parts: list[str]) -> str:
|
|
148
|
-
"""
|
|
149
|
-
HDFilmCehennemi için özel decoder.
|
|
150
|
-
StreamDecoder._brute_force ile 24 farklı permütasyonu dener.
|
|
151
|
-
"""
|
|
152
|
-
try:
|
|
153
|
-
return StreamDecoder._brute_force(value_parts) or ""
|
|
154
|
-
except Exception:
|
|
155
|
-
return ""
|
|
156
|
-
|
|
157
147
|
def extract_hdch_url(self, unpacked: str) -> str:
|
|
158
148
|
"""HDFilmCehennemi unpacked script'ten video URL'sini çıkar"""
|
|
159
149
|
# 1) Decode fonksiyonunun adını bul: function <NAME>(value_parts)
|
|
@@ -168,16 +158,16 @@ class HDFilmCehennemi(PluginBase):
|
|
|
168
158
|
match_call = array_call_regex.search(unpacked)
|
|
169
159
|
if not match_call:
|
|
170
160
|
return ""
|
|
171
|
-
|
|
161
|
+
|
|
172
162
|
array_body = match_call.group(1)
|
|
173
|
-
|
|
163
|
+
|
|
174
164
|
# 3) Array içindeki string parçalarını topla
|
|
175
165
|
parts = re.findall(r'["\']([^"\']+)["\']', array_body)
|
|
176
166
|
if not parts:
|
|
177
167
|
return ""
|
|
178
|
-
|
|
168
|
+
|
|
179
169
|
# 4) Özel decoder ile çöz
|
|
180
|
-
return
|
|
170
|
+
return StreamDecoder._brute_force(parts)
|
|
181
171
|
|
|
182
172
|
async def invoke_local_source(self, iframe: str, source: str, url: str):
|
|
183
173
|
self.httpx.headers.update({
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: KekikStream
|
|
3
|
-
Version: 2.1.
|
|
3
|
+
Version: 2.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
5
|
Home-page: https://github.com/keyiflerolsun/KekikStream
|
|
6
6
|
Author: keyiflerolsun
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: KekikStream
|
|
3
|
-
Version: 2.1.
|
|
3
|
+
Version: 2.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
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 = "2.1.
|
|
9
|
+
version = "2.1.4",
|
|
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
|
|
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
|