KekikStream 2.4.3__py3-none-any.whl → 2.4.4__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/Plugins/DiziPal.py +61 -105
- {kekikstream-2.4.3.dist-info → kekikstream-2.4.4.dist-info}/METADATA +1 -1
- {kekikstream-2.4.3.dist-info → kekikstream-2.4.4.dist-info}/RECORD +7 -7
- {kekikstream-2.4.3.dist-info → kekikstream-2.4.4.dist-info}/WHEEL +0 -0
- {kekikstream-2.4.3.dist-info → kekikstream-2.4.4.dist-info}/entry_points.txt +0 -0
- {kekikstream-2.4.3.dist-info → kekikstream-2.4.4.dist-info}/licenses/LICENSE +0 -0
- {kekikstream-2.4.3.dist-info → kekikstream-2.4.4.dist-info}/top_level.txt +0 -0
KekikStream/Plugins/DiziPal.py
CHANGED
|
@@ -10,136 +10,98 @@ class DiziPal(PluginBase):
|
|
|
10
10
|
description = "dizipal güncel, dizipal yeni ve gerçek adresi. dizipal en yeni dizi ve filmleri güvenli ve hızlı şekilde sunar."
|
|
11
11
|
|
|
12
12
|
main_page = {
|
|
13
|
-
f"{main_url}/
|
|
14
|
-
f"{main_url}/
|
|
15
|
-
f"{main_url}/
|
|
16
|
-
f"{main_url}/
|
|
17
|
-
f"{main_url}/
|
|
18
|
-
f"{main_url}/
|
|
19
|
-
f"{main_url}/
|
|
20
|
-
f"{main_url}/
|
|
21
|
-
f"{main_url}/
|
|
22
|
-
f"{main_url}/
|
|
23
|
-
f"{main_url}/
|
|
13
|
+
f"{main_url}/kategori/aile/page/" : "Aile",
|
|
14
|
+
f"{main_url}/kategori/aksiyon/page/" : "Aksiyon",
|
|
15
|
+
f"{main_url}/kategori/animasyon/page/" : "Animasyon",
|
|
16
|
+
f"{main_url}/kategori/belgesel/page/" : "Belgesel",
|
|
17
|
+
f"{main_url}/kategori/bilim-kurgu/page/" : "Bilim Kurgu",
|
|
18
|
+
f"{main_url}/kategori/dram/page/" : "Dram",
|
|
19
|
+
f"{main_url}/kategori/fantastik/page/" : "Fantastik",
|
|
20
|
+
f"{main_url}/kategori/gerilim/page/" : "Gerilim",
|
|
21
|
+
f"{main_url}/kategori/gizem/page/" : "Gizem",
|
|
22
|
+
f"{main_url}/kategori/komedi/page/" : "Komedi",
|
|
23
|
+
f"{main_url}/kategori/korku/page/" : "Korku",
|
|
24
|
+
f"{main_url}/kategori/macera/page/" : "Macera",
|
|
25
|
+
f"{main_url}/kategori/muzik/page/" : "Müzik",
|
|
26
|
+
f"{main_url}/kategori/romantik/page/" : "Romantik",
|
|
27
|
+
f"{main_url}/kategori/savas/page/" : "Savaş",
|
|
28
|
+
f"{main_url}/kategori/suc/page/" : "Suç",
|
|
29
|
+
f"{main_url}/kategori/tarih/page/" : "Tarih",
|
|
30
|
+
f"{main_url}/kategori/vahsi-bati/page/" : "Vahşi Batı",
|
|
31
|
+
f"{main_url}/kategori/yerli/page/" : "Yerli",
|
|
24
32
|
}
|
|
25
33
|
|
|
26
34
|
async def get_main_page(self, page: int, url: str, category: str) -> list[MainPageResult]:
|
|
27
|
-
istek = await self.httpx.get(url)
|
|
35
|
+
istek = await self.httpx.get(f"{url}{page}/")
|
|
28
36
|
secici = HTMLHelper(istek.text)
|
|
29
37
|
|
|
30
38
|
results = []
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
dizi_url = href.split("/sezon")[0] if "/sezon" in href else href
|
|
44
|
-
|
|
45
|
-
results.append(MainPageResult(
|
|
46
|
-
category = category,
|
|
47
|
-
title = title,
|
|
48
|
-
url = self.fix_url(dizi_url),
|
|
49
|
-
poster = self.fix_url(poster) if poster else None,
|
|
50
|
-
))
|
|
51
|
-
else:
|
|
52
|
-
for veri in secici.select("article.type2 ul li"):
|
|
53
|
-
title = secici.select_text("span.title", veri)
|
|
54
|
-
href = secici.select_attr("a", "href", veri)
|
|
55
|
-
poster = secici.select_attr("img", "src", veri)
|
|
56
|
-
|
|
57
|
-
if title and href:
|
|
58
|
-
results.append(MainPageResult(
|
|
59
|
-
category = category,
|
|
60
|
-
title = title,
|
|
61
|
-
url = self.fix_url(href),
|
|
62
|
-
poster = self.fix_url(poster) if poster else None,
|
|
63
|
-
))
|
|
39
|
+
for veri in secici.select("div.grid div.post-item"):
|
|
40
|
+
title = secici.select_attr("a", "title", veri)
|
|
41
|
+
href = secici.select_attr("a", "href", veri)
|
|
42
|
+
poster = secici.select_poster("div.poster img", veri)
|
|
43
|
+
|
|
44
|
+
if title and href:
|
|
45
|
+
results.append(MainPageResult(
|
|
46
|
+
category = category,
|
|
47
|
+
title = title,
|
|
48
|
+
url = self.fix_url(href),
|
|
49
|
+
poster = self.fix_url(poster) if poster else None,
|
|
50
|
+
))
|
|
64
51
|
|
|
65
52
|
return results
|
|
66
53
|
|
|
67
54
|
async def search(self, query: str) -> list[SearchResult]:
|
|
68
|
-
self.httpx.
|
|
69
|
-
|
|
70
|
-
"X-Requested-With" : "XMLHttpRequest"
|
|
71
|
-
})
|
|
72
|
-
|
|
73
|
-
istek = await self.httpx.post(
|
|
74
|
-
url = f"{self.main_url}/api/search-autocomplete",
|
|
75
|
-
data = {"query": query}
|
|
76
|
-
)
|
|
77
|
-
|
|
78
|
-
try:
|
|
79
|
-
data = istek.json()
|
|
80
|
-
except Exception:
|
|
81
|
-
return []
|
|
55
|
+
istek = await self.httpx.get(f"{self.main_url}/?s={query}")
|
|
56
|
+
secici = HTMLHelper(istek.text)
|
|
82
57
|
|
|
83
58
|
results = []
|
|
59
|
+
for veri in secici.select("div.grid div.post-item"):
|
|
60
|
+
title = secici.select_attr("a", "title", veri)
|
|
61
|
+
href = secici.select_attr("a", "href", veri)
|
|
62
|
+
poster = secici.select_poster("div.poster img", veri)
|
|
84
63
|
|
|
85
|
-
|
|
86
|
-
items = data.values() if isinstance(data, dict) else data
|
|
87
|
-
|
|
88
|
-
for item in items:
|
|
89
|
-
if not isinstance(item, dict):
|
|
90
|
-
continue
|
|
91
|
-
|
|
92
|
-
title = item.get("title")
|
|
93
|
-
url = item.get("url")
|
|
94
|
-
poster = item.get("poster")
|
|
95
|
-
|
|
96
|
-
if title and url:
|
|
64
|
+
if title and href:
|
|
97
65
|
results.append(SearchResult(
|
|
98
66
|
title = title,
|
|
99
|
-
url =
|
|
67
|
+
url = self.fix_url(href),
|
|
100
68
|
poster = self.fix_url(poster) if poster else None,
|
|
101
69
|
))
|
|
102
70
|
|
|
103
71
|
return results
|
|
104
72
|
|
|
105
|
-
def _find_sibling_text(self, secici: HTMLHelper, label_text: str) -> str | None:
|
|
106
|
-
"""Bir label'ın kardeş div'inden text çıkarır (xpath yerine)"""
|
|
107
|
-
for div in secici.select("div"):
|
|
108
|
-
if secici.select_text(element=div) == label_text:
|
|
109
|
-
# Sonraki kardeş elementi bul
|
|
110
|
-
next_sibling = div.next
|
|
111
|
-
while next_sibling:
|
|
112
|
-
if hasattr(next_sibling, 'text') and next_sibling.text(strip=True):
|
|
113
|
-
return next_sibling.text(strip=True)
|
|
114
|
-
next_sibling = next_sibling.next if hasattr(next_sibling, 'next') else None
|
|
115
|
-
return None
|
|
116
|
-
|
|
117
73
|
async def load_item(self, url: str) -> MovieInfo | SeriesInfo:
|
|
118
|
-
# Reset headers to get HTML response
|
|
119
|
-
self.httpx.headers.update({"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"})
|
|
120
|
-
self.httpx.headers.pop("X-Requested-With", None)
|
|
121
|
-
|
|
122
74
|
istek = await self.httpx.get(url)
|
|
123
75
|
secici = HTMLHelper(istek.text)
|
|
124
76
|
|
|
125
77
|
poster = self.fix_url(secici.select_attr("meta[property='og:image']", "content"))
|
|
126
|
-
description = secici.
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
78
|
+
description = secici.select_attr("meta[property='og:description']", "content")
|
|
79
|
+
title = secici.select_text("h1")
|
|
80
|
+
|
|
81
|
+
year = secici.meta_value("Yapım Yılı")
|
|
82
|
+
rating = secici.meta_value("IMDB Puanı")
|
|
83
|
+
duration = secici.meta_value("Süre")
|
|
130
84
|
duration = int(secici.regex_first(r"(\d+)", duration)) if duration else None
|
|
131
|
-
tags = secici.meta_list("
|
|
132
|
-
|
|
85
|
+
tags = secici.meta_list("Tür")
|
|
86
|
+
|
|
87
|
+
actors = secici.meta_list("Oyuncular")
|
|
88
|
+
if not actors:
|
|
89
|
+
actors = secici.select_attrs("div.swiper-slide a", "title")
|
|
133
90
|
|
|
134
91
|
if "/dizi/" in url:
|
|
135
|
-
title = secici.select_text("div.cover h5")
|
|
136
92
|
episodes = []
|
|
137
93
|
for ep in secici.select("div.episode-item"):
|
|
138
|
-
name = secici.select_text("
|
|
94
|
+
name = secici.select_text("h4 a", ep)
|
|
139
95
|
href = secici.select_attr("a", "href", ep)
|
|
140
|
-
|
|
96
|
+
link_title = secici.select_attr("a", "title", ep)
|
|
97
|
+
|
|
98
|
+
h4_texts = secici.select_texts("h4", ep)
|
|
99
|
+
text = h4_texts[1] if len(h4_texts) > 1 else (h4_texts[0] if h4_texts else "")
|
|
100
|
+
|
|
101
|
+
full_text = f"{text} {link_title}" if link_title else text
|
|
102
|
+
|
|
141
103
|
if name and href:
|
|
142
|
-
s, e = secici.extract_season_episode(
|
|
104
|
+
s, e = secici.extract_season_episode(full_text or "")
|
|
143
105
|
episodes.append(Episode(season=s, episode=e, title=name, url=self.fix_url(href)))
|
|
144
106
|
|
|
145
107
|
return SeriesInfo(
|
|
@@ -147,10 +109,6 @@ class DiziPal(PluginBase):
|
|
|
147
109
|
rating=rating, year=year, duration=duration, episodes=episodes or None, actors=actors
|
|
148
110
|
)
|
|
149
111
|
|
|
150
|
-
# Film için title - g-title div'lerinin 2. olanı
|
|
151
|
-
g_titles = secici.select("div.g-title div")
|
|
152
|
-
title = secici.select_text(element=g_titles[1]) if len(g_titles) >= 2 else None
|
|
153
|
-
|
|
154
112
|
return MovieInfo(
|
|
155
113
|
url=url, poster=poster, title=title, description=description, tags=tags,
|
|
156
114
|
rating=rating, year=year, duration=duration, actors=actors
|
|
@@ -166,9 +124,7 @@ class DiziPal(PluginBase):
|
|
|
166
124
|
istek = await self.httpx.get(url)
|
|
167
125
|
secici = HTMLHelper(istek.text)
|
|
168
126
|
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
iframe = secici.select_attr(".series-player-container iframe", "src") or secici.select_attr("div#vast_new iframe", "src")
|
|
127
|
+
iframe = secici.select_attr("div.video-player-area iframe", "src") or secici.select_attr("div.responsive-player iframe", "src")
|
|
172
128
|
if not iframe:
|
|
173
129
|
return []
|
|
174
130
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: KekikStream
|
|
3
|
-
Version: 2.4.
|
|
3
|
+
Version: 2.4.4
|
|
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
|
|
@@ -58,7 +58,7 @@ KekikStream/Extractors/YildizKisaFilm.py,sha256=jeCCSIwZvQUr-CSylleUIP--JtN18_wU
|
|
|
58
58
|
KekikStream/Plugins/BelgeselX.py,sha256=0LZYeV8ve2HGsNvuqACltP7eI_nZyjoCBjeYWMokUXY,9175
|
|
59
59
|
KekikStream/Plugins/DiziBox.py,sha256=F0X_vUVFbzFIgo504dyXjJkJIB6OxoHRxD3CCBUNsxg,10087
|
|
60
60
|
KekikStream/Plugins/DiziMom.py,sha256=0kOXekDk9-I-rRgQZmKH0pZmYDgfdkS2PXOBbTlhI0g,6776
|
|
61
|
-
KekikStream/Plugins/DiziPal.py,sha256=
|
|
61
|
+
KekikStream/Plugins/DiziPal.py,sha256=gDj_7iJaP5WIoRWKZmvF6Q6nbPm8TBw9jAjbk_E75NA,7352
|
|
62
62
|
KekikStream/Plugins/DiziYou.py,sha256=ZgHVTEeXhLC5aNP7MeeIcmLxqAPPzj0WWOiZHHpkAho,6550
|
|
63
63
|
KekikStream/Plugins/Dizilla.py,sha256=GmA__LCUAMTQ0tbbeWiH8h_aA6Rw7k2chAJZRsDifjg,12908
|
|
64
64
|
KekikStream/Plugins/FilmBip.py,sha256=gHdYHEZjDBPkajQjqBZGVhbs97zDr5mF_cVSUKn8ljE,6018
|
|
@@ -85,9 +85,9 @@ KekikStream/Plugins/SuperFilmGeldi.py,sha256=wfhbZLNAuiz57KOarSrsoMLLpr9-zd6zjp7
|
|
|
85
85
|
KekikStream/Plugins/UgurFilm.py,sha256=WIdyu8X1ZdixigumEwEpZjtbM-melHfvT_u5N349oN4,5116
|
|
86
86
|
KekikStream/Plugins/Watch32.py,sha256=NeESk1unb5SYs6kwkb3dDymv2yYOkRU2QJCPI9izXKk,7915
|
|
87
87
|
KekikStream/Plugins/YabanciDizi.py,sha256=cTAREfia6df-rLeXDhxLCrKRHeZI_l_-nhjgIAD1jNA,9975
|
|
88
|
-
kekikstream-2.4.
|
|
89
|
-
kekikstream-2.4.
|
|
90
|
-
kekikstream-2.4.
|
|
91
|
-
kekikstream-2.4.
|
|
92
|
-
kekikstream-2.4.
|
|
93
|
-
kekikstream-2.4.
|
|
88
|
+
kekikstream-2.4.4.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
|
89
|
+
kekikstream-2.4.4.dist-info/METADATA,sha256=LuV2Kn0ryFqkcYJXMYXpUheRWJRsD8rTpAJRY0baJFw,10745
|
|
90
|
+
kekikstream-2.4.4.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
91
|
+
kekikstream-2.4.4.dist-info/entry_points.txt,sha256=dFwdiTx8djyehI0Gsz-rZwjAfZzUzoBSrmzRu9ubjJc,50
|
|
92
|
+
kekikstream-2.4.4.dist-info/top_level.txt,sha256=DNmGJDXl27Drdfobrak8KYLmocW_uznVYFJOzcjUgmY,12
|
|
93
|
+
kekikstream-2.4.4.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|