KekikStream 2.3.0__tar.gz → 2.3.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.3.0 → kekikstream-2.3.2}/KekikStream/Plugins/DiziPal.py +1 -1
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Plugins/DiziYou.py +13 -3
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Plugins/Dizilla.py +19 -4
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Plugins/HDFilmCehennemi.py +3 -3
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream.egg-info/PKG-INFO +1 -1
- {kekikstream-2.3.0 → kekikstream-2.3.2}/PKG-INFO +1 -1
- {kekikstream-2.3.0 → kekikstream-2.3.2}/setup.py +1 -1
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/CLI/__init__.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/CLI/pypi_kontrol.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Core/Extractor/ExtractorBase.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Core/Extractor/ExtractorLoader.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Core/Extractor/ExtractorManager.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Core/Extractor/ExtractorModels.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Core/Extractor/YTDLPCache.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Core/Media/MediaHandler.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Core/Media/MediaManager.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Core/Plugin/PluginBase.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Core/Plugin/PluginLoader.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Core/Plugin/PluginManager.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Core/Plugin/PluginModels.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Core/UI/UIManager.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Core/__init__.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Extractors/CloseLoad.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Extractors/ContentX.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Extractors/DonilasPlay.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Extractors/DzenRu.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Extractors/ExPlay.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Extractors/Filemoon.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Extractors/HDPlayerSystem.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Extractors/JFVid.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Extractors/JetTv.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Extractors/MailRu.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Extractors/MixPlayHD.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Extractors/MixTiger.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Extractors/MolyStream.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Extractors/Odnoklassniki.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Extractors/PeaceMakerst.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Extractors/PixelDrain.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Extractors/PlayerFilmIzle.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Extractors/RapidVid.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Extractors/SetPlay.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Extractors/SetPrime.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Extractors/SibNet.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Extractors/Sobreatsesuyp.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Extractors/TRsTX.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Extractors/TauVideo.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Extractors/TurboImgz.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Extractors/TurkeyPlayer.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Extractors/VCTPlay.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Extractors/VidHide.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Extractors/VidMoly.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Extractors/VidMoxy.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Extractors/VidPapi.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Extractors/VideoSeyred.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Extractors/YTDLP.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Extractors/YildizKisaFilm.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Plugins/BelgeselX.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Plugins/DiziBox.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Plugins/FilmBip.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Plugins/FilmMakinesi.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Plugins/FilmModu.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Plugins/FullHDFilm.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Plugins/FullHDFilmizlesene.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Plugins/JetFilmizle.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Plugins/KultFilmler.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Plugins/RecTV.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Plugins/RoketDizi.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Plugins/SelcukFlix.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Plugins/SetFilmIzle.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Plugins/SezonlukDizi.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Plugins/SineWix.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Plugins/Sinefy.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Plugins/SinemaCX.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Plugins/Sinezy.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Plugins/SuperFilmGeldi.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/Plugins/UgurFilm.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/__init__.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/__main__.py +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream/requirements.txt +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream.egg-info/SOURCES.txt +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream.egg-info/dependency_links.txt +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream.egg-info/entry_points.txt +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream.egg-info/requires.txt +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/KekikStream.egg-info/top_level.txt +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/LICENSE +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/MANIFEST.in +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/README.md +0 -0
- {kekikstream-2.3.0 → kekikstream-2.3.2}/setup.cfg +0 -0
|
@@ -7,7 +7,7 @@ import re
|
|
|
7
7
|
class DiziPal(PluginBase):
|
|
8
8
|
name = "DiziPal"
|
|
9
9
|
language = "tr"
|
|
10
|
-
main_url = "https://
|
|
10
|
+
main_url = "https://dizipal1225.com"
|
|
11
11
|
favicon = f"https://www.google.com/s2/favicons?domain={main_url}&sz=64"
|
|
12
12
|
description = "dizipal güncel, dizipal yeni ve gerçek adresi. dizipal en yeni dizi ve filmleri güvenli ve hızlı şekilde sunar."
|
|
13
13
|
|
|
@@ -100,13 +100,23 @@ class DiziYou(PluginBase):
|
|
|
100
100
|
year = year_match.group(1)
|
|
101
101
|
|
|
102
102
|
desc_el = secici.css_first("div.diziyou_desc")
|
|
103
|
-
description =
|
|
103
|
+
description = None
|
|
104
|
+
if desc_el:
|
|
105
|
+
# HTML'i al ve script + meta div'lerini temizle
|
|
106
|
+
desc_html = desc_el.html
|
|
107
|
+
# Script taglarını kaldır
|
|
108
|
+
desc_html = re.sub(r"<script.*?</script>", "", desc_html, flags=re.DOTALL)
|
|
109
|
+
# div#icerikcat2 ve sonrasını kaldır (meta bilgileri içeriyor)
|
|
110
|
+
desc_html = re.sub(r"<div id=\"icerikcat2\".*", "", desc_html, flags=re.DOTALL)
|
|
111
|
+
# Kalan HTML'den text çıkar
|
|
112
|
+
clean_sel = HTMLParser(desc_html)
|
|
113
|
+
description = clean_sel.text(strip=True)
|
|
104
114
|
|
|
105
115
|
tags = [a.text(strip=True) for a in secici.css("div.genres a") if a.text(strip=True)]
|
|
106
116
|
|
|
107
|
-
# Rating - regex ile
|
|
117
|
+
# Rating - daha spesifik regex ile
|
|
108
118
|
rating = None
|
|
109
|
-
rating_match = re.search(r"IMDB
|
|
119
|
+
rating_match = re.search(r"IMDB\s*:\s*</span>([0-9.]+)", html_text, re.DOTALL | re.IGNORECASE)
|
|
110
120
|
if rating_match:
|
|
111
121
|
rating = rating_match.group(1)
|
|
112
122
|
|
|
@@ -6,6 +6,7 @@ from json import loads
|
|
|
6
6
|
from urllib.parse import urlparse, urlunparse
|
|
7
7
|
from Crypto.Cipher import AES
|
|
8
8
|
from base64 import b64decode
|
|
9
|
+
import re
|
|
9
10
|
|
|
10
11
|
class Dizilla(PluginBase):
|
|
11
12
|
name = "Dizilla"
|
|
@@ -45,7 +46,7 @@ class Dizilla(PluginBase):
|
|
|
45
46
|
category = category,
|
|
46
47
|
title = veri.get("original_title"),
|
|
47
48
|
url = self.fix_url(f"{self.main_url}/{veri.get('used_slug')}"),
|
|
48
|
-
poster = self.fix_url(veri.get("object_poster_url")),
|
|
49
|
+
poster = self.fix_poster_url(self.fix_url(veri.get("object_poster_url"))),
|
|
49
50
|
)
|
|
50
51
|
for veri in veriler
|
|
51
52
|
])
|
|
@@ -114,6 +115,20 @@ class Dizilla(PluginBase):
|
|
|
114
115
|
# JSON decode
|
|
115
116
|
return loads(decrypted.decode("utf-8"))
|
|
116
117
|
|
|
118
|
+
def fix_poster_url(self, url: str) -> str:
|
|
119
|
+
"""AMP CDN URL'lerini düzelt."""
|
|
120
|
+
if not url:
|
|
121
|
+
return url
|
|
122
|
+
# AMP CDN URL'lerini orijinal URL'ye çevir
|
|
123
|
+
# https://images-macellan-online.cdn.ampproject.org/i/s/images.macellan.online/...
|
|
124
|
+
# -> https://images.macellan.online/...
|
|
125
|
+
if "cdn.ampproject.org" in url:
|
|
126
|
+
# /i/s/ veya /ii/s/ gibi AMP prefix'lerinden sonraki kısmı al
|
|
127
|
+
match = re.search(r"cdn\.ampproject\.org/[^/]+/s/(.+)$", url)
|
|
128
|
+
if match:
|
|
129
|
+
return f"https://{match.group(1)}"
|
|
130
|
+
return url
|
|
131
|
+
|
|
117
132
|
async def search(self, query: str) -> list[SearchResult]:
|
|
118
133
|
arama_istek = await self.httpx.post(f"{self.main_url}/api/bg/searchcontent?searchterm={query}")
|
|
119
134
|
decrypted = await self.decrypt_response(arama_istek.json().get("response"))
|
|
@@ -123,7 +138,7 @@ class Dizilla(PluginBase):
|
|
|
123
138
|
SearchResult(
|
|
124
139
|
title = veri.get("object_name"),
|
|
125
140
|
url = self.fix_url(f"{self.main_url}/{veri.get('used_slug')}"),
|
|
126
|
-
poster = self.fix_url(veri.get("object_poster_url")),
|
|
141
|
+
poster = self.fix_poster_url(self.fix_url(veri.get("object_poster_url"))),
|
|
127
142
|
)
|
|
128
143
|
for veri in arama_veri
|
|
129
144
|
]
|
|
@@ -176,8 +191,8 @@ class Dizilla(PluginBase):
|
|
|
176
191
|
|
|
177
192
|
season_num = None
|
|
178
193
|
try:
|
|
179
|
-
# URL'den sezon numarasını çek: ...-sezon
|
|
180
|
-
season_match = re.search(r"
|
|
194
|
+
# URL'den sezon numarasını çek: ...-N-sezon formatı
|
|
195
|
+
season_match = re.search(r"-(\d+)-sezon", sezon_href)
|
|
181
196
|
if season_match:
|
|
182
197
|
season_num = int(season_match.group(1))
|
|
183
198
|
except:
|
|
@@ -72,14 +72,14 @@ class HDFilmCehennemi(PluginBase):
|
|
|
72
72
|
title = title_el.text(strip=True) if title_el else None
|
|
73
73
|
href = link_el.attrs.get("href") if link_el else None
|
|
74
74
|
poster = (img_el.attrs.get("data-src") or img_el.attrs.get("src")) if img_el else None
|
|
75
|
-
|
|
75
|
+
|
|
76
76
|
if title and href:
|
|
77
77
|
results.append(SearchResult(
|
|
78
78
|
title = title,
|
|
79
79
|
url = self.fix_url(href),
|
|
80
|
-
poster = self.fix_url(poster) if poster else None,
|
|
80
|
+
poster = self.fix_url(poster).replace("/thumb/", "/list/") if poster else None,
|
|
81
81
|
))
|
|
82
|
-
|
|
82
|
+
|
|
83
83
|
return results
|
|
84
84
|
|
|
85
85
|
async def load_item(self, url: str) -> MovieInfo | SeriesInfo:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: KekikStream
|
|
3
|
-
Version: 2.3.
|
|
3
|
+
Version: 2.3.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: 2.3.
|
|
3
|
+
Version: 2.3.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.3.
|
|
9
|
+
version = "2.3.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
|