KekikStream 0.3.7__py3-none-any.whl → 0.3.8__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/ExtractorBase.py +2 -0
- KekikStream/Core/MediaHandler.py +14 -11
- KekikStream/Core/PluginLoader.py +2 -2
- KekikStream/Extractors/MixPlayHD.py +2 -2
- KekikStream/Extractors/Odnoklassniki.py +4 -4
- KekikStream/Extractors/PeaceMakerst.py +2 -2
- KekikStream/Extractors/RapidVid.py +2 -2
- KekikStream/Extractors/Sobreatsesuyp.py +2 -2
- KekikStream/Extractors/TRsTX.py +2 -2
- KekikStream/Extractors/VidMoly.py +2 -2
- KekikStream/Extractors/VideoSeyred.py +2 -2
- KekikStream/Plugins/FullHDFilmizlesene.py +4 -3
- KekikStream/Plugins/JetFilmizle.py +4 -8
- KekikStream/__init__.py +8 -5
- {KekikStream-0.3.7.dist-info → KekikStream-0.3.8.dist-info}/METADATA +1 -1
- {KekikStream-0.3.7.dist-info → KekikStream-0.3.8.dist-info}/RECORD +20 -20
- {KekikStream-0.3.7.dist-info → KekikStream-0.3.8.dist-info}/LICENSE +0 -0
- {KekikStream-0.3.7.dist-info → KekikStream-0.3.8.dist-info}/WHEEL +0 -0
- {KekikStream-0.3.7.dist-info → KekikStream-0.3.8.dist-info}/entry_points.txt +0 -0
- {KekikStream-0.3.7.dist-info → KekikStream-0.3.8.dist-info}/top_level.txt +0 -0
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
from abc import ABC, abstractmethod
|
4
4
|
from httpx import AsyncClient, Timeout
|
5
|
+
from cloudscraper import CloudScraper
|
5
6
|
from typing import Optional
|
6
7
|
from .ExtractorModels import ExtractResult
|
7
8
|
|
@@ -17,6 +18,7 @@ class ExtractorBase(ABC):
|
|
17
18
|
},
|
18
19
|
timeout = Timeout(10.0)
|
19
20
|
)
|
21
|
+
self.cloudscraper = CloudScraper()
|
20
22
|
|
21
23
|
def can_handle_url(self, url: str) -> bool:
|
22
24
|
"""URL'nin bu extractor tarafından işlenip işlenemeyeceğini kontrol eder."""
|
KekikStream/Core/MediaHandler.py
CHANGED
@@ -5,7 +5,10 @@ from .ExtractorModels import ExtractResult
|
|
5
5
|
import subprocess, os
|
6
6
|
|
7
7
|
class MediaHandler:
|
8
|
-
def __init__(self, title: str = "KekikStream", headers: dict =
|
8
|
+
def __init__(self, title: str = "KekikStream", headers: dict = None):
|
9
|
+
if headers is None:
|
10
|
+
headers = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5)"}
|
11
|
+
|
9
12
|
self.headers = headers
|
10
13
|
self.title = title
|
11
14
|
|
@@ -29,16 +32,16 @@ class MediaHandler:
|
|
29
32
|
if "Referer" in self.headers:
|
30
33
|
vlc_command.append(f"--http-referrer={self.headers.get('Referer')}")
|
31
34
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
+
vlc_command.extend(
|
36
|
+
f"--sub-file={subtitle.url}" for subtitle in extract_data.subtitles
|
37
|
+
)
|
35
38
|
vlc_command.append(extract_data.url)
|
36
39
|
|
37
40
|
with open(os.devnull, "w") as devnull:
|
38
41
|
subprocess.run(vlc_command, stdout=devnull, stderr=devnull, check=True)
|
39
42
|
|
40
|
-
except subprocess.CalledProcessError as
|
41
|
-
konsol.print(f"[red]VLC oynatma hatası: {
|
43
|
+
except subprocess.CalledProcessError as hata:
|
44
|
+
konsol.print(f"[red]VLC oynatma hatası: {hata}[/red]")
|
42
45
|
konsol.print({"title": self.title, "url": extract_data.url, "headers": self.headers})
|
43
46
|
except FileNotFoundError:
|
44
47
|
konsol.print("[red]VLC bulunamadı! VLC kurulu olduğundan emin olun.[/red]")
|
@@ -60,16 +63,16 @@ class MediaHandler:
|
|
60
63
|
if "Cookie" in self.headers:
|
61
64
|
mpv_command.append(f"--http-header-fields=Cookie: {self.headers.get('Cookie')}")
|
62
65
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
+
mpv_command.extend(
|
67
|
+
f"--sub-file={subtitle.url}" for subtitle in extract_data.subtitles
|
68
|
+
)
|
66
69
|
mpv_command.append(extract_data.url)
|
67
70
|
|
68
71
|
with open(os.devnull, "w") as devnull:
|
69
72
|
subprocess.run(mpv_command, stdout=devnull, stderr=devnull, check=True)
|
70
73
|
|
71
|
-
except subprocess.CalledProcessError as
|
72
|
-
konsol.print(f"[red]mpv oynatma hatası: {
|
74
|
+
except subprocess.CalledProcessError as hata:
|
75
|
+
konsol.print(f"[red]mpv oynatma hatası: {hata}[/red]")
|
73
76
|
konsol.print({"title": self.title, "url": extract_data.url, "headers": self.headers})
|
74
77
|
except FileNotFoundError:
|
75
78
|
konsol.print("[red]mpv bulunamadı! mpv kurulu olduğundan emin olun.[/red]")
|
KekikStream/Core/PluginLoader.py
CHANGED
@@ -18,11 +18,11 @@ class PluginLoader:
|
|
18
18
|
|
19
19
|
if self.global_plugins_dir.exists():
|
20
20
|
konsol.log(f"[green][*] Global Plugin dizininden yükleniyor: {self.global_plugins_dir}[/green]")
|
21
|
-
plugins
|
21
|
+
plugins |= self._load_from_directory(self.global_plugins_dir)
|
22
22
|
|
23
23
|
if self.local_plugins_dir.exists():
|
24
24
|
konsol.log(f"[green][*] Yerel Plugin dizininden yükleniyor: {self.local_plugins_dir}[/green]")
|
25
|
-
plugins
|
25
|
+
plugins |= self._load_from_directory(self.local_plugins_dir)
|
26
26
|
|
27
27
|
if not plugins:
|
28
28
|
konsol.print("[yellow][!] Yüklenecek bir Plugin bulunamadı![/yellow]")
|
@@ -25,8 +25,8 @@ class MixPlayHD(ExtractorBase):
|
|
25
25
|
try:
|
26
26
|
decrypted_data = AESManager.decrypt(be_player_data, be_player_pass).replace("\\", "")
|
27
27
|
decrypted_json = json.loads(decrypted_data)
|
28
|
-
except Exception as
|
29
|
-
raise RuntimeError(f"Decryption failed: {
|
28
|
+
except Exception as hata:
|
29
|
+
raise RuntimeError(f"Decryption failed: {hata}") from hata
|
30
30
|
|
31
31
|
if video_url_match := re.search(
|
32
32
|
pattern = r'"video_location":"([^"]+)"',
|
@@ -21,8 +21,8 @@ class Odnoklassniki(ExtractorBase):
|
|
21
21
|
try:
|
22
22
|
istek = await self.fetch_with_redirects(url)
|
23
23
|
istek.raise_for_status()
|
24
|
-
except Exception as
|
25
|
-
raise RuntimeError(f"Failed to fetch the URL: {url}, Error: {
|
24
|
+
except Exception as hata:
|
25
|
+
raise RuntimeError(f"Failed to fetch the URL: {url}, Error: {hata}") from hata
|
26
26
|
|
27
27
|
response_text = (
|
28
28
|
istek.text.replace("\\"", "\"")
|
@@ -41,8 +41,8 @@ class Odnoklassniki(ExtractorBase):
|
|
41
41
|
|
42
42
|
try:
|
43
43
|
videos = json.loads(videos_match[1])
|
44
|
-
except json.JSONDecodeError:
|
45
|
-
raise ValueError("Failed to parse video data.")
|
44
|
+
except json.JSONDecodeError as hata:
|
45
|
+
raise ValueError("Failed to parse video data.") from hata
|
46
46
|
|
47
47
|
quality_order = {
|
48
48
|
"ULTRA": 6, # 4K veya daha yüksek
|
@@ -43,8 +43,8 @@ class PeaceMakerst(ExtractorBase):
|
|
43
43
|
video_response = response.json()
|
44
44
|
if video_sources := video_response.get("videoSources", []):
|
45
45
|
m3u_link = video_sources[-1]["file"]
|
46
|
-
except (json.JSONDecodeError, KeyError):
|
47
|
-
raise ValueError("Peace response is invalid or null.")
|
46
|
+
except (json.JSONDecodeError, KeyError) as hata:
|
47
|
+
raise ValueError("Peace response is invalid or null.") from hata
|
48
48
|
|
49
49
|
if not m3u_link:
|
50
50
|
raise ValueError("m3u link not found.")
|
@@ -48,8 +48,8 @@ class RapidVid(ExtractorBase):
|
|
48
48
|
|
49
49
|
escaped_hex = extracted_value[1].replace("\\\\x", "")
|
50
50
|
decoded_url = bytes.fromhex(escaped_hex).decode("utf-8")
|
51
|
-
except Exception as
|
52
|
-
raise RuntimeError(f"Extraction failed: {
|
51
|
+
except Exception as hata:
|
52
|
+
raise RuntimeError(f"Extraction failed: {hata}") from hata
|
53
53
|
|
54
54
|
await self.close()
|
55
55
|
return ExtractResult(
|
@@ -26,8 +26,8 @@ class Sobreatsesuyp(ExtractorBase):
|
|
26
26
|
|
27
27
|
try:
|
28
28
|
post_json = json.loads(post_istek.text)
|
29
|
-
except json.JSONDecodeError:
|
30
|
-
raise ValueError("Failed to parse JSON response.")
|
29
|
+
except json.JSONDecodeError as hata:
|
30
|
+
raise ValueError("Failed to parse JSON response.") from hata
|
31
31
|
|
32
32
|
video_data_list = post_json[1:] if isinstance(post_json, list) else []
|
33
33
|
|
KekikStream/Extractors/TRsTX.py
CHANGED
@@ -26,8 +26,8 @@ class TRsTX(ExtractorBase):
|
|
26
26
|
|
27
27
|
try:
|
28
28
|
post_json = json.loads(post_istek.text)
|
29
|
-
except json.JSONDecodeError:
|
30
|
-
raise ValueError("Failed to parse JSON response.")
|
29
|
+
except json.JSONDecodeError as hata:
|
30
|
+
raise ValueError("Failed to parse JSON response.") from hata
|
31
31
|
|
32
32
|
video_data_list = post_json[1:] if isinstance(post_json, list) else []
|
33
33
|
|
@@ -40,8 +40,8 @@ class VidMoly(ExtractorBase):
|
|
40
40
|
video_data = self._add_marks(script_content, "file")
|
41
41
|
try:
|
42
42
|
video_sources = json.loads(f"[{video_data}]")
|
43
|
-
except json.JSONDecodeError:
|
44
|
-
raise ValueError("Video kaynakları ayrıştırılamadı.")
|
43
|
+
except json.JSONDecodeError as hata:
|
44
|
+
raise ValueError("Video kaynakları ayrıştırılamadı.") from hata
|
45
45
|
|
46
46
|
# Altyazı kaynaklarını ayrıştır
|
47
47
|
subtitles = []
|
@@ -23,8 +23,8 @@ class VideoSeyred(ExtractorBase):
|
|
23
23
|
else:
|
24
24
|
raise ValueError("Empty response from VideoSeyred.")
|
25
25
|
|
26
|
-
except (json.JSONDecodeError, IndexError) as
|
27
|
-
raise RuntimeError(f"Failed to parse response: {
|
26
|
+
except (json.JSONDecodeError, IndexError) as hata:
|
27
|
+
raise RuntimeError(f"Failed to parse response: {hata}") from hata
|
28
28
|
|
29
29
|
subtitles = [
|
30
30
|
Subtitle(name=track["label"], url=self.fix_url(track["file"]))
|
@@ -72,6 +72,7 @@ class FullHDFilmizlesene(PluginBase):
|
|
72
72
|
if isinstance(t, dict):
|
73
73
|
link_list.extend(StringCodec.decode(v) for k, v in t.items())
|
74
74
|
|
75
|
-
|
76
|
-
|
77
|
-
|
75
|
+
return [
|
76
|
+
f"https:{link}" if link.startswith("//") else link
|
77
|
+
for link in link_list
|
78
|
+
]
|
@@ -60,8 +60,7 @@ class JetFilmizle(PluginBase):
|
|
60
60
|
secici = Selector(istek.text)
|
61
61
|
|
62
62
|
iframes = []
|
63
|
-
main_iframe
|
64
|
-
if main_iframe:
|
63
|
+
if main_iframe := secici.css("div#movie iframe::attr(data-src), div#movie iframe::attr(data), div#movie iframe::attr(src)").get():
|
65
64
|
iframes.append(self.fix_url(main_iframe))
|
66
65
|
|
67
66
|
for part in secici.css("div.film_part a"):
|
@@ -72,13 +71,11 @@ class JetFilmizle(PluginBase):
|
|
72
71
|
part_istek = await self.oturum.get(part_href)
|
73
72
|
part_secici = Selector(part_istek.text)
|
74
73
|
|
75
|
-
iframe
|
76
|
-
if iframe:
|
74
|
+
if iframe := part_secici.css("div#movie iframe::attr(data-src), div#movie iframe::attr(data), div#movie iframe::attr(src)").get():
|
77
75
|
iframes.append(self.fix_url(iframe))
|
78
76
|
else:
|
79
77
|
for link in part_secici.css("div#movie p a"):
|
80
|
-
download_link
|
81
|
-
if download_link:
|
78
|
+
if download_link := link.attrib.get("href"):
|
82
79
|
iframes.append(self.fix_url(download_link))
|
83
80
|
|
84
81
|
processed_iframes = []
|
@@ -87,8 +84,7 @@ class JetFilmizle(PluginBase):
|
|
87
84
|
jetv_istek = await self.oturum.get(iframe)
|
88
85
|
jetv_secici = Selector(jetv_istek.text)
|
89
86
|
|
90
|
-
jetv_iframe
|
91
|
-
if jetv_iframe:
|
87
|
+
if jetv_iframe := jetv_secici.css("iframe::attr(src)").get():
|
92
88
|
processed_iframes.append(self.fix_url(jetv_iframe))
|
93
89
|
else:
|
94
90
|
processed_iframes.append(iframe)
|
KekikStream/__init__.py
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
2
2
|
|
3
|
-
from .CLI
|
4
|
-
from .Managers
|
5
|
-
from .Core
|
6
|
-
from asyncio
|
3
|
+
from .CLI import konsol, cikis_yap, hata_yakala, pypi_kontrol_guncelle
|
4
|
+
from .Managers import PluginManager, ExtractorManager, UIManager, MediaManager
|
5
|
+
from .Core import PluginBase, ExtractorBase, SeriesInfo
|
6
|
+
from asyncio import run
|
7
|
+
from contextlib import suppress
|
7
8
|
|
8
9
|
class KekikStream:
|
9
10
|
def __init__(self):
|
@@ -83,7 +84,9 @@ class KekikStream:
|
|
83
84
|
secilen_sonuc = await self.tum_sonuc_secimi(sonuclar)
|
84
85
|
|
85
86
|
if secilen_sonuc:
|
86
|
-
|
87
|
+
for _ in range(3):
|
88
|
+
with suppress(Exception):
|
89
|
+
return await self.sonuc_detaylari_goster(secilen_sonuc)
|
87
90
|
|
88
91
|
async def tum_eklentilerde_arama_sorgula(self, sorgu: str) -> list:
|
89
92
|
tum_sonuclar = []
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: KekikStream
|
3
|
-
Version: 0.3.
|
3
|
+
Version: 0.3.8
|
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,14 +1,14 @@
|
|
1
|
-
KekikStream/__init__.py,sha256=
|
1
|
+
KekikStream/__init__.py,sha256=8sSiunt3dOsmNLfNkkp06y74ogKxV03Y59NM-mdPn04,10613
|
2
2
|
KekikStream/__main__.py,sha256=B81dQoeGEb-T5Sycs3eNAmW7unvx0Mef0syCjs4nPds,137
|
3
3
|
KekikStream/requirements.txt,sha256=gS_TUUQx5A7FUmRGxj2dQedxheD7qA6AswdUb2y_Ub8,70
|
4
4
|
KekikStream/CLI/__init__.py,sha256=U6oLq_O7u5y2eHhBnmfhZNns_EqHHJXJmzl8jvZFUNY,230
|
5
5
|
KekikStream/CLI/pypi_kontrol.py,sha256=MchatOwCWCpFBtgt09yag9Rjal9XFyh2W_oVs2p7SNg,1518
|
6
|
-
KekikStream/Core/ExtractorBase.py,sha256
|
6
|
+
KekikStream/Core/ExtractorBase.py,sha256=o9VaOZ0UVKNSxJt6jGpr9OfbfKROv6ChooKC2c8X2WQ,1154
|
7
7
|
KekikStream/Core/ExtractorLoader.py,sha256=rrll3F2CyVmx3foa57PG0FocQMrFuMpdlG0Uf0-2Fz4,3915
|
8
8
|
KekikStream/Core/ExtractorModels.py,sha256=huIcPQ5VIRfMx0LcL5SS1u4dldZbHjzHKEdSEtOPlc0,456
|
9
|
-
KekikStream/Core/MediaHandler.py,sha256=
|
9
|
+
KekikStream/Core/MediaHandler.py,sha256=9nwudUVv4Zu8r0uHswFcwv5OWDKoz2k_PhjHvcq0m3I,3345
|
10
10
|
KekikStream/Core/PluginBase.py,sha256=ZQx6adxOKuX50TPN5pxE8oG9FD-ZjPXSHpSiW086QPQ,2479
|
11
|
-
KekikStream/Core/PluginLoader.py,sha256=
|
11
|
+
KekikStream/Core/PluginLoader.py,sha256=5HQF8Em1TjvqMBPLKB7M_i2y6zPH6JZao-uekeacoSs,2574
|
12
12
|
KekikStream/Core/PluginModels.py,sha256=WWPEz8PpZZ4bLMDJzTE19BsQEJObkyhaYjDkyLaF2Ck,2365
|
13
13
|
KekikStream/Core/__init__.py,sha256=HZpXs3MKy4joO0sDpIGcZ2DrUKwK49IKG-GQgKbO2jk,416
|
14
14
|
KekikStream/Extractors/CloseLoad.py,sha256=YmDB3YvuDaCUbQ0T_tmhnkEsC5mSdEN6GNoAR662fl8,990
|
@@ -19,23 +19,23 @@ KekikStream/Extractors/FourPlayRu.py,sha256=wq1ylxKpsO_IBoYr_ALzB2dVrQpJ-jY9lf2z
|
|
19
19
|
KekikStream/Extractors/HDStreamAble.py,sha256=66n5EvIdX_or5cdnlJ_Uqmzi50n4rl9c5VCw8kBqhQk,245
|
20
20
|
KekikStream/Extractors/Hotlinger.py,sha256=NFMRgUmb6BCrJfa7Hi0VarDNYvCeVknBWEk24FKBBa0,224
|
21
21
|
KekikStream/Extractors/MailRu.py,sha256=lB3Xy912EaSEUw7Im65L5TwtIeM7OLFV1_9lan39g40,1308
|
22
|
-
KekikStream/Extractors/MixPlayHD.py,sha256=
|
23
|
-
KekikStream/Extractors/Odnoklassniki.py,sha256=
|
22
|
+
KekikStream/Extractors/MixPlayHD.py,sha256=M7Zxmpkazkj6ewgLWKKDeZDbBOCM9vkMDyIaVhaSPrY,1554
|
23
|
+
KekikStream/Extractors/Odnoklassniki.py,sha256=B0A2krVVvzmpZBzIpxu40WB9AZ_zzH-Km2HTetrNvqQ,3593
|
24
24
|
KekikStream/Extractors/OkRuHTTP.py,sha256=L-B0i_i_Vnm61GvUfd6cGIW-o_H4M-C7DO_cdw2rQPU,228
|
25
25
|
KekikStream/Extractors/OkRuSSL.py,sha256=FHJ5XZ1dO5ED3mIku3e3vnq8K0slrcr0jqhaUnHmfVk,227
|
26
|
-
KekikStream/Extractors/PeaceMakerst.py,sha256=
|
26
|
+
KekikStream/Extractors/PeaceMakerst.py,sha256=VSXeCeA_-9IkKdjoQ3lvA4FFDzdT_Oj1oFM7i-_3tvQ,2100
|
27
27
|
KekikStream/Extractors/Pichive.py,sha256=BSVYFwL3Ax6yGoS1WkpOWtngxNyuZLoKzpPwjibpu2s,221
|
28
28
|
KekikStream/Extractors/PixelDrain.py,sha256=1kf1kKKxcYwLVPo_8Fg1Za3E2kOplqqVFM41xBT52KY,992
|
29
29
|
KekikStream/Extractors/PlayRu.py,sha256=DQMZyCSJwLkrh-gfDD8T1DvUFNBAKUXpByeCAWuK6YY,215
|
30
|
-
KekikStream/Extractors/RapidVid.py,sha256=
|
30
|
+
KekikStream/Extractors/RapidVid.py,sha256=n03CyrnFLSoL6Ys5Dy4a4d-5iIAdmouqz4-k6Vl3Hok,2369
|
31
31
|
KekikStream/Extractors/SibNet.py,sha256=Jrl93OdKwEhssG348-F2BKaj-XUS7v-Qw3dKMh_ZMRQ,878
|
32
|
-
KekikStream/Extractors/Sobreatsesuyp.py,sha256=
|
33
|
-
KekikStream/Extractors/TRsTX.py,sha256=
|
32
|
+
KekikStream/Extractors/Sobreatsesuyp.py,sha256=mBYu29rHpAZfB8CYJ6Wuy3roUvdRyqzkfAxmEUkkaxw,1959
|
33
|
+
KekikStream/Extractors/TRsTX.py,sha256=ammizq5izjv9FpeV5kyXZPftEX_K0JGQfAnlMhl2Sn0,2111
|
34
34
|
KekikStream/Extractors/TauVideo.py,sha256=ID-QwdPnl62wTECSzTFA8Z0P7Rv9LELd6xdvBz5ALiQ,1018
|
35
35
|
KekikStream/Extractors/TurboImgz.py,sha256=VXx9vZZRTdQiVNER0LcXm2nsv2OaXnxuPpslG-sEKD0,826
|
36
|
-
KekikStream/Extractors/VidMoly.py,sha256=
|
36
|
+
KekikStream/Extractors/VidMoly.py,sha256=BKJgk60GomFYiLFsRQSR2sOYP105Aix5y5XLazBNWmw,3368
|
37
37
|
KekikStream/Extractors/VidMoxy.py,sha256=_K6BA7Uo59DA3ty_tsayCUZjXmRoDBTghekVNXiuZ7g,1800
|
38
|
-
KekikStream/Extractors/VideoSeyred.py,sha256=
|
38
|
+
KekikStream/Extractors/VideoSeyred.py,sha256=otyGi1zdY_JPrXJjoZjesCQDiOkxFdaWiXQ9mOmrygA,1780
|
39
39
|
KekikStream/Managers/ExtractorManager.py,sha256=9rGlUsnedJ7fwIeObN5Vsm8H5VLal0ODO7F93dDRx8w,976
|
40
40
|
KekikStream/Managers/MediaManager.py,sha256=F7mkSvAttAaMHRvnDcxnV2K1D_sK644BCSrEaAmMl_U,522
|
41
41
|
KekikStream/Managers/PluginManager.py,sha256=YDBLHB_Fh79A3Pei0ny2KLVY4VSihdNiKBh_w5tBl-0,637
|
@@ -43,14 +43,14 @@ KekikStream/Managers/UIManager.py,sha256=OrGxzbhRPTCqiLEXjipLb8ChF7saV3fvFIUXLKT
|
|
43
43
|
KekikStream/Managers/__init__.py,sha256=3085I_9Sa2L_Vq6Z-QvYUYn1BapkN4sQqBo8ITZoD_4,251
|
44
44
|
KekikStream/Plugins/DiziBox.py,sha256=ARzsao-r91c3PVV_3-NCLvNcVRSIxjlGdWl_3-1Q6Mo,5722
|
45
45
|
KekikStream/Plugins/FilmMakinesi.py,sha256=rz8TQeL41PJbeEmksgPHIhp6J-4vbSCBTeEH0ukExz4,2822
|
46
|
-
KekikStream/Plugins/FullHDFilmizlesene.py,sha256=
|
47
|
-
KekikStream/Plugins/JetFilmizle.py,sha256=
|
46
|
+
KekikStream/Plugins/FullHDFilmizlesene.py,sha256=Fa0gRP_NoMfPC8HIKRxERjQVOv8Fyb-ayMJ2EooZ7BE,3080
|
47
|
+
KekikStream/Plugins/JetFilmizle.py,sha256=FXkMSQtjYoxwIonjRENFa91rC42L_8SYRhjhuSgsu60,3919
|
48
48
|
KekikStream/Plugins/SezonlukDizi.py,sha256=5BZVzQ2eQtymHxO0bzjA2ho4FFNahPFQly4hoHuH8lo,4441
|
49
49
|
KekikStream/Plugins/SineWix.py,sha256=ZtcIwPW0ONGkSjT7Ye8b71RWdHZMUZefX-JTWu6uGSs,4854
|
50
50
|
KekikStream/Plugins/UgurFilm.py,sha256=yYXee5uxwNnPqFJZ6s6cRkmUyqS3Vv8x-iesPalc4j4,2930
|
51
|
-
KekikStream-0.3.
|
52
|
-
KekikStream-0.3.
|
53
|
-
KekikStream-0.3.
|
54
|
-
KekikStream-0.3.
|
55
|
-
KekikStream-0.3.
|
56
|
-
KekikStream-0.3.
|
51
|
+
KekikStream-0.3.8.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
52
|
+
KekikStream-0.3.8.dist-info/METADATA,sha256=bnFaZhNtzr4FZX37i-4CxN4kbom-meinCuh_g7apaSw,3987
|
53
|
+
KekikStream-0.3.8.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
54
|
+
KekikStream-0.3.8.dist-info/entry_points.txt,sha256=dFwdiTx8djyehI0Gsz-rZwjAfZzUzoBSrmzRu9ubjJc,50
|
55
|
+
KekikStream-0.3.8.dist-info/top_level.txt,sha256=DNmGJDXl27Drdfobrak8KYLmocW_uznVYFJOzcjUgmY,12
|
56
|
+
KekikStream-0.3.8.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|