KekikStream 0.7.14__py3-none-any.whl → 0.8.1__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- KekikStream/Core/{ExtractorLoader.py → Extractor/ExtractorLoader.py} +2 -2
- KekikStream/{Managers → Core/Extractor}/ExtractorManager.py +2 -1
- KekikStream/Core/{MediaHandler.py → Media/MediaHandler.py} +2 -2
- KekikStream/{Managers → Core/Media}/MediaManager.py +1 -1
- KekikStream/Core/{PluginBase.py → Plugin/PluginBase.py} +6 -6
- KekikStream/Core/{PluginLoader.py → Plugin/PluginLoader.py} +3 -3
- KekikStream/{Managers → Core/Plugin}/PluginManager.py +2 -1
- KekikStream/{Managers → Core/UI}/UIManager.py +1 -1
- KekikStream/Core/__init__.py +14 -7
- KekikStream/Plugins/RecTV.py +7 -7
- KekikStream/Plugins/SineWix.py +1 -2
- KekikStream/__init__.py +2 -3
- {KekikStream-0.7.14.dist-info → KekikStream-0.8.1.dist-info}/METADATA +1 -1
- {KekikStream-0.7.14.dist-info → KekikStream-0.8.1.dist-info}/RECORD +21 -22
- KekikStream/Managers/__init__.py +0 -6
- /KekikStream/Core/{ExtractorBase.py → Extractor/ExtractorBase.py} +0 -0
- /KekikStream/Core/{ExtractorModels.py → Extractor/ExtractorModels.py} +0 -0
- /KekikStream/Core/{PluginModels.py → Plugin/PluginModels.py} +0 -0
- {KekikStream-0.7.14.dist-info → KekikStream-0.8.1.dist-info}/LICENSE +0 -0
- {KekikStream-0.7.14.dist-info → KekikStream-0.8.1.dist-info}/WHEEL +0 -0
- {KekikStream-0.7.14.dist-info → KekikStream-0.8.1.dist-info}/entry_points.txt +0 -0
- {KekikStream-0.7.14.dist-info → KekikStream-0.8.1.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
2
2
|
|
3
|
-
from
|
3
|
+
from ...CLI import konsol, cikis_yap
|
4
4
|
from .ExtractorBase import ExtractorBase
|
5
5
|
from pathlib import Path
|
6
6
|
import os, importlib.util
|
@@ -8,7 +8,7 @@ import os, importlib.util
|
|
8
8
|
class ExtractorLoader:
|
9
9
|
def __init__(self, extractors_dir: str):
|
10
10
|
self.local_extractors_dir = Path(extractors_dir)
|
11
|
-
self.global_extractors_dir = Path(__file__).parent.parent / extractors_dir
|
11
|
+
self.global_extractors_dir = Path(__file__).parent.parent.parent / extractors_dir
|
12
12
|
if not self.local_extractors_dir.exists() and not self.global_extractors_dir.exists():
|
13
13
|
konsol.log(f"[red][!] Extractor dizini bulunamadı: {self.global_extractors_dir}[/red]")
|
14
14
|
cikis_yap(False)
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
2
2
|
|
3
|
-
from
|
3
|
+
from .ExtractorLoader import ExtractorLoader
|
4
|
+
from .ExtractorBase import ExtractorBase
|
4
5
|
|
5
6
|
class ExtractorManager:
|
6
7
|
def __init__(self, extractor_dir="Extractors"):
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
2
2
|
|
3
|
-
from
|
4
|
-
from .ExtractorModels import ExtractResult
|
3
|
+
from ...CLI import konsol
|
4
|
+
from ..Extractor.ExtractorModels import ExtractResult
|
5
5
|
import subprocess, os
|
6
6
|
|
7
7
|
class MediaHandler:
|
@@ -1,11 +1,11 @@
|
|
1
1
|
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
2
2
|
|
3
|
-
from abc
|
4
|
-
from httpx
|
5
|
-
from cloudscraper
|
6
|
-
from .PluginModels
|
7
|
-
from .MediaHandler import MediaHandler
|
8
|
-
from urllib.parse
|
3
|
+
from abc import ABC, abstractmethod
|
4
|
+
from httpx import AsyncClient, Timeout
|
5
|
+
from cloudscraper import CloudScraper
|
6
|
+
from .PluginModels import SearchResult, MovieInfo
|
7
|
+
from ..Media.MediaHandler import MediaHandler
|
8
|
+
from urllib.parse import urljoin
|
9
9
|
import re
|
10
10
|
|
11
11
|
class PluginBase(ABC):
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
2
2
|
|
3
|
-
from
|
3
|
+
from ...CLI import konsol, cikis_yap
|
4
4
|
from .PluginBase import PluginBase
|
5
5
|
from pathlib import Path
|
6
6
|
import os, importlib.util, traceback
|
@@ -8,9 +8,9 @@ import os, importlib.util, traceback
|
|
8
8
|
class PluginLoader:
|
9
9
|
def __init__(self, plugins_dir: str):
|
10
10
|
self.local_plugins_dir = Path(plugins_dir).resolve()
|
11
|
-
self.global_plugins_dir = Path(__file__).parent.parent / plugins_dir
|
11
|
+
self.global_plugins_dir = Path(__file__).parent.parent.parent / plugins_dir
|
12
12
|
if not self.local_plugins_dir.exists() and not self.global_plugins_dir.exists():
|
13
|
-
konsol.log(f"[red][!] Extractor dizini bulunamadı: {
|
13
|
+
konsol.log(f"[red][!] Extractor dizini bulunamadı: {plugins_dir}[/red]")
|
14
14
|
cikis_yap(False)
|
15
15
|
|
16
16
|
def load_all(self) -> dict[str, PluginBase]:
|
KekikStream/Core/__init__.py
CHANGED
@@ -1,9 +1,16 @@
|
|
1
1
|
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
2
2
|
|
3
|
-
from .
|
4
|
-
|
5
|
-
from .
|
6
|
-
from .
|
7
|
-
from .
|
8
|
-
from .
|
9
|
-
|
3
|
+
from .UI.UIManager import UIManager
|
4
|
+
|
5
|
+
from .Plugin.PluginManager import PluginManager
|
6
|
+
from .Plugin.PluginBase import PluginBase
|
7
|
+
from .Plugin.PluginLoader import PluginLoader
|
8
|
+
from .Plugin.PluginModels import SearchResult, MovieInfo, Episode, SeriesInfo
|
9
|
+
|
10
|
+
from .Extractor.ExtractorManager import ExtractorManager
|
11
|
+
from .Extractor.ExtractorBase import ExtractorBase
|
12
|
+
from .Extractor.ExtractorLoader import ExtractorLoader
|
13
|
+
from .Extractor.ExtractorModels import ExtractResult, Subtitle
|
14
|
+
|
15
|
+
from .Media.MediaManager import MediaManager
|
16
|
+
from .Media.MediaHandler import MediaHandler
|
KekikStream/Plugins/RecTV.py
CHANGED
@@ -1,10 +1,9 @@
|
|
1
1
|
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
2
2
|
|
3
|
-
from KekikStream.CLI
|
4
|
-
from KekikStream.Core
|
5
|
-
from
|
6
|
-
from
|
7
|
-
from json import dumps, loads
|
3
|
+
from KekikStream.CLI import konsol
|
4
|
+
from KekikStream.Core import PluginBase, SearchResult, MovieInfo, Episode, SeriesInfo, ExtractResult, Subtitle
|
5
|
+
from httpx import AsyncClient
|
6
|
+
from json import dumps, loads
|
8
7
|
import re
|
9
8
|
|
10
9
|
|
@@ -17,6 +16,8 @@ class RecTV(PluginBase):
|
|
17
16
|
http2.headers.update({"user-agent": "okhttp/4.12.0"})
|
18
17
|
|
19
18
|
async def search(self, query: str) -> list[SearchResult]:
|
19
|
+
self.media_handler.headers.update({"User-Agent": "googleusercontent"})
|
20
|
+
|
20
21
|
istek = await self.http2.get(f"{self.main_url}/api/search/{query}/{self.sw_key}/")
|
21
22
|
|
22
23
|
kanallar = istek.json().get("channels")
|
@@ -48,7 +49,7 @@ class RecTV(PluginBase):
|
|
48
49
|
ep_model = Episode(
|
49
50
|
season = int(re.search(r"(\d+)\.S", season.get("title")).group(1)) if re.search(r"(\d+)\.S", season.get("title")) else 1,
|
50
51
|
episode = int(re.search(r"Bölüm (\d+)", episode.get("title")).group(1)) if re.search(r"Bölüm (\d+)", episode.get("title")) else 1,
|
51
|
-
title =
|
52
|
+
title = season.get("title"),
|
52
53
|
url = self.fix_url(episode.get("sources")[0].get("url")),
|
53
54
|
)
|
54
55
|
|
@@ -105,7 +106,6 @@ class RecTV(PluginBase):
|
|
105
106
|
}
|
106
107
|
videolar.append(video_link)
|
107
108
|
|
108
|
-
self.media_handler.headers.update({"User-Agent": "googleusercontent"})
|
109
109
|
return videolar
|
110
110
|
|
111
111
|
async def play(self, name: str, url: str, referer: str, subtitles: list[Subtitle]):
|
KekikStream/Plugins/SineWix.py
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
2
2
|
|
3
|
-
from KekikStream.Core
|
4
|
-
from KekikStream.Core.ExtractorModels import ExtractResult, Subtitle
|
3
|
+
from KekikStream.Core import PluginBase, SearchResult, MovieInfo, Episode, SeriesInfo, ExtractResult, Subtitle
|
5
4
|
|
6
5
|
class SineWix(PluginBase):
|
7
6
|
name = "SineWix"
|
KekikStream/__init__.py
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
2
2
|
|
3
3
|
from .CLI import konsol, cikis_yap, hata_yakala, pypi_kontrol_guncelle
|
4
|
-
from .
|
5
|
-
from .Core import PluginBase, ExtractorBase, SeriesInfo
|
4
|
+
from .Core import PluginManager, ExtractorManager, UIManager, MediaManager, PluginBase, ExtractorBase, SeriesInfo
|
6
5
|
from asyncio import run
|
7
6
|
from contextlib import suppress
|
8
7
|
|
@@ -180,7 +179,7 @@ class KekikStream:
|
|
180
179
|
if not haritalama:
|
181
180
|
secilen_link = await self.arayuz_yonetici.select_from_list(
|
182
181
|
message = "Doğrudan oynatmak için bir bağlantı seçin:",
|
183
|
-
choices = [{"name": value["ext_name"], "value": key} for key, value in self.suanki_eklenti._data.items()]
|
182
|
+
choices = [{"name": value["ext_name"], "value": key} for key, value in self.suanki_eklenti._data.items() if key in baglantilar]
|
184
183
|
)
|
185
184
|
if secilen_link:
|
186
185
|
await self.medya_oynat(secilen_link)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: KekikStream
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.8.1
|
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,16 +1,20 @@
|
|
1
|
-
KekikStream/__init__.py,sha256=
|
1
|
+
KekikStream/__init__.py,sha256=5hWi3i_D7qy-2re_9wn4cUMRPAf-uk8MVvw-PyNb-CY,10871
|
2
2
|
KekikStream/__main__.py,sha256=B81dQoeGEb-T5Sycs3eNAmW7unvx0Mef0syCjs4nPds,137
|
3
3
|
KekikStream/requirements.txt,sha256=QWCXrrmKodIm7mGtIz9cWr9sks-lmL_TilKMrruWJn0,77
|
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/
|
7
|
-
KekikStream/Core/
|
8
|
-
KekikStream/Core/
|
9
|
-
KekikStream/Core/
|
10
|
-
KekikStream/Core/
|
11
|
-
KekikStream/Core/
|
12
|
-
KekikStream/Core/
|
13
|
-
KekikStream/Core/
|
6
|
+
KekikStream/Core/__init__.py,sha256=2N0VFP4QsyDWn4pV77JX_5_XachD5qKzhuDor3klj58,657
|
7
|
+
KekikStream/Core/Extractor/ExtractorBase.py,sha256=wmGl-Xiem4s5M7baVOxYLba7UdygCDAXggo6Up8pFJE,1409
|
8
|
+
KekikStream/Core/Extractor/ExtractorLoader.py,sha256=QZqaZs8u2YWlY_cUkJKSKt6xV8FjDuU9up_VjyTNUqE,3922
|
9
|
+
KekikStream/Core/Extractor/ExtractorManager.py,sha256=K11ESoZEc7oJyPb5uEGwfaANYJTU-e9qyzIMj4H8lT0,1014
|
10
|
+
KekikStream/Core/Extractor/ExtractorModels.py,sha256=huIcPQ5VIRfMx0LcL5SS1u4dldZbHjzHKEdSEtOPlc0,456
|
11
|
+
KekikStream/Core/Media/MediaHandler.py,sha256=JEwAvLyQKAAys6_E97bHePxf7rYqDglowGEqUPhq35s,5961
|
12
|
+
KekikStream/Core/Media/MediaManager.py,sha256=9ItiUguOkk3wg3YY5uf3mrjfwLPCvggnP8QviX0uiuE,526
|
13
|
+
KekikStream/Core/Plugin/PluginBase.py,sha256=KuR89bkrChPAct4-PMjxbK4i6busXMMFeZjv-x4F1CQ,2521
|
14
|
+
KekikStream/Core/Plugin/PluginLoader.py,sha256=o8m5U75HQvCi-lmsivqWvb6qyfifInEguqrD3R0bHQA,2576
|
15
|
+
KekikStream/Core/Plugin/PluginManager.py,sha256=nKvglAYTKfEwGnc7rf5cOMXfYoy3MGJoWBPLhRE4ll8,669
|
16
|
+
KekikStream/Core/Plugin/PluginModels.py,sha256=q8tjkt_-uiJ7uNxOThYR0FgTQLZglVAOAaM0Kske-28,2063
|
17
|
+
KekikStream/Core/UI/UIManager.py,sha256=T4V_kdTTWa-UDamgLSKa__dWJuzcvRK9NuwBlzU9Bzc,1693
|
14
18
|
KekikStream/Extractors/CloseLoad.py,sha256=YmDB3YvuDaCUbQ0T_tmhnkEsC5mSdEN6GNoAR662fl8,990
|
15
19
|
KekikStream/Extractors/ContentX.py,sha256=XPoAuA95LOTgCUGyioXxOFWR0nNKWWOHLkYMlzguIIE,2980
|
16
20
|
KekikStream/Extractors/FourCX.py,sha256=4FrMj1IZBBpN_g1P6S3A-8eUu7QFwlt4fJXzJ7vfe0Q,221
|
@@ -36,24 +40,19 @@ KekikStream/Extractors/TurboImgz.py,sha256=VXx9vZZRTdQiVNER0LcXm2nsv2OaXnxuPpslG
|
|
36
40
|
KekikStream/Extractors/VidMoly.py,sha256=BKJgk60GomFYiLFsRQSR2sOYP105Aix5y5XLazBNWmw,3368
|
37
41
|
KekikStream/Extractors/VidMoxy.py,sha256=_K6BA7Uo59DA3ty_tsayCUZjXmRoDBTghekVNXiuZ7g,1800
|
38
42
|
KekikStream/Extractors/VideoSeyred.py,sha256=otyGi1zdY_JPrXJjoZjesCQDiOkxFdaWiXQ9mOmrygA,1780
|
39
|
-
KekikStream/Managers/ExtractorManager.py,sha256=9rGlUsnedJ7fwIeObN5Vsm8H5VLal0ODO7F93dDRx8w,976
|
40
|
-
KekikStream/Managers/MediaManager.py,sha256=SPO85LchT7bJKSecmXd1FzCjg0rUT8s3B1wulPa4SMw,519
|
41
|
-
KekikStream/Managers/PluginManager.py,sha256=YDBLHB_Fh79A3Pei0ny2KLVY4VSihdNiKBh_w5tBl-0,637
|
42
|
-
KekikStream/Managers/UIManager.py,sha256=e89u_QgmxL85zGAYyYsQp6b3E5y7fHGteLt2OYHHbD8,1693
|
43
|
-
KekikStream/Managers/__init__.py,sha256=3085I_9Sa2L_Vq6Z-QvYUYn1BapkN4sQqBo8ITZoD_4,251
|
44
43
|
KekikStream/Plugins/DiziBox.py,sha256=i_73VNXk2eM7xTg-6a0Xk2Yts2c9grWbRVVHhxFgoic,5935
|
45
44
|
KekikStream/Plugins/DiziYou.py,sha256=kpRY3U6lqaZKgn9ED2TprwU7qfLxuC2ZZmrRemegryo,5382
|
46
45
|
KekikStream/Plugins/Dizilla.py,sha256=evWYvETw1c4RY0GB5P20cB_I_U7ZxzzvnG7RLNGJRPs,4258
|
47
46
|
KekikStream/Plugins/FilmMakinesi.py,sha256=rz8TQeL41PJbeEmksgPHIhp6J-4vbSCBTeEH0ukExz4,2822
|
48
47
|
KekikStream/Plugins/FullHDFilmizlesene.py,sha256=Fa0gRP_NoMfPC8HIKRxERjQVOv8Fyb-ayMJ2EooZ7BE,3080
|
49
48
|
KekikStream/Plugins/JetFilmizle.py,sha256=FXkMSQtjYoxwIonjRENFa91rC42L_8SYRhjhuSgsu60,3919
|
50
|
-
KekikStream/Plugins/RecTV.py,sha256=
|
49
|
+
KekikStream/Plugins/RecTV.py,sha256=Pt2IQ2jLsQp7Mo85uM_ml3nxOR0uirX7vXOnE10CPm0,4886
|
51
50
|
KekikStream/Plugins/SezonlukDizi.py,sha256=5BZVzQ2eQtymHxO0bzjA2ho4FFNahPFQly4hoHuH8lo,4441
|
52
|
-
KekikStream/Plugins/SineWix.py,sha256=
|
51
|
+
KekikStream/Plugins/SineWix.py,sha256=VvFeAS2-Y-KJ1Od16yZjUJLiESwsBBGb2GNG3BLLupU,4806
|
53
52
|
KekikStream/Plugins/UgurFilm.py,sha256=yYXee5uxwNnPqFJZ6s6cRkmUyqS3Vv8x-iesPalc4j4,2930
|
54
|
-
KekikStream-0.
|
55
|
-
KekikStream-0.
|
56
|
-
KekikStream-0.
|
57
|
-
KekikStream-0.
|
58
|
-
KekikStream-0.
|
59
|
-
KekikStream-0.
|
53
|
+
KekikStream-0.8.1.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
54
|
+
KekikStream-0.8.1.dist-info/METADATA,sha256=tlrqj-FYr_tnPCeorPhZz8WleOkVjgQ_A14oo_5jRqc,4226
|
55
|
+
KekikStream-0.8.1.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
56
|
+
KekikStream-0.8.1.dist-info/entry_points.txt,sha256=dFwdiTx8djyehI0Gsz-rZwjAfZzUzoBSrmzRu9ubjJc,50
|
57
|
+
KekikStream-0.8.1.dist-info/top_level.txt,sha256=DNmGJDXl27Drdfobrak8KYLmocW_uznVYFJOzcjUgmY,12
|
58
|
+
KekikStream-0.8.1.dist-info/RECORD,,
|
KekikStream/Managers/__init__.py
DELETED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|