KekikStream 2.4.6__py3-none-any.whl → 2.4.7__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.
Potentially problematic release.
This version of KekikStream might be problematic. Click here for more details.
- KekikStream/Core/HTMLHelper.py +2 -2
- KekikStream/Core/Plugin/PluginBase.py +15 -4
- KekikStream/Extractors/Odnoklassniki.py +14 -2
- KekikStream/Extractors/YTDLP.py +2 -2
- KekikStream/Plugins/BelgeselX.py +27 -19
- KekikStream/Plugins/DiziBox.py +11 -8
- KekikStream/Plugins/DiziMom.py +71 -53
- KekikStream/Plugins/DiziPal.py +37 -23
- KekikStream/Plugins/DiziYou.py +23 -11
- KekikStream/Plugins/Dizilla.py +35 -30
- KekikStream/Plugins/FilmBip.py +90 -18
- KekikStream/Plugins/FilmEkseni.py +78 -40
- KekikStream/Plugins/FilmMakinesi.py +29 -14
- KekikStream/Plugins/FilmModu.py +17 -19
- KekikStream/Plugins/Filmatek.py +103 -91
- KekikStream/Plugins/Full4kizle.py +6 -6
- KekikStream/Plugins/FullHDFilm.py +6 -6
- KekikStream/Plugins/FullHDFilmizlesene.py +6 -7
- KekikStream/Plugins/HDFilmCehennemi.py +3 -3
- KekikStream/Plugins/JetFilmizle.py +5 -5
- KekikStream/Plugins/KultFilmler.py +6 -6
- KekikStream/Plugins/RoketDizi.py +5 -5
- KekikStream/Plugins/SelcukFlix.py +2 -2
- KekikStream/Plugins/SetFilmIzle.py +5 -5
- KekikStream/Plugins/SezonlukDizi.py +4 -4
- KekikStream/Plugins/Sinefy.py +5 -5
- KekikStream/Plugins/SinemaCX.py +5 -5
- KekikStream/Plugins/Sinezy.py +5 -5
- KekikStream/Plugins/SuperFilmGeldi.py +5 -5
- KekikStream/Plugins/UgurFilm.py +4 -4
- KekikStream/Plugins/YabanciDizi.py +5 -5
- {kekikstream-2.4.6.dist-info → kekikstream-2.4.7.dist-info}/METADATA +1 -1
- {kekikstream-2.4.6.dist-info → kekikstream-2.4.7.dist-info}/RECORD +37 -37
- {kekikstream-2.4.6.dist-info → kekikstream-2.4.7.dist-info}/WHEEL +0 -0
- {kekikstream-2.4.6.dist-info → kekikstream-2.4.7.dist-info}/entry_points.txt +0 -0
- {kekikstream-2.4.6.dist-info → kekikstream-2.4.7.dist-info}/licenses/LICENSE +0 -0
- {kekikstream-2.4.6.dist-info → kekikstream-2.4.7.dist-info}/top_level.txt +0 -0
KekikStream/Plugins/FilmModu.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
|
2
2
|
|
|
3
|
-
from KekikStream.Core
|
|
3
|
+
from KekikStream.Core import PluginBase, MainPageResult, SearchResult, MovieInfo, Subtitle, ExtractResult, HTMLHelper
|
|
4
4
|
|
|
5
5
|
class FilmModu(PluginBase):
|
|
6
6
|
name = "FilmModu"
|
|
@@ -44,8 +44,8 @@ class FilmModu(PluginBase):
|
|
|
44
44
|
|
|
45
45
|
results = []
|
|
46
46
|
for veri in secici.select("div.movie"):
|
|
47
|
-
title
|
|
48
|
-
href
|
|
47
|
+
title = secici.select_text("a", veri)
|
|
48
|
+
href = secici.select_attr("a", "href", veri)
|
|
49
49
|
poster = secici.select_attr("picture img", "data-src", veri)
|
|
50
50
|
|
|
51
51
|
if title and href:
|
|
@@ -53,7 +53,7 @@ class FilmModu(PluginBase):
|
|
|
53
53
|
category = category,
|
|
54
54
|
title = title,
|
|
55
55
|
url = self.fix_url(href),
|
|
56
|
-
poster = self.fix_url(poster)
|
|
56
|
+
poster = self.fix_url(poster),
|
|
57
57
|
))
|
|
58
58
|
|
|
59
59
|
return results
|
|
@@ -64,15 +64,15 @@ class FilmModu(PluginBase):
|
|
|
64
64
|
|
|
65
65
|
results = []
|
|
66
66
|
for veri in secici.select("div.movie"):
|
|
67
|
-
title
|
|
68
|
-
href
|
|
67
|
+
title = secici.select_text("a", veri)
|
|
68
|
+
href = secici.select_attr("a", "href", veri)
|
|
69
69
|
poster = secici.select_attr("picture img", "data-src", veri)
|
|
70
70
|
|
|
71
71
|
if title and href:
|
|
72
72
|
results.append(SearchResult(
|
|
73
73
|
title = title,
|
|
74
74
|
url = self.fix_url(href),
|
|
75
|
-
poster = self.fix_url(poster)
|
|
75
|
+
poster = self.fix_url(poster),
|
|
76
76
|
))
|
|
77
77
|
|
|
78
78
|
return results
|
|
@@ -83,7 +83,7 @@ class FilmModu(PluginBase):
|
|
|
83
83
|
|
|
84
84
|
org_title = secici.select_text("div.titles h1")
|
|
85
85
|
alt_title = secici.select_text("div.titles h2")
|
|
86
|
-
title = f"{org_title} - {alt_title}" if alt_title else (org_title
|
|
86
|
+
title = f"{org_title} - {alt_title}" if alt_title else (org_title)
|
|
87
87
|
poster = secici.select_poster("img.img-responsive")
|
|
88
88
|
description = secici.select_text("p[itemprop='description']")
|
|
89
89
|
tags = secici.select_texts("a[href*='film-tur/']")
|
|
@@ -93,13 +93,13 @@ class FilmModu(PluginBase):
|
|
|
93
93
|
|
|
94
94
|
return MovieInfo(
|
|
95
95
|
url = url,
|
|
96
|
-
poster = self.fix_url(poster)
|
|
96
|
+
poster = self.fix_url(poster),
|
|
97
97
|
title = title,
|
|
98
98
|
description = description,
|
|
99
99
|
tags = tags,
|
|
100
100
|
rating = rating,
|
|
101
|
-
year =
|
|
102
|
-
actors = actors
|
|
101
|
+
year = year,
|
|
102
|
+
actors = actors
|
|
103
103
|
)
|
|
104
104
|
|
|
105
105
|
async def load_links(self, url: str) -> list[ExtractResult]:
|
|
@@ -119,20 +119,18 @@ class FilmModu(PluginBase):
|
|
|
119
119
|
if alt_name == "Fragman" or not alt_link:
|
|
120
120
|
continue
|
|
121
121
|
|
|
122
|
-
alt_link
|
|
122
|
+
alt_link = self.fix_url(alt_link)
|
|
123
123
|
alt_istek = await self.httpx.get(alt_link)
|
|
124
|
-
|
|
124
|
+
secici = HTMLHelper(alt_istek.text)
|
|
125
125
|
|
|
126
|
-
vid_id =
|
|
127
|
-
vid_type =
|
|
126
|
+
vid_id = secici.regex_first(r"var videoId = '([^']*)'")
|
|
127
|
+
vid_type = secici.regex_first(r"var videoType = '([^']*)'")
|
|
128
128
|
|
|
129
129
|
if not vid_id or not vid_type:
|
|
130
130
|
continue
|
|
131
131
|
|
|
132
|
-
source_istek = await self.httpx.get(
|
|
133
|
-
|
|
134
|
-
)
|
|
135
|
-
source_data = source_istek.json()
|
|
132
|
+
source_istek = await self.httpx.get(f"{self.main_url}/get-source?movie_id={vid_id}&type={vid_type}")
|
|
133
|
+
source_data = source_istek.json()
|
|
136
134
|
|
|
137
135
|
if source_data.get("subtitle"):
|
|
138
136
|
subtitle_url = self.fix_url(source_data["subtitle"])
|
KekikStream/Plugins/Filmatek.py
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
|
2
2
|
|
|
3
|
-
from KekikStream.Core import PluginBase, MainPageResult, SearchResult, MovieInfo,
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
from urllib.parse import unquote
|
|
3
|
+
from KekikStream.Core import PluginBase, MainPageResult, SearchResult, MovieInfo, ExtractResult, HTMLHelper
|
|
4
|
+
from urllib.parse import unquote
|
|
5
|
+
|
|
7
6
|
|
|
8
7
|
class Filmatek(PluginBase):
|
|
9
8
|
name = "Filmatek"
|
|
@@ -12,7 +11,6 @@ class Filmatek(PluginBase):
|
|
|
12
11
|
favicon = f"https://www.google.com/s2/favicons?domain={main_url}&sz=64"
|
|
13
12
|
description = "Sosyalizmin Sineması Veritabanı"
|
|
14
13
|
|
|
15
|
-
# Main page categories
|
|
16
14
|
main_page = {
|
|
17
15
|
f"{main_url}/tur/aile/page" : "Aile",
|
|
18
16
|
f"{main_url}/tur/aksiyon/page" : "Aksiyon",
|
|
@@ -28,22 +26,20 @@ class Filmatek(PluginBase):
|
|
|
28
26
|
}
|
|
29
27
|
|
|
30
28
|
async def get_main_page(self, page: int, url: str, category: str) -> list[MainPageResult]:
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
helper = HTMLHelper(istek.text)
|
|
29
|
+
istek = await self.httpx.get(f"{url}/{page}/")
|
|
30
|
+
secici = HTMLHelper(istek.text)
|
|
34
31
|
|
|
35
|
-
items
|
|
32
|
+
items = secici.select("div.items article, #archive-content article")
|
|
36
33
|
results = []
|
|
37
34
|
|
|
38
35
|
for item in items:
|
|
39
|
-
title_el =
|
|
40
|
-
if not title_el:
|
|
36
|
+
title_el = secici.select_first("div.data h3 a, h3 a", item)
|
|
37
|
+
if not title_el:
|
|
38
|
+
continue
|
|
41
39
|
|
|
42
|
-
title
|
|
43
|
-
href
|
|
44
|
-
|
|
45
|
-
img_el = helper.select_first("img", item)
|
|
46
|
-
poster = self.fix_url(img_el.attrs.get("data-src") or img_el.attrs.get("src")) if img_el else None
|
|
40
|
+
title = title_el.text(strip=True)
|
|
41
|
+
href = self.fix_url(title_el.attrs.get("href"))
|
|
42
|
+
poster = self.fix_url(secici.select_poster("img", item))
|
|
47
43
|
|
|
48
44
|
results.append(MainPageResult(
|
|
49
45
|
category = category,
|
|
@@ -51,26 +47,24 @@ class Filmatek(PluginBase):
|
|
|
51
47
|
url = href,
|
|
52
48
|
poster = poster
|
|
53
49
|
))
|
|
54
|
-
|
|
50
|
+
|
|
55
51
|
return results
|
|
56
52
|
|
|
57
53
|
async def search(self, query: str) -> list[SearchResult]:
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
helper = HTMLHelper(istek.text)
|
|
54
|
+
istek = await self.httpx.get(f"{self.main_url}/?s={query}")
|
|
55
|
+
secici = HTMLHelper(istek.text)
|
|
61
56
|
|
|
62
|
-
items
|
|
57
|
+
items = secici.select("div.result-item")
|
|
63
58
|
results = []
|
|
64
59
|
|
|
65
60
|
for item in items:
|
|
66
|
-
title_el =
|
|
67
|
-
if not title_el:
|
|
61
|
+
title_el = secici.select_first("div.title a", item)
|
|
62
|
+
if not title_el:
|
|
63
|
+
continue
|
|
68
64
|
|
|
69
|
-
title
|
|
70
|
-
href
|
|
71
|
-
|
|
72
|
-
img_el = helper.select_first("div.image img", item)
|
|
73
|
-
poster = self.fix_url(img_el.attrs.get("src")) if img_el else None
|
|
65
|
+
title = title_el.text(strip=True)
|
|
66
|
+
href = self.fix_url(title_el.attrs.get("href"))
|
|
67
|
+
poster = self.fix_url(secici.select_poster("div.image img", item))
|
|
74
68
|
|
|
75
69
|
results.append(SearchResult(
|
|
76
70
|
title = title,
|
|
@@ -82,76 +76,86 @@ class Filmatek(PluginBase):
|
|
|
82
76
|
|
|
83
77
|
async def load_item(self, url: str) -> MovieInfo:
|
|
84
78
|
istek = await self.httpx.get(url)
|
|
85
|
-
|
|
79
|
+
secici = HTMLHelper(istek.text)
|
|
86
80
|
|
|
87
|
-
title = self.clean_title(
|
|
88
|
-
poster =
|
|
89
|
-
description =
|
|
90
|
-
year =
|
|
91
|
-
rating =
|
|
92
|
-
duration =
|
|
93
|
-
tags =
|
|
94
|
-
actors =
|
|
81
|
+
title = self.clean_title(secici.select_text("div.data h1, h1"))
|
|
82
|
+
poster = secici.select_poster("div.poster img") or secici.select_attr("meta[property='og:image']", "content")
|
|
83
|
+
description = secici.select_text("div.wp-content p") or secici.select_attr("meta[property='og:description']", "content")
|
|
84
|
+
year = secici.extract_year("span.date")
|
|
85
|
+
rating = secici.select_text("span.dt_rating_vgs") or secici.select_text("span.dt_rating_vmanual")
|
|
86
|
+
duration = secici.regex_first(r"(\d+)", secici.select_text("span.runtime"))
|
|
87
|
+
tags = secici.select_texts("div.sgeneros a")
|
|
88
|
+
actors = secici.select_texts("div.person div.name a")
|
|
95
89
|
|
|
96
90
|
return MovieInfo(
|
|
97
91
|
url = url,
|
|
98
|
-
title = title
|
|
92
|
+
title = title,
|
|
99
93
|
description = description,
|
|
100
|
-
poster = self.fix_url(poster)
|
|
101
|
-
year =
|
|
94
|
+
poster = self.fix_url(poster),
|
|
95
|
+
year = year,
|
|
102
96
|
rating = rating,
|
|
103
|
-
duration =
|
|
97
|
+
duration = duration,
|
|
104
98
|
tags = tags,
|
|
105
99
|
actors = actors
|
|
106
100
|
)
|
|
107
101
|
|
|
108
102
|
async def load_links(self, url: str) -> list[ExtractResult]:
|
|
109
|
-
istek
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
103
|
+
istek = await self.httpx.get(url)
|
|
104
|
+
secici = HTMLHelper(istek.text)
|
|
105
|
+
|
|
106
|
+
# Player seçeneklerini bul
|
|
107
|
+
options = secici.select("div#playeroptions ul.ajax_mode li.dooplay_player_option")
|
|
108
|
+
if not options:
|
|
109
|
+
# Fallback: Body class'tan post_id
|
|
110
|
+
body_class = secici.select_attr("body", "class") or ""
|
|
111
|
+
if pid := secici.regex_first(r"postid-(\d+)", body_class):
|
|
112
|
+
options = [{"data-post": pid, "data-nume": "1", "data-type": "movie", "title": "Varsayılan"}]
|
|
113
|
+
else:
|
|
114
|
+
options = []
|
|
115
|
+
|
|
117
116
|
results = []
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
"post"
|
|
127
|
-
|
|
128
|
-
"type"
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
"Content-Type": "application/x-www-form-urlencoded"
|
|
135
|
-
}
|
|
136
|
-
|
|
117
|
+
|
|
118
|
+
for opt in options:
|
|
119
|
+
if isinstance(opt, dict):
|
|
120
|
+
post_id = opt.get("data-post")
|
|
121
|
+
nume = opt.get("data-nume")
|
|
122
|
+
type_ = opt.get("data-type")
|
|
123
|
+
title = opt.get("title")
|
|
124
|
+
else:
|
|
125
|
+
post_id = opt.attrs.get("data-post")
|
|
126
|
+
nume = opt.attrs.get("data-nume")
|
|
127
|
+
type_ = opt.attrs.get("data-type")
|
|
128
|
+
title = secici.select_text("span.title", opt)
|
|
129
|
+
|
|
130
|
+
if not post_id or not nume:
|
|
131
|
+
continue
|
|
132
|
+
|
|
137
133
|
try:
|
|
138
134
|
# Need to use post with data
|
|
139
|
-
player_resp = await self.httpx.post(
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
135
|
+
player_resp = await self.httpx.post(
|
|
136
|
+
url = f"{self.main_url}/wp-admin/admin-ajax.php",
|
|
137
|
+
headers = {
|
|
138
|
+
"X-Requested-With" : "XMLHttpRequest",
|
|
139
|
+
"Referer" : url,
|
|
140
|
+
"Content-Type" : "application/x-www-form-urlencoded"
|
|
141
|
+
},
|
|
142
|
+
data = {
|
|
143
|
+
"action" : "doo_player_ajax",
|
|
144
|
+
"post" : post_id,
|
|
145
|
+
"nume" : nume,
|
|
146
|
+
"type" : type_
|
|
147
|
+
}
|
|
148
|
+
)
|
|
149
|
+
|
|
150
|
+
content = player_resp.text.replace(r"\/", "/")
|
|
151
|
+
iframe_url = secici.regex_first(r'(?:src|url)["\']?\s*[:=]\s*["\']([^"\']+)["\']', content)
|
|
152
|
+
|
|
153
|
+
if iframe_url:
|
|
150
154
|
if iframe_url.startswith("/"):
|
|
151
155
|
iframe_url = self.main_url + iframe_url
|
|
152
|
-
|
|
156
|
+
|
|
153
157
|
iframe_url = self.fix_url(iframe_url)
|
|
154
|
-
|
|
158
|
+
|
|
155
159
|
# Unwrap internal JWPlayer
|
|
156
160
|
if "jwplayer/?source=" in iframe_url:
|
|
157
161
|
try:
|
|
@@ -159,19 +163,27 @@ class Filmatek(PluginBase):
|
|
|
159
163
|
iframe_url = unquote(raw_source)
|
|
160
164
|
except:
|
|
161
165
|
pass
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
if
|
|
165
|
-
if isinstance(extracted, list):
|
|
166
|
-
results.extend(extracted)
|
|
167
|
-
else:
|
|
168
|
-
results.append(extracted)
|
|
169
|
-
else:
|
|
166
|
+
|
|
167
|
+
# Direct media files
|
|
168
|
+
if ".m3u8" in iframe_url or ".mp4" in iframe_url:
|
|
170
169
|
results.append(ExtractResult(
|
|
171
|
-
name
|
|
172
|
-
url
|
|
170
|
+
name = f"{title} | Direct",
|
|
171
|
+
url = iframe_url,
|
|
173
172
|
referer = url
|
|
174
173
|
))
|
|
174
|
+
else:
|
|
175
|
+
extracted = await self.extract(iframe_url, prefix=title)
|
|
176
|
+
if extracted:
|
|
177
|
+
if isinstance(extracted, list):
|
|
178
|
+
results.extend(extracted)
|
|
179
|
+
else:
|
|
180
|
+
results.append(extracted)
|
|
181
|
+
else:
|
|
182
|
+
results.append(ExtractResult(
|
|
183
|
+
name = f"{title} | External",
|
|
184
|
+
url = iframe_url,
|
|
185
|
+
referer = url
|
|
186
|
+
))
|
|
175
187
|
except Exception as e:
|
|
176
188
|
# print(f"Filmatek Error: {e}")
|
|
177
189
|
pass
|
|
@@ -114,10 +114,10 @@ class Full4kizle(PluginBase):
|
|
|
114
114
|
if not ep_elements:
|
|
115
115
|
return MovieInfo(
|
|
116
116
|
url = url,
|
|
117
|
-
title = title
|
|
117
|
+
title = title,
|
|
118
118
|
description = description,
|
|
119
|
-
poster = self.fix_url(poster)
|
|
120
|
-
year =
|
|
119
|
+
poster = self.fix_url(poster),
|
|
120
|
+
year = year,
|
|
121
121
|
rating = rating,
|
|
122
122
|
duration = duration,
|
|
123
123
|
tags = tags,
|
|
@@ -133,10 +133,10 @@ class Full4kizle(PluginBase):
|
|
|
133
133
|
|
|
134
134
|
return SeriesInfo(
|
|
135
135
|
url = url,
|
|
136
|
-
title = title
|
|
136
|
+
title = title,
|
|
137
137
|
description = description,
|
|
138
|
-
poster = self.fix_url(poster)
|
|
139
|
-
year =
|
|
138
|
+
poster = self.fix_url(poster),
|
|
139
|
+
year = year,
|
|
140
140
|
rating = rating,
|
|
141
141
|
duration = duration,
|
|
142
142
|
tags = tags,
|
|
@@ -60,7 +60,7 @@ class FullHDFilm(PluginBase):
|
|
|
60
60
|
category = category,
|
|
61
61
|
title = alt,
|
|
62
62
|
url = self.fix_url(href),
|
|
63
|
-
poster = self.fix_url(poster)
|
|
63
|
+
poster = self.fix_url(poster),
|
|
64
64
|
))
|
|
65
65
|
|
|
66
66
|
return results
|
|
@@ -79,7 +79,7 @@ class FullHDFilm(PluginBase):
|
|
|
79
79
|
results.append(SearchResult(
|
|
80
80
|
title = alt,
|
|
81
81
|
url = self.fix_url(href),
|
|
82
|
-
poster = self.fix_url(poster)
|
|
82
|
+
poster = self.fix_url(poster),
|
|
83
83
|
))
|
|
84
84
|
|
|
85
85
|
return results
|
|
@@ -110,13 +110,13 @@ class FullHDFilm(PluginBase):
|
|
|
110
110
|
episodes.append(Episode(season=s or 1, episode=e or (idx+1), title=f"{s or 1}. Sezon {e or idx+1}. Bölüm", url=url))
|
|
111
111
|
|
|
112
112
|
return SeriesInfo(
|
|
113
|
-
url=url, poster=self.fix_url(poster)
|
|
114
|
-
tags=tags, year=
|
|
113
|
+
url=url, poster=self.fix_url(poster), title=title, description=description,
|
|
114
|
+
tags=tags, year=year, actors=actors, rating=rating, episodes=episodes
|
|
115
115
|
)
|
|
116
116
|
|
|
117
117
|
return MovieInfo(
|
|
118
|
-
url=url, poster=self.fix_url(poster)
|
|
119
|
-
tags=tags, year=
|
|
118
|
+
url=url, poster=self.fix_url(poster), title=title, description=description,
|
|
119
|
+
tags=tags, year=year, actors=actors, rating=rating
|
|
120
120
|
)
|
|
121
121
|
|
|
122
122
|
def _get_iframe(self, source_code: str) -> str:
|
|
@@ -54,7 +54,7 @@ class FullHDFilmizlesene(PluginBase):
|
|
|
54
54
|
category = category,
|
|
55
55
|
title = title,
|
|
56
56
|
url = self.fix_url(href),
|
|
57
|
-
poster = self.fix_url(poster)
|
|
57
|
+
poster = self.fix_url(poster),
|
|
58
58
|
))
|
|
59
59
|
|
|
60
60
|
return results
|
|
@@ -73,7 +73,7 @@ class FullHDFilmizlesene(PluginBase):
|
|
|
73
73
|
results.append(SearchResult(
|
|
74
74
|
title = title,
|
|
75
75
|
url = self.fix_url(href),
|
|
76
|
-
poster = self.fix_url(poster)
|
|
76
|
+
poster = self.fix_url(poster),
|
|
77
77
|
))
|
|
78
78
|
|
|
79
79
|
return results
|
|
@@ -93,12 +93,12 @@ class FullHDFilmizlesene(PluginBase):
|
|
|
93
93
|
|
|
94
94
|
return MovieInfo(
|
|
95
95
|
url = url,
|
|
96
|
-
poster = self.fix_url(poster)
|
|
97
|
-
title = title
|
|
96
|
+
poster = self.fix_url(poster),
|
|
97
|
+
title = title,
|
|
98
98
|
description = description,
|
|
99
99
|
tags = tags,
|
|
100
100
|
rating = rating,
|
|
101
|
-
year =
|
|
101
|
+
year = year,
|
|
102
102
|
actors = actors,
|
|
103
103
|
duration = duration
|
|
104
104
|
)
|
|
@@ -129,8 +129,7 @@ class FullHDFilmizlesene(PluginBase):
|
|
|
129
129
|
|
|
130
130
|
response = []
|
|
131
131
|
for link in link_list:
|
|
132
|
-
|
|
133
|
-
data = await self.extract(link)
|
|
132
|
+
data = await self.extract(self.fix_url(link))
|
|
134
133
|
if data:
|
|
135
134
|
response.append(data)
|
|
136
135
|
|
|
@@ -43,7 +43,7 @@ class HDFilmCehennemi(PluginBase):
|
|
|
43
43
|
category = category,
|
|
44
44
|
title = title,
|
|
45
45
|
url = self.fix_url(href),
|
|
46
|
-
poster = self.fix_url(poster)
|
|
46
|
+
poster = self.fix_url(poster),
|
|
47
47
|
))
|
|
48
48
|
|
|
49
49
|
return results
|
|
@@ -101,12 +101,12 @@ class HDFilmCehennemi(PluginBase):
|
|
|
101
101
|
episodes.append(Episode(season=s or 1, episode=e or 1, title=name, url=self.fix_url(href)))
|
|
102
102
|
|
|
103
103
|
return SeriesInfo(
|
|
104
|
-
url=url, poster=self.fix_url(poster)
|
|
104
|
+
url=url, poster=self.fix_url(poster), title=title,
|
|
105
105
|
description=description, tags=tags, rating=rating, year=year, actors=actors, episodes=episodes
|
|
106
106
|
)
|
|
107
107
|
|
|
108
108
|
return MovieInfo(
|
|
109
|
-
url=url, poster=self.fix_url(poster)
|
|
109
|
+
url=url, poster=self.fix_url(poster), title=title,
|
|
110
110
|
description=description, tags=tags, rating=rating, year=year, actors=actors, duration=duration
|
|
111
111
|
)
|
|
112
112
|
|
|
@@ -59,7 +59,7 @@ class JetFilmizle(PluginBase):
|
|
|
59
59
|
category = category,
|
|
60
60
|
title = title,
|
|
61
61
|
url = self.fix_url(href),
|
|
62
|
-
poster = self.fix_url(poster)
|
|
62
|
+
poster = self.fix_url(poster),
|
|
63
63
|
))
|
|
64
64
|
|
|
65
65
|
return results
|
|
@@ -90,7 +90,7 @@ class JetFilmizle(PluginBase):
|
|
|
90
90
|
results.append(SearchResult(
|
|
91
91
|
title = title,
|
|
92
92
|
url = self.fix_url(href),
|
|
93
|
-
poster = self.fix_url(poster)
|
|
93
|
+
poster = self.fix_url(poster),
|
|
94
94
|
))
|
|
95
95
|
|
|
96
96
|
return results
|
|
@@ -119,12 +119,12 @@ class JetFilmizle(PluginBase):
|
|
|
119
119
|
|
|
120
120
|
return MovieInfo(
|
|
121
121
|
url = url,
|
|
122
|
-
poster = self.fix_url(poster)
|
|
123
|
-
title = title
|
|
122
|
+
poster = self.fix_url(poster),
|
|
123
|
+
title = title,
|
|
124
124
|
description = description,
|
|
125
125
|
tags = tags,
|
|
126
126
|
rating = rating,
|
|
127
|
-
year =
|
|
127
|
+
year = year,
|
|
128
128
|
actors = actors,
|
|
129
129
|
duration = int(total_minutes) if duration else None
|
|
130
130
|
)
|
|
@@ -50,7 +50,7 @@ class KultFilmler(PluginBase):
|
|
|
50
50
|
category = category,
|
|
51
51
|
title = title,
|
|
52
52
|
url = self.fix_url(href),
|
|
53
|
-
poster = self.fix_url(poster)
|
|
53
|
+
poster = self.fix_url(poster),
|
|
54
54
|
))
|
|
55
55
|
|
|
56
56
|
return results
|
|
@@ -69,7 +69,7 @@ class KultFilmler(PluginBase):
|
|
|
69
69
|
results.append(SearchResult(
|
|
70
70
|
title = title,
|
|
71
71
|
url = self.fix_url(href),
|
|
72
|
-
poster = self.fix_url(poster)
|
|
72
|
+
poster = self.fix_url(poster),
|
|
73
73
|
))
|
|
74
74
|
|
|
75
75
|
return results
|
|
@@ -99,13 +99,13 @@ class KultFilmler(PluginBase):
|
|
|
99
99
|
episodes.append(Episode(season=s or 1, episode=e or 1, title=name, url=self.fix_url(href)))
|
|
100
100
|
|
|
101
101
|
return SeriesInfo(
|
|
102
|
-
url=url, poster=poster, title=title
|
|
103
|
-
tags=tags, year=
|
|
102
|
+
url=url, poster=poster, title=title, description=description,
|
|
103
|
+
tags=tags, year=year, actors=actors, rating=rating, episodes=episodes
|
|
104
104
|
)
|
|
105
105
|
|
|
106
106
|
return MovieInfo(
|
|
107
|
-
url=url, poster=poster, title=title
|
|
108
|
-
tags=tags, year=
|
|
107
|
+
url=url, poster=poster, title=title, description=description,
|
|
108
|
+
tags=tags, year=year, rating=rating, actors=actors, duration=duration
|
|
109
109
|
)
|
|
110
110
|
|
|
111
111
|
def _get_iframe(self, source_code: str) -> str:
|
KekikStream/Plugins/RoketDizi.py
CHANGED
|
@@ -38,7 +38,7 @@ class RoketDizi(PluginBase):
|
|
|
38
38
|
category = category,
|
|
39
39
|
title = self.clean_title(title),
|
|
40
40
|
url = self.fix_url(href),
|
|
41
|
-
poster = self.fix_url(poster)
|
|
41
|
+
poster = self.fix_url(poster)
|
|
42
42
|
))
|
|
43
43
|
|
|
44
44
|
return results
|
|
@@ -76,7 +76,7 @@ class RoketDizi(PluginBase):
|
|
|
76
76
|
results.append(SearchResult(
|
|
77
77
|
title = self.clean_title(title.strip()),
|
|
78
78
|
url = self.fix_url(f"{self.main_url}/{slug}"),
|
|
79
|
-
poster = self.fix_url(poster)
|
|
79
|
+
poster = self.fix_url(poster)
|
|
80
80
|
))
|
|
81
81
|
|
|
82
82
|
return results
|
|
@@ -138,7 +138,7 @@ class RoketDizi(PluginBase):
|
|
|
138
138
|
|
|
139
139
|
return SeriesInfo(
|
|
140
140
|
url = url,
|
|
141
|
-
poster = self.fix_url(poster)
|
|
141
|
+
poster = self.fix_url(poster),
|
|
142
142
|
title = self.clean_title(title),
|
|
143
143
|
description = description,
|
|
144
144
|
tags = tags,
|
|
@@ -150,7 +150,7 @@ class RoketDizi(PluginBase):
|
|
|
150
150
|
else:
|
|
151
151
|
return MovieInfo(
|
|
152
152
|
url = url,
|
|
153
|
-
poster = self.fix_url(poster)
|
|
153
|
+
poster = self.fix_url(poster),
|
|
154
154
|
title = self.clean_title(title),
|
|
155
155
|
description = description,
|
|
156
156
|
tags = tags,
|
|
@@ -191,7 +191,7 @@ class RoketDizi(PluginBase):
|
|
|
191
191
|
iframe_url = HTMLHelper(source_content).regex_first(r'<iframe[^>]*src=["\']([^"\']*)["\']')
|
|
192
192
|
if not iframe_url:
|
|
193
193
|
continue
|
|
194
|
-
|
|
194
|
+
|
|
195
195
|
# Fix URL protocol
|
|
196
196
|
if not iframe_url.startswith("http"):
|
|
197
197
|
if iframe_url.startswith("//"):
|
|
@@ -52,7 +52,7 @@ class SelcukFlix(PluginBase):
|
|
|
52
52
|
category = category,
|
|
53
53
|
title = title,
|
|
54
54
|
url = final_url,
|
|
55
|
-
poster = self.fix_url(poster)
|
|
55
|
+
poster = self.fix_url(poster)
|
|
56
56
|
))
|
|
57
57
|
except Exception:
|
|
58
58
|
pass
|
|
@@ -227,7 +227,7 @@ class SelcukFlix(PluginBase):
|
|
|
227
227
|
common_info = {
|
|
228
228
|
"url" : url,
|
|
229
229
|
"poster" : poster,
|
|
230
|
-
"title" : title
|
|
230
|
+
"title" : title,
|
|
231
231
|
"description" : description,
|
|
232
232
|
"tags" : tags,
|
|
233
233
|
"rating" : rating,
|