KekikStream 2.0.1__tar.gz → 2.0.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-2.0.2/KekikStream/Core/Extractor/YTDLPCache.py +35 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Core/__init__.py +1 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/YTDLP.py +14 -9
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream.egg-info/PKG-INFO +1 -1
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream.egg-info/SOURCES.txt +1 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/PKG-INFO +1 -1
- {kekikstream-2.0.1 → kekikstream-2.0.2}/setup.py +1 -1
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/CLI/__init__.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/CLI/pypi_kontrol.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Core/Extractor/ExtractorBase.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Core/Extractor/ExtractorLoader.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Core/Extractor/ExtractorManager.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Core/Extractor/ExtractorModels.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Core/Media/MediaHandler.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Core/Media/MediaManager.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Core/Plugin/PluginBase.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Core/Plugin/PluginLoader.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Core/Plugin/PluginManager.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Core/Plugin/PluginModels.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Core/UI/UIManager.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/CloseLoad.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/ContentX.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/ContentX_.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/DzenRu.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/ExPlay.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/FirePlayer.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/HDPlayerSystem.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/JetTv.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/MailRu.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/MixPlayHD.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/MixTiger.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/MolyStream.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/Odnoklassniki.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/Odnoklassniki_.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/PeaceMakerst.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/PeaceMakerst_.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/PixelDrain.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/PlayerFilmIzle.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/RapidVid.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/RapidVid_.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/SetPlay.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/SetPrime.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/SibNet.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/Sobreatsesuyp.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/TRsTX.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/TauVideo.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/TurboImgz.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/TurkeyPlayer.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/VidHide.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/VidMoly.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/VidMoly_.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/VidMoxy.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/VidPapi.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/VideoSeyred.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Extractors/YildizKisaFilm.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Plugins/DiziBox.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Plugins/DiziPal.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Plugins/DiziYou.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Plugins/Dizilla.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Plugins/FilmBip.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Plugins/FilmMakinesi.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Plugins/FilmModu.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Plugins/FullHDFilm.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Plugins/FullHDFilmizlesene.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Plugins/HDFilmCehennemi.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Plugins/JetFilmizle.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Plugins/KultFilmler.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Plugins/RecTV.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Plugins/RoketDizi.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Plugins/SelcukFlix.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Plugins/SezonlukDizi.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Plugins/SineWix.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Plugins/Sinefy.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Plugins/SinemaCX.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Plugins/Sinezy.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Plugins/SuperFilmGeldi.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/Plugins/UgurFilm.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/__init__.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/__main__.py +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream/requirements.txt +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream.egg-info/dependency_links.txt +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream.egg-info/entry_points.txt +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream.egg-info/requires.txt +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/KekikStream.egg-info/top_level.txt +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/LICENSE +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/MANIFEST.in +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/README.md +0 -0
- {kekikstream-2.0.1 → kekikstream-2.0.2}/setup.cfg +0 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
|
2
|
+
|
|
3
|
+
from Kekik.cli import konsol
|
|
4
|
+
from yt_dlp.extractor import gen_extractors
|
|
5
|
+
|
|
6
|
+
# Global cache (module-level singleton)
|
|
7
|
+
_YTDLP_EXTRACTORS_CACHE = None
|
|
8
|
+
_CACHE_INITIALIZED = False
|
|
9
|
+
|
|
10
|
+
def get_ytdlp_extractors() -> list:
|
|
11
|
+
"""
|
|
12
|
+
yt-dlp extractorlarını cache'le ve döndür
|
|
13
|
+
|
|
14
|
+
Returns:
|
|
15
|
+
list: yt-dlp extractor sınıfları
|
|
16
|
+
"""
|
|
17
|
+
global _YTDLP_EXTRACTORS_CACHE, _CACHE_INITIALIZED
|
|
18
|
+
|
|
19
|
+
if _CACHE_INITIALIZED:
|
|
20
|
+
return _YTDLP_EXTRACTORS_CACHE
|
|
21
|
+
|
|
22
|
+
try:
|
|
23
|
+
extractors = list(gen_extractors())
|
|
24
|
+
extractors = [ie for ie in extractors if ie.ie_key() != 'Generic']
|
|
25
|
+
|
|
26
|
+
_YTDLP_EXTRACTORS_CACHE = extractors
|
|
27
|
+
_CACHE_INITIALIZED = True
|
|
28
|
+
|
|
29
|
+
return extractors
|
|
30
|
+
|
|
31
|
+
except Exception as e:
|
|
32
|
+
konsol.log(f"[red][⚠] yt-dlp extractor cache hatası: {e}[/red]")
|
|
33
|
+
_YTDLP_EXTRACTORS_CACHE = []
|
|
34
|
+
_CACHE_INITIALIZED = True
|
|
35
|
+
return []
|
|
@@ -13,6 +13,7 @@ from .Extractor.ExtractorManager import ExtractorManager
|
|
|
13
13
|
from .Extractor.ExtractorBase import ExtractorBase
|
|
14
14
|
from .Extractor.ExtractorLoader import ExtractorLoader
|
|
15
15
|
from .Extractor.ExtractorModels import ExtractResult, Subtitle
|
|
16
|
+
from .Extractor.YTDLPCache import get_ytdlp_extractors
|
|
16
17
|
|
|
17
18
|
from .Media.MediaManager import MediaManager
|
|
18
19
|
from .Media.MediaHandler import MediaHandler
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
|
2
2
|
|
|
3
|
-
from KekikStream.Core import ExtractorBase, ExtractResult, Subtitle
|
|
3
|
+
from KekikStream.Core import ExtractorBase, ExtractResult, Subtitle, get_ytdlp_extractors
|
|
4
4
|
from urllib.parse import urlparse
|
|
5
|
-
from yt_dlp.extractor import gen_extractors
|
|
6
5
|
import yt_dlp, re, sys, os
|
|
7
6
|
|
|
8
7
|
class YTDLP(ExtractorBase):
|
|
@@ -13,20 +12,22 @@ class YTDLP(ExtractorBase):
|
|
|
13
12
|
|
|
14
13
|
@classmethod
|
|
15
14
|
def _init_fast_domain_regex(cls):
|
|
15
|
+
"""
|
|
16
|
+
Fast domain regex'i initialize et
|
|
17
|
+
"""
|
|
16
18
|
if cls._FAST_DOMAIN_RE is not None:
|
|
17
19
|
return
|
|
18
20
|
|
|
19
21
|
domains = set()
|
|
20
22
|
|
|
23
|
+
# Merkezi cache'den extractorları al
|
|
24
|
+
extractors = get_ytdlp_extractors()
|
|
25
|
+
|
|
21
26
|
# yt-dlp extractor'larının _VALID_URL regex'lerinden domain yakala
|
|
22
27
|
# Regex metinlerinde domainler genelde "\." şeklinde geçer.
|
|
23
28
|
domain_pat = re.compile(r"(?:[a-z0-9-]+\\\.)+[a-z]{2,}", re.IGNORECASE)
|
|
24
29
|
|
|
25
|
-
for ie in
|
|
26
|
-
# Generic'i fast-path'e dahil etmiyoruz
|
|
27
|
-
if getattr(ie, "IE_NAME", "").lower() == "generic":
|
|
28
|
-
continue
|
|
29
|
-
|
|
30
|
+
for ie in extractors:
|
|
30
31
|
valid = getattr(ie, "_VALID_URL", None)
|
|
31
32
|
if not valid or not isinstance(valid, str):
|
|
32
33
|
continue
|
|
@@ -89,7 +90,9 @@ class YTDLP(ExtractorBase):
|
|
|
89
90
|
"no_warnings" : True, # Uyarı mesajları yok
|
|
90
91
|
"extract_flat" : True, # Minimal işlem
|
|
91
92
|
"no_check_certificates" : True,
|
|
92
|
-
"ignoreerrors" : True
|
|
93
|
+
"ignoreerrors" : True, # Hataları yoksay
|
|
94
|
+
"socket_timeout" : 3,
|
|
95
|
+
"retries" : 1
|
|
93
96
|
}
|
|
94
97
|
|
|
95
98
|
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
|
|
@@ -116,7 +119,9 @@ class YTDLP(ExtractorBase):
|
|
|
116
119
|
"no_warnings" : True,
|
|
117
120
|
"extract_flat" : False, # Tam bilgi al
|
|
118
121
|
"format" : "best", # En iyi kalite
|
|
119
|
-
"no_check_certificates" : True
|
|
122
|
+
"no_check_certificates" : True,
|
|
123
|
+
"socket_timeout" : 3,
|
|
124
|
+
"retries" : 1
|
|
120
125
|
}
|
|
121
126
|
|
|
122
127
|
# Referer varsa header olarak ekle
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: KekikStream
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.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
|
|
@@ -18,6 +18,7 @@ KekikStream/Core/Extractor/ExtractorBase.py
|
|
|
18
18
|
KekikStream/Core/Extractor/ExtractorLoader.py
|
|
19
19
|
KekikStream/Core/Extractor/ExtractorManager.py
|
|
20
20
|
KekikStream/Core/Extractor/ExtractorModels.py
|
|
21
|
+
KekikStream/Core/Extractor/YTDLPCache.py
|
|
21
22
|
KekikStream/Core/Media/MediaHandler.py
|
|
22
23
|
KekikStream/Core/Media/MediaManager.py
|
|
23
24
|
KekikStream/Core/Plugin/PluginBase.py
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: KekikStream
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.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 = "2.0.
|
|
9
|
+
version = "2.0.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
|
|
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
|