KekikStream 1.6.0__tar.gz → 1.6.2__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-1.6.0 → kekikstream-1.6.2}/KekikStream/Extractors/RapidVid.py +30 -12
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/Plugins/DiziBox.py +7 -4
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/Plugins/DiziYou.py +3 -1
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/Plugins/FullHDFilmizlesene.py +25 -26
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/Plugins/UgurFilm.py +1 -1
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream.egg-info/PKG-INFO +1 -1
- {kekikstream-1.6.0 → kekikstream-1.6.2}/PKG-INFO +1 -1
- {kekikstream-1.6.0 → kekikstream-1.6.2}/setup.py +1 -1
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/CLI/__init__.py +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/CLI/pypi_kontrol.py +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/Core/Extractor/ExtractorBase.py +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/Core/Extractor/ExtractorLoader.py +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/Core/Extractor/ExtractorManager.py +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/Core/Extractor/ExtractorModels.py +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/Core/Media/MediaHandler.py +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/Core/Media/MediaManager.py +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/Core/Plugin/PluginBase.py +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/Core/Plugin/PluginLoader.py +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/Core/Plugin/PluginManager.py +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/Core/Plugin/PluginModels.py +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/Core/UI/UIManager.py +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/Core/__init__.py +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/Extractors/CloseLoad.py +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/Extractors/ContentX.py +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/Extractors/FourCX.py +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/Extractors/FourPichive.py +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/Extractors/FourPlayRu.py +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/Extractors/HDStreamAble.py +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/Extractors/Hotlinger.py +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/Extractors/MailRu.py +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/Extractors/MixPlayHD.py +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/Extractors/MolyStream.py +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/Extractors/Odnoklassniki.py +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/Extractors/OkRuHTTP.py +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/Extractors/OkRuSSL.py +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/Extractors/PeaceMakerst.py +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/Extractors/Pichive.py +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/Extractors/PixelDrain.py +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/Extractors/PlayRu.py +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/Extractors/SibNet.py +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/Extractors/Sobreatsesuyp.py +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/Extractors/TRsTX.py +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/Extractors/TauVideo.py +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/Extractors/TurboImgz.py +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/Extractors/VidMoly.py +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/Extractors/VidMolyMe.py +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/Extractors/VidMoxy.py +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/Extractors/VideoSeyred.py +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/Plugins/Dizilla.py +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/Plugins/FilmMakinesi.py +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/Plugins/HDFilmCehennemi.py +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/Plugins/JetFilmizle.py +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/Plugins/RecTV.py +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/Plugins/SezonlukDizi.py +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/__init__.py +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/__main__.py +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream/requirements.txt +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream.egg-info/SOURCES.txt +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream.egg-info/dependency_links.txt +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream.egg-info/entry_points.txt +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream.egg-info/requires.txt +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/KekikStream.egg-info/top_level.txt +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/LICENSE +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/MANIFEST.in +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/README.md +0 -0
- {kekikstream-1.6.0 → kekikstream-1.6.2}/setup.cfg +0 -0
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
from KekikStream.Core import ExtractorBase, ExtractResult, Subtitle
|
|
4
4
|
from Kekik.Sifreleme import Packer, HexCodec
|
|
5
|
-
import re
|
|
5
|
+
import re, base64
|
|
6
6
|
|
|
7
7
|
class RapidVid(ExtractorBase):
|
|
8
8
|
name = "RapidVid"
|
|
@@ -37,17 +37,11 @@ class RapidVid(ExtractorBase):
|
|
|
37
37
|
escaped_hex = extracted_value[1]
|
|
38
38
|
decoded_url = HexCodec.decode(escaped_hex)
|
|
39
39
|
else:
|
|
40
|
-
|
|
41
|
-
if not
|
|
42
|
-
raise ValueError("
|
|
40
|
+
av_encoded = re.search(r"av\('([^']+)'\)", istek.text)
|
|
41
|
+
if not av_encoded:
|
|
42
|
+
raise ValueError("AV encoding not found.")
|
|
43
43
|
|
|
44
|
-
|
|
45
|
-
extracted_value = re.search(r'file":"(.*)","label', unpacked_jwsetup)
|
|
46
|
-
if not extracted_value:
|
|
47
|
-
raise ValueError("File URL not found in unpacked JWPlayer setup.")
|
|
48
|
-
|
|
49
|
-
escaped_hex = extracted_value[1].replace("\\\\x", "")
|
|
50
|
-
decoded_url = bytes.fromhex(escaped_hex).decode("utf-8")
|
|
44
|
+
decoded_url = self.decode_secret(av_encoded[1])
|
|
51
45
|
except Exception as hata:
|
|
52
46
|
raise RuntimeError(f"Extraction failed: {hata}") from hata
|
|
53
47
|
|
|
@@ -58,4 +52,28 @@ class RapidVid(ExtractorBase):
|
|
|
58
52
|
referer = self.main_url,
|
|
59
53
|
headers = {},
|
|
60
54
|
subtitles = subtitles
|
|
61
|
-
)
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
def decode_secret(self, encoded_string: str) -> str:
|
|
58
|
+
# 1. Base64 ile şifrelenmiş string ters çevrilmiş, önce geri çeviriyoruz
|
|
59
|
+
reversed_input = encoded_string[::-1]
|
|
60
|
+
|
|
61
|
+
# 2. İlk base64 çözme işlemi
|
|
62
|
+
decoded_once = base64.b64decode(reversed_input).decode("utf-8")
|
|
63
|
+
|
|
64
|
+
decrypted_chars = []
|
|
65
|
+
key = "K9L"
|
|
66
|
+
|
|
67
|
+
# 3. Key'e göre karakter kaydırma geri alınıyor
|
|
68
|
+
for index, encoded_char in enumerate(decoded_once):
|
|
69
|
+
key_char = key[index % len(key)]
|
|
70
|
+
offset = (ord(key_char) % 5) + 1 # Her karakter için dinamik offset
|
|
71
|
+
|
|
72
|
+
original_char_code = ord(encoded_char) - offset
|
|
73
|
+
decrypted_chars.append(chr(original_char_code))
|
|
74
|
+
|
|
75
|
+
# 4. Karakterleri birleştirip ikinci base64 çözme işlemini yapıyoruz
|
|
76
|
+
intermediate_string = "".join(decrypted_chars)
|
|
77
|
+
final_decoded_bytes = base64.b64decode(intermediate_string)
|
|
78
|
+
|
|
79
|
+
return final_decoded_bytes.decode("utf-8")
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
from KekikStream.Core import kekik_cache, PluginBase, MainPageResult, SearchResult, SeriesInfo, Episode
|
|
4
4
|
from Kekik.Sifreleme import CryptoJS
|
|
5
5
|
from parsel import Selector
|
|
6
|
-
import re, urllib.parse, base64, contextlib, asyncio
|
|
6
|
+
import re, urllib.parse, base64, contextlib, asyncio, time
|
|
7
7
|
|
|
8
8
|
class DiziBox(PluginBase):
|
|
9
9
|
name = "DiziBox"
|
|
@@ -42,6 +42,10 @@ class DiziBox(PluginBase):
|
|
|
42
42
|
|
|
43
43
|
#@kekik_cache(ttl=60*60)
|
|
44
44
|
async def get_main_page(self, page: int, url: str, category: str) -> list[MainPageResult]:
|
|
45
|
+
self.httpx.cookies.update({
|
|
46
|
+
"isTrustedUser" : "true",
|
|
47
|
+
"dbxu" : str(time.time() * 1000).split(".")[0]
|
|
48
|
+
})
|
|
45
49
|
istek = await self.httpx.get(
|
|
46
50
|
url = f"{url.replace('SAYFA', str(page))}",
|
|
47
51
|
follow_redirects = True
|
|
@@ -61,9 +65,8 @@ class DiziBox(PluginBase):
|
|
|
61
65
|
#@kekik_cache(ttl=60*60)
|
|
62
66
|
async def search(self, query: str) -> list[SearchResult]:
|
|
63
67
|
self.httpx.cookies.update({
|
|
64
|
-
"LockUser" : "true",
|
|
65
68
|
"isTrustedUser" : "true",
|
|
66
|
-
"dbxu" : "
|
|
69
|
+
"dbxu" : str(time.time() * 1000).split(".")[0]
|
|
67
70
|
})
|
|
68
71
|
istek = await self.httpx.get(f"{self.main_url}/?s={query}")
|
|
69
72
|
secici = Selector(istek.text)
|
|
@@ -131,7 +134,7 @@ class DiziBox(PluginBase):
|
|
|
131
134
|
self.httpx.headers.update({"Referer": referer})
|
|
132
135
|
self.httpx.cookies.update({
|
|
133
136
|
"isTrustedUser" : "true",
|
|
134
|
-
"dbxu" : "
|
|
137
|
+
"dbxu" : str(time.time() * 1000).split(".")[0]
|
|
135
138
|
})
|
|
136
139
|
|
|
137
140
|
if "/player/king/king.php" in iframe_link:
|
|
@@ -66,7 +66,9 @@ class DiziYou(PluginBase):
|
|
|
66
66
|
title = secici.css("h1::text").get().strip()
|
|
67
67
|
poster = self.fix_url(secici.css("div.category_image img::attr(src)").get().strip())
|
|
68
68
|
year = secici.xpath("//span[contains(., 'Yapım Yılı')]/following-sibling::text()[1]").get()
|
|
69
|
-
description = secici.css("div.diziyou_desc::text").get()
|
|
69
|
+
description = secici.css("div.diziyou_desc::text").get()
|
|
70
|
+
if description:
|
|
71
|
+
description = description.strip()
|
|
70
72
|
tags = secici.css("div.genres a::text").getall()
|
|
71
73
|
rating = secici.xpath("//span[contains(., 'IMDB')]/following-sibling::text()[1]").get()
|
|
72
74
|
_actors = secici.xpath("//span[contains(., 'Oyuncular')]/following-sibling::text()[1]").get()
|
|
@@ -13,32 +13,31 @@ class FullHDFilmizlesene(PluginBase):
|
|
|
13
13
|
description = "Sinema zevkini evinize kadar getirdik. Türkiye'nin lider Film sitesinde, en yeni filmleri Full HD izleyin."
|
|
14
14
|
|
|
15
15
|
main_page = {
|
|
16
|
-
f"{main_url}/en-cok-izlenen-filmler
|
|
17
|
-
f"{main_url}/filmizle/
|
|
18
|
-
f"{main_url}/filmizle/
|
|
19
|
-
f"{main_url}/filmizle/
|
|
20
|
-
f"{main_url}/filmizle/
|
|
21
|
-
f"{main_url}/filmizle/
|
|
22
|
-
f"{main_url}/filmizle/
|
|
23
|
-
f"{main_url}/filmizle/
|
|
24
|
-
f"{main_url}/filmizle/
|
|
25
|
-
f"{main_url}/filmizle/
|
|
26
|
-
f"{main_url}/filmizle/
|
|
27
|
-
f"{main_url}/filmizle/
|
|
28
|
-
f"{main_url}/filmizle/
|
|
29
|
-
f"{main_url}/filmizle/
|
|
30
|
-
f"{main_url}/filmizle/
|
|
31
|
-
f"{main_url}/filmizle/
|
|
32
|
-
f"{main_url}/filmizle/
|
|
33
|
-
f"{main_url}/filmizle/
|
|
34
|
-
f"{main_url}/filmizle/
|
|
35
|
-
f"{main_url}/filmizle/
|
|
36
|
-
f"{main_url}/filmizle/
|
|
37
|
-
f"{main_url}/filmizle/
|
|
38
|
-
f"{main_url}/filmizle/
|
|
39
|
-
f"{main_url}/filmizle/
|
|
40
|
-
f"{main_url}/filmizle/
|
|
41
|
-
f"{main_url}/filmizle/yerli-filmler-izle-3/" : "Yerli Filmler",
|
|
16
|
+
f"{main_url}/en-cok-izlenen-hd-filmler/" : "En Çok izlenen Filmler",
|
|
17
|
+
f"{main_url}/filmizle/aile-filmleri-hdf-izle/" : "Aile Filmleri",
|
|
18
|
+
f"{main_url}/filmizle/aksiyon-filmleri-hdf-izle/" : "Aksiyon Filmleri",
|
|
19
|
+
f"{main_url}/filmizle/animasyon-filmleri-izle/" : "Animasyon Filmleri",
|
|
20
|
+
f"{main_url}/filmizle/belgesel-filmleri-izle/" : "Belgeseller",
|
|
21
|
+
f"{main_url}/filmizle/bilim-kurgu-filmleri-izle-2/" : "Bilim Kurgu Filmleri",
|
|
22
|
+
f"{main_url}/filmizle/bluray-filmler-izle/" : "Blu Ray Filmler",
|
|
23
|
+
f"{main_url}/filmizle/cizgi-filmler-fhd-izle/" : "Çizgi Filmler",
|
|
24
|
+
f"{main_url}/filmizle/dram-filmleri-hd-izle/" : "Dram Filmleri",
|
|
25
|
+
f"{main_url}/filmizle/fantastik-filmler-hd-izle/" : "Fantastik Filmler",
|
|
26
|
+
f"{main_url}/filmizle/gerilim-filmleri-fhd-izle/" : "Gerilim Filmleri",
|
|
27
|
+
f"{main_url}/filmizle/gizem-filmleri-hd-izle/" : "Gizem Filmleri",
|
|
28
|
+
f"{main_url}/filmizle/hint-filmleri-fhd-izle/" : "Hint Filmleri",
|
|
29
|
+
f"{main_url}/filmizle/komedi-filmleri-fhd-izle/" : "Komedi Filmleri",
|
|
30
|
+
f"{main_url}/filmizle/korku-filmleri-izle-3/" : "Korku Filmleri",
|
|
31
|
+
f"{main_url}/filmizle/macera-filmleri-fhd-izle/" : "Macera Filmleri",
|
|
32
|
+
f"{main_url}/filmizle/muzikal-filmler-izle/" : "Müzikal Filmler",
|
|
33
|
+
f"{main_url}/filmizle/polisiye-filmleri-izle/" : "Polisiye Filmleri",
|
|
34
|
+
f"{main_url}/filmizle/psikolojik-filmler-izle/" : "Psikolojik Filmler",
|
|
35
|
+
f"{main_url}/filmizle/romantik-filmler-fhd-izle/" : "Romantik Filmler",
|
|
36
|
+
f"{main_url}/filmizle/savas-filmleri-fhd-izle/" : "Savaş Filmleri",
|
|
37
|
+
f"{main_url}/filmizle/suc-filmleri-izle/" : "Suç Filmleri",
|
|
38
|
+
f"{main_url}/filmizle/tarih-filmleri-fhd-izle/" : "Tarih Filmleri",
|
|
39
|
+
f"{main_url}/filmizle/western-filmler-hd-izle-3/" : "Western Filmler",
|
|
40
|
+
f"{main_url}/filmizle/yerli-filmler-hd-izle/" : "Yerli Filmler"
|
|
42
41
|
}
|
|
43
42
|
|
|
44
43
|
#@kekik_cache(ttl=60*60)
|
|
@@ -6,7 +6,7 @@ from parsel import Selector
|
|
|
6
6
|
class UgurFilm(PluginBase):
|
|
7
7
|
name = "UgurFilm"
|
|
8
8
|
language = "tr"
|
|
9
|
-
main_url = "https://
|
|
9
|
+
main_url = "https://ugurfilm3.xyz"
|
|
10
10
|
favicon = f"https://www.google.com/s2/favicons?domain={main_url}&sz=64"
|
|
11
11
|
description = "Yabancı film izle, Türkçe dublaj ve Türkçe altyazılı film seçenekleriyle 720p ve 1080p HD kalitesinde film izle - Uğur Film full hd film izle."
|
|
12
12
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: KekikStream
|
|
3
|
-
Version: 1.6.
|
|
3
|
+
Version: 1.6.2
|
|
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: 1.6.
|
|
3
|
+
Version: 1.6.2
|
|
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.6.
|
|
9
|
+
version = "1.6.2",
|
|
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
|