KekikStream 2.0.8__py3-none-any.whl → 2.0.9__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/Extractors/PlayerFilmIzle.py +8 -5
- KekikStream/Plugins/SinemaCX.py +1 -1
- KekikStream/Plugins/SuperFilmGeldi.py +12 -6
- {kekikstream-2.0.8.dist-info → kekikstream-2.0.9.dist-info}/METADATA +1 -1
- {kekikstream-2.0.8.dist-info → kekikstream-2.0.9.dist-info}/RECORD +9 -10
- KekikStream/Extractors/FirePlayer.py +0 -60
- {kekikstream-2.0.8.dist-info → kekikstream-2.0.9.dist-info}/WHEEL +0 -0
- {kekikstream-2.0.8.dist-info → kekikstream-2.0.9.dist-info}/entry_points.txt +0 -0
- {kekikstream-2.0.8.dist-info → kekikstream-2.0.9.dist-info}/licenses/LICENSE +0 -0
- {kekikstream-2.0.8.dist-info → kekikstream-2.0.9.dist-info}/top_level.txt +0 -0
|
@@ -1,12 +1,15 @@
|
|
|
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 re
|
|
4
|
+
import re
|
|
5
5
|
|
|
6
6
|
class PlayerFilmIzle(ExtractorBase):
|
|
7
7
|
name = "PlayerFilmIzle"
|
|
8
8
|
main_url = "https://player.filmizle.in"
|
|
9
9
|
|
|
10
|
+
def can_handle_url(self, url: str) -> bool:
|
|
11
|
+
return "filmizle.in" in url or "fireplayer" in url.lower()
|
|
12
|
+
|
|
10
13
|
async def extract(self, url: str, referer: str = None) -> ExtractResult:
|
|
11
14
|
# Kotlin tarafında referer mainUrl olarak zorlanmış
|
|
12
15
|
ext_ref = self.main_url
|
|
@@ -29,20 +32,20 @@ class PlayerFilmIzle(ExtractorBase):
|
|
|
29
32
|
# Data yakalama: FirePlayer|DATA|...
|
|
30
33
|
data_match = re.search(r'FirePlayer\|([^|]+)\|', video_req, re.IGNORECASE)
|
|
31
34
|
data_val = data_match.group(1) if data_match else None
|
|
32
|
-
|
|
35
|
+
|
|
33
36
|
if not data_val:
|
|
34
37
|
raise ValueError("PlayerFilmIzle: Data bulunamadı")
|
|
35
38
|
|
|
36
39
|
url_post = f"{self.main_url}/player/index.php?data={data_val}&do=getVideo"
|
|
37
|
-
|
|
40
|
+
|
|
38
41
|
post_headers = {
|
|
39
42
|
"Referer": ext_ref,
|
|
40
43
|
"X-Requested-With": "XMLHttpRequest"
|
|
41
44
|
}
|
|
42
|
-
|
|
45
|
+
|
|
43
46
|
# Kotlin'de post data: "hash" -> data, "r" -> ""
|
|
44
47
|
post_data = {"hash": data_val, "r": ""}
|
|
45
|
-
|
|
48
|
+
|
|
46
49
|
response = await self.httpx.post(url_post, data=post_data, headers=post_headers)
|
|
47
50
|
get_url = response.text.replace("\\", "")
|
|
48
51
|
|
KekikStream/Plugins/SinemaCX.py
CHANGED
|
@@ -140,7 +140,7 @@ class SinemaCX(PluginBase):
|
|
|
140
140
|
# Extractor'a yönlendir
|
|
141
141
|
extractor = self.ex_manager.find_extractor(iframe)
|
|
142
142
|
data = await extractor.extract(iframe, referer=f"{self.main_url}/")
|
|
143
|
-
results.append(data.
|
|
143
|
+
results.append(data.dict())
|
|
144
144
|
|
|
145
145
|
return results
|
|
146
146
|
|
|
@@ -89,7 +89,7 @@ class SuperFilmGeldi(PluginBase):
|
|
|
89
89
|
# Mix player özel işleme
|
|
90
90
|
if "mix" in iframe and "index.php?data=" in iframe:
|
|
91
91
|
iframe_istek = await self.httpx.get(iframe, headers={"Referer": f"{self.main_url}/"})
|
|
92
|
-
mix_point = re.search(r'videoUrl"
|
|
92
|
+
mix_point = re.search(r'videoUrl"\s*:\s*"(.*?)"\s*,\s*"videoServer', iframe_istek.text)
|
|
93
93
|
|
|
94
94
|
if mix_point:
|
|
95
95
|
mix_point = mix_point[1].replace("\\", "")
|
|
@@ -111,11 +111,17 @@ class SuperFilmGeldi(PluginBase):
|
|
|
111
111
|
"subtitles" : []
|
|
112
112
|
})
|
|
113
113
|
else:
|
|
114
|
+
# Extractor'a yönlendir
|
|
114
115
|
extractor = self.ex_manager.find_extractor(iframe)
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
"url" : iframe,
|
|
118
|
-
"referer" : f"{self.main_url}/"
|
|
119
|
-
})
|
|
116
|
+
data = await extractor.extract(iframe, referer=f"{self.main_url}/")
|
|
117
|
+
results.append(data.dict())
|
|
120
118
|
|
|
121
119
|
return results
|
|
120
|
+
|
|
121
|
+
async def play(self, **kwargs):
|
|
122
|
+
extract_result = ExtractResult(**kwargs)
|
|
123
|
+
self.media_handler.title = kwargs.get("name")
|
|
124
|
+
if self.name not in self.media_handler.title:
|
|
125
|
+
self.media_handler.title = f"{self.name} | {self.media_handler.title}"
|
|
126
|
+
|
|
127
|
+
self.media_handler.play_media(extract_result)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: KekikStream
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.9
|
|
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
|
|
@@ -21,7 +21,6 @@ KekikStream/Extractors/ContentX.py,sha256=TEXJppAZJLkf0x8jxaKnrCVAcabqdBFBswinpq
|
|
|
21
21
|
KekikStream/Extractors/DonilasPlay.py,sha256=Lr60pEht96SMlXICYWo9J5dOwV4ty8fetBCCqJ3ARUY,3221
|
|
22
22
|
KekikStream/Extractors/DzenRu.py,sha256=X0Rhm1-W4YjQwVrJs8YFqVcCxMaZi8rsKiLhK_ZsYlU,1185
|
|
23
23
|
KekikStream/Extractors/ExPlay.py,sha256=EJNVKAbaIxlbOsCx7J9aLfNHKOFoqSLZZUw7W4QYeH0,1827
|
|
24
|
-
KekikStream/Extractors/FirePlayer.py,sha256=HlJjFgii0fGZK7cgwpoZAIoajabl7IQX6ZrAQT1fBIw,2188
|
|
25
24
|
KekikStream/Extractors/HDPlayerSystem.py,sha256=EgnFzx5Q4PkuwAtuff5SYU9k59B-CyOdySl7lbCZ9hM,1312
|
|
26
25
|
KekikStream/Extractors/JetTv.py,sha256=aA3WeOvR-tszac-WSwunZZb1NRy25TQH8vxY3TDscRI,1596
|
|
27
26
|
KekikStream/Extractors/MailRu.py,sha256=xQVCWwYqNoG5T43VAW1_m0v4e80FbO-1pNPKkwhTccU,1218
|
|
@@ -31,7 +30,7 @@ KekikStream/Extractors/MolyStream.py,sha256=IeeBw9tJJrL5QQ-t2Yp-a-6lnDc3Y00UNiaN
|
|
|
31
30
|
KekikStream/Extractors/Odnoklassniki.py,sha256=YfFRCL3Ag5N4zDzK9ZLOr3HVQcsETFQpff1px02imJ0,4019
|
|
32
31
|
KekikStream/Extractors/PeaceMakerst.py,sha256=pEgJb3KDfEPAUjbuvrYbUlxIciKgED-Vd0arrRO3QCk,2317
|
|
33
32
|
KekikStream/Extractors/PixelDrain.py,sha256=Uk2pPvtBzaKtRXu1iNO8FLHd0EAuIOIzI1H_n02tg-U,964
|
|
34
|
-
KekikStream/Extractors/PlayerFilmIzle.py,sha256=
|
|
33
|
+
KekikStream/Extractors/PlayerFilmIzle.py,sha256=kH-O_RtQvG4iRLGKi-sFn1ST14DrxxoAa5iRT2PsdXc,2503
|
|
35
34
|
KekikStream/Extractors/RapidVid.py,sha256=FgAZfgtnKE57KRiRIFw-6_ZES0Trp5QriNbRTfSBGQs,3139
|
|
36
35
|
KekikStream/Extractors/SetPlay.py,sha256=FjHYtC6xTeeikTkrW6jz0TpWz0kaoJ5qHhr_H7aThEY,2135
|
|
37
36
|
KekikStream/Extractors/SetPrime.py,sha256=ob09y-Sm91YR7rIRzikhZiMHX6D4Djm5QzFTg6KbO4k,1536
|
|
@@ -69,13 +68,13 @@ KekikStream/Plugins/SetFilmIzle.py,sha256=buz8B8MOTPw-TMV8U-k4IG3PUEFFKtOXb0fV7V
|
|
|
69
68
|
KekikStream/Plugins/SezonlukDizi.py,sha256=vW-Mvk63Y9sAJmPnY1IdFwBzCMEB2tF03zwHVETZTtI,7262
|
|
70
69
|
KekikStream/Plugins/SineWix.py,sha256=xdTeg8GHUpyZsY6EQ5I1ZIT4-lB_qwBwvHQVmdMPpEI,7364
|
|
71
70
|
KekikStream/Plugins/Sinefy.py,sha256=riB2lgSSG5MkgxnVtX1OlApBcHG6vVjfiHyJ6h8_6DM,9965
|
|
72
|
-
KekikStream/Plugins/SinemaCX.py,sha256
|
|
71
|
+
KekikStream/Plugins/SinemaCX.py,sha256=-mcZe9Lh93hz5PZdbV2ASlT0O_t4KNMyZxA1q82rbmk,7197
|
|
73
72
|
KekikStream/Plugins/Sinezy.py,sha256=gdszlee5QpUka0qMzGMbBoXwJCtZbe5hlA5o9FJQI1o,6226
|
|
74
|
-
KekikStream/Plugins/SuperFilmGeldi.py,sha256=
|
|
73
|
+
KekikStream/Plugins/SuperFilmGeldi.py,sha256=HmY37Onn8VLggT7NaMnvpYv863zrk8eQnPGpfK2HrEk,5788
|
|
75
74
|
KekikStream/Plugins/UgurFilm.py,sha256=sQatQ2zb9NER8J52DRLI5K9EnYFv4I1ZgZ22HtauX3Q,4813
|
|
76
|
-
kekikstream-2.0.
|
|
77
|
-
kekikstream-2.0.
|
|
78
|
-
kekikstream-2.0.
|
|
79
|
-
kekikstream-2.0.
|
|
80
|
-
kekikstream-2.0.
|
|
81
|
-
kekikstream-2.0.
|
|
75
|
+
kekikstream-2.0.9.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
|
76
|
+
kekikstream-2.0.9.dist-info/METADATA,sha256=UolpHMnBAebdvrjAnG9Zpn5uYT572fftvtH4qBpPz2Q,10090
|
|
77
|
+
kekikstream-2.0.9.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
78
|
+
kekikstream-2.0.9.dist-info/entry_points.txt,sha256=dFwdiTx8djyehI0Gsz-rZwjAfZzUzoBSrmzRu9ubjJc,50
|
|
79
|
+
kekikstream-2.0.9.dist-info/top_level.txt,sha256=DNmGJDXl27Drdfobrak8KYLmocW_uznVYFJOzcjUgmY,12
|
|
80
|
+
kekikstream-2.0.9.dist-info/RECORD,,
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
|
2
|
-
|
|
3
|
-
from KekikStream.Core import ExtractorBase, ExtractResult
|
|
4
|
-
from Kekik.Sifreleme import Packer
|
|
5
|
-
import re
|
|
6
|
-
|
|
7
|
-
class FirePlayer(ExtractorBase):
|
|
8
|
-
name = "FirePlayer"
|
|
9
|
-
main_url = "https://Player.filmizle.in"
|
|
10
|
-
|
|
11
|
-
def can_handle_url(self, url: str) -> bool:
|
|
12
|
-
return "filmizle.in" in url or "fireplayer" in url.lower()
|
|
13
|
-
|
|
14
|
-
async def extract(self, url: str, referer: str = None) -> ExtractResult:
|
|
15
|
-
if not referer:
|
|
16
|
-
referer = "https://sinezy.site/"
|
|
17
|
-
|
|
18
|
-
headers = {
|
|
19
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
|
|
20
|
-
"Referer": referer
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
istek = await self.httpx.get(url, headers=headers)
|
|
24
|
-
|
|
25
|
-
# Unpack usage similar to VidMoxy / suggestion
|
|
26
|
-
# Find the packed code block
|
|
27
|
-
match = re.search(r'(eval\(function\(p,a,c,k,e,d\)[\s\S]+?)\s*</script>', istek.text)
|
|
28
|
-
if match:
|
|
29
|
-
packed_code = match.group(1)
|
|
30
|
-
unpacked = Packer.unpack(packed_code)
|
|
31
|
-
else:
|
|
32
|
-
unpacked = istek.text
|
|
33
|
-
|
|
34
|
-
# Normalize escaped slashes
|
|
35
|
-
unpacked = unpacked.replace(r"\/", "/")
|
|
36
|
-
|
|
37
|
-
video_url = None
|
|
38
|
-
|
|
39
|
-
# Look for .mp4 or .m3u8 urls directly first
|
|
40
|
-
url_match = re.search(r'(https?://[^"\'\s]+\.(?:mp4|m3u8))', unpacked)
|
|
41
|
-
if url_match:
|
|
42
|
-
video_url = url_match.group(1)
|
|
43
|
-
|
|
44
|
-
if not video_url:
|
|
45
|
-
# Fallback: find all 'file': '...' and pick best
|
|
46
|
-
files = re.findall(r'file\s*:\s*["\']([^"\']+)["\']', unpacked)
|
|
47
|
-
for f in files:
|
|
48
|
-
if f.strip() and not f.endswith(".jpg") and not f.endswith(".png") and not f.endswith(".vtt"):
|
|
49
|
-
video_url = f
|
|
50
|
-
break
|
|
51
|
-
|
|
52
|
-
if not video_url:
|
|
53
|
-
raise ValueError("Could not find video URL in unpacked content")
|
|
54
|
-
|
|
55
|
-
return ExtractResult(
|
|
56
|
-
name = self.name,
|
|
57
|
-
url = video_url,
|
|
58
|
-
referer = url,
|
|
59
|
-
user_agent = headers.get("User-Agent", "")
|
|
60
|
-
)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|