KekikStream 2.4.7__py3-none-any.whl → 2.4.9__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/Extractors/JetV.py +55 -0
- KekikStream/Extractors/Veev.py +145 -0
- KekikStream/Extractors/VidBiz.py +62 -0
- KekikStream/Extractors/VidHide.py +56 -7
- KekikStream/Extractors/Vtbe.py +38 -0
- KekikStream/Extractors/Zeus.py +61 -0
- KekikStream/Plugins/BelgeselX.py +3 -4
- KekikStream/Plugins/DiziBox.py +3 -3
- KekikStream/Plugins/DiziMom.py +48 -42
- KekikStream/Plugins/DiziPal.py +1 -1
- KekikStream/Plugins/Dizilla.py +2 -2
- KekikStream/Plugins/FilmBip.py +4 -11
- KekikStream/Plugins/FilmEkseni.py +59 -55
- KekikStream/Plugins/FilmMakinesi.py +42 -5
- KekikStream/Plugins/FilmModu.py +0 -1
- KekikStream/Plugins/Filmatek.py +4 -11
- KekikStream/Plugins/{Full4kizle.py → FilmciBaba.py} +55 -74
- KekikStream/Plugins/FullHDFilmizlesene.py +6 -7
- KekikStream/Plugins/HDFilm.py +243 -0
- KekikStream/Plugins/HDFilmCehennemi.py +230 -138
- KekikStream/Plugins/JetFilmizle.py +82 -49
- {kekikstream-2.4.7.dist-info → kekikstream-2.4.9.dist-info}/METADATA +1 -1
- {kekikstream-2.4.7.dist-info → kekikstream-2.4.9.dist-info}/RECORD +27 -22
- KekikStream/Plugins/FullHDFilm.py +0 -179
- {kekikstream-2.4.7.dist-info → kekikstream-2.4.9.dist-info}/WHEEL +0 -0
- {kekikstream-2.4.7.dist-info → kekikstream-2.4.9.dist-info}/entry_points.txt +0 -0
- {kekikstream-2.4.7.dist-info → kekikstream-2.4.9.dist-info}/licenses/LICENSE +0 -0
- {kekikstream-2.4.7.dist-info → kekikstream-2.4.9.dist-info}/top_level.txt +0 -0
|
@@ -28,6 +28,7 @@ KekikStream/Extractors/HDPlayerSystem.py,sha256=hoPN7fqVRBK97BnQ7vF_5TlEO28BD3Dr
|
|
|
28
28
|
KekikStream/Extractors/HotStream.py,sha256=37H9pK4HSEqGR6QKgxz887JCBXfXB1NXDpBGuhvPmXo,1078
|
|
29
29
|
KekikStream/Extractors/JFVid.py,sha256=rdy0bmqZIruejn1G1YNxVM3wlqxkdFRd4zunxxZlev4,746
|
|
30
30
|
KekikStream/Extractors/JetTv.py,sha256=Cdx1XZEtQZkrmOdZdgM9E1iBkCNzVTExjrI_F-3Nv-I,1176
|
|
31
|
+
KekikStream/Extractors/JetV.py,sha256=knyDiOCSBMC1eQHo5LRFx5apn3NQflKY3xyloLDGkaI,2069
|
|
31
32
|
KekikStream/Extractors/MailRu.py,sha256=n87wBc9jQ4nP8OJbqS7LsHHCKuRxlsgdtL_xHVn0rdY,779
|
|
32
33
|
KekikStream/Extractors/MixPlayHD.py,sha256=otA2SKDnJisY4Zt9DCuNdjNVHtSquHoMVvP3_5Q0poY,1205
|
|
33
34
|
KekikStream/Extractors/MixTiger.py,sha256=kF_AKkJoyAS6peQ94eu3pLzS-VeZ_8IYjpaDrTo3x_I,1135
|
|
@@ -46,31 +47,35 @@ KekikStream/Extractors/TauVideo.py,sha256=2ai9BwwM6qlCgxK7E0B642LtOF5y4hEb9tQ2aD
|
|
|
46
47
|
KekikStream/Extractors/TurboImgz.py,sha256=-RyC4EWtJdK85Ei01lntqivnSmk4tXOlmSXv70cQJ70,679
|
|
47
48
|
KekikStream/Extractors/TurkeyPlayer.py,sha256=zdX0IOO3M-kgAYWex2WwJJu9aGf8WhOY-ZIrRmZRiC0,1246
|
|
48
49
|
KekikStream/Extractors/VCTPlay.py,sha256=MdCH9GhhKod4oPT3ePH8rhicUWuNT-GsE42S72o1NJ4,876
|
|
49
|
-
KekikStream/Extractors/
|
|
50
|
+
KekikStream/Extractors/Veev.py,sha256=DowOuKhCAmVs0sMeQRxxhWRUf4MR6fhx1yeNUmy_Le4,5271
|
|
51
|
+
KekikStream/Extractors/VidBiz.py,sha256=V9nTt8Uaqn5F9x9WMZbW3wqaeajGLdBhLryXoeStChk,2212
|
|
52
|
+
KekikStream/Extractors/VidHide.py,sha256=YswpcBz6Eqq_qGZhHpRcxcvTK0S3hZSNPfNjQRrn_W4,4109
|
|
50
53
|
KekikStream/Extractors/VidMoly.py,sha256=LUUomzPvf4J7PG3rf7drV4WM-sBHOupsllj017eluew,4106
|
|
51
54
|
KekikStream/Extractors/VidMoxy.py,sha256=qTkTFRqTgQVi-E94zY5lQC2-AYFhkl8LqaOJpgGdErc,1452
|
|
52
55
|
KekikStream/Extractors/VidPapi.py,sha256=yqjA5gadCE2lZ9ksT6zZOz-1zCcCYJxZsg0Ccgz2X10,1988
|
|
53
56
|
KekikStream/Extractors/VideoSeyred.py,sha256=sNxw5OHQ8AzRJIRGXGjql8nK1E6Cbg9qhKP5PuOyeM8,1216
|
|
54
57
|
KekikStream/Extractors/Videostr.py,sha256=CGL9GDzN0QzDir6ss8oUvDYYbGt2k8323P2_z5tVZVI,2563
|
|
55
58
|
KekikStream/Extractors/Vidoza.py,sha256=VSqCI-SYnLh6COnLHpg0feRX37t2WhPxbo08us5wCcc,655
|
|
59
|
+
KekikStream/Extractors/Vtbe.py,sha256=d_ZnLHnYiQltwMOWsop-EbLb0cqMiRyp5foiOm5k2es,1392
|
|
56
60
|
KekikStream/Extractors/YTDLP.py,sha256=vE08jS9kLrLxiZA8TpofPQg2-ec_6d5DkM9esoh_GI8,7419
|
|
57
61
|
KekikStream/Extractors/YildizKisaFilm.py,sha256=jeCCSIwZvQUr-CSylleUIP--JtN18_wUGl0vQXMCsV4,936
|
|
58
|
-
KekikStream/
|
|
59
|
-
KekikStream/Plugins/
|
|
60
|
-
KekikStream/Plugins/
|
|
61
|
-
KekikStream/Plugins/
|
|
62
|
+
KekikStream/Extractors/Zeus.py,sha256=OifOjIVZWeXSoGu4F2wpxv0c-ABm-2UYD9g5L4dwkjs,2003
|
|
63
|
+
KekikStream/Plugins/BelgeselX.py,sha256=tJw1GZQoqxE7HISCVYUEL2ZP-8Mftdl4WytYA0ftSUc,9648
|
|
64
|
+
KekikStream/Plugins/DiziBox.py,sha256=SuRQxNZetwJJTlobuxB0h7NMeHUMrYMv_94JuCXydds,10204
|
|
65
|
+
KekikStream/Plugins/DiziMom.py,sha256=mRu9YUHs7XeLzXOqKIWcsI82yeltTW-6Q423wt71D5U,8044
|
|
66
|
+
KekikStream/Plugins/DiziPal.py,sha256=Ezrjbfq7EUcEjpA6yuOUtlhC009CE4aXW0_eM8Uf3yE,7927
|
|
62
67
|
KekikStream/Plugins/DiziYou.py,sha256=Z6MznGOcUnnxdsQsK-rnPmGHa1PAq7NcFw0slXlEVGo,6759
|
|
63
|
-
KekikStream/Plugins/Dizilla.py,sha256=
|
|
64
|
-
KekikStream/Plugins/FilmBip.py,sha256=
|
|
65
|
-
KekikStream/Plugins/FilmEkseni.py,sha256=
|
|
66
|
-
KekikStream/Plugins/FilmMakinesi.py,sha256=
|
|
67
|
-
KekikStream/Plugins/FilmModu.py,sha256=
|
|
68
|
-
KekikStream/Plugins/Filmatek.py,sha256=
|
|
69
|
-
KekikStream/Plugins/
|
|
70
|
-
KekikStream/Plugins/
|
|
71
|
-
KekikStream/Plugins/
|
|
72
|
-
KekikStream/Plugins/HDFilmCehennemi.py,sha256=
|
|
73
|
-
KekikStream/Plugins/JetFilmizle.py,sha256=
|
|
68
|
+
KekikStream/Plugins/Dizilla.py,sha256=U6z4cfy48HhtJNGi9-A3kUzoph-JpQuMtiOZ7fE_DUI,12705
|
|
69
|
+
KekikStream/Plugins/FilmBip.py,sha256=enTqWdx8YbseSsyQEYIVs6Dr7A7llkn7AtFaTYuatCE,9137
|
|
70
|
+
KekikStream/Plugins/FilmEkseni.py,sha256=Y2AAo6XBvwLZZ1hztD7hOi9nZlD4HhBqMv0qZJdZdIk,7101
|
|
71
|
+
KekikStream/Plugins/FilmMakinesi.py,sha256=h5-0jWggq6inWtdyHHUPP1HTnjfrf6X4syTgTm22DMs,7972
|
|
72
|
+
KekikStream/Plugins/FilmModu.py,sha256=7qm7kC4R0oH1OWyLleSqj6SMUgWbbERfYbE1d726ZOM,6943
|
|
73
|
+
KekikStream/Plugins/Filmatek.py,sha256=AdOeBVP1rfq5R1YJlQj2saT77rnzVHX54tEOAH-t9fI,7700
|
|
74
|
+
KekikStream/Plugins/FilmciBaba.py,sha256=miwQ7ODHGcAOBacUZf0lqolBElpvOk8oeckWVJYJau0,6936
|
|
75
|
+
KekikStream/Plugins/FullHDFilmizlesene.py,sha256=dJ1xo1D3ujPCQE6PewpqdvSMKlBbifA67uU7BAMmvVM,6274
|
|
76
|
+
KekikStream/Plugins/HDFilm.py,sha256=m6tjV1O1l5U_jqkGKizi62GOdSMd5osyOS2_9jehS-w,10754
|
|
77
|
+
KekikStream/Plugins/HDFilmCehennemi.py,sha256=h3FTKN-psrzvN0Juw8Am83MV8QL9aX-RSWhYqXRQU-E,17368
|
|
78
|
+
KekikStream/Plugins/JetFilmizle.py,sha256=YyZmOWoh_SFGRARrKioq8fhv8VgzTiURFypJMoW8nzU,10279
|
|
74
79
|
KekikStream/Plugins/KultFilmler.py,sha256=iHk3X8CwNxHRgGFZRK6BDqvZLs0p9GK5oi8IAm6w3Lw,8441
|
|
75
80
|
KekikStream/Plugins/RecTV.py,sha256=MRoP8KQF2V9kVlRNTQkRz9YFkBmMy3_skiNE47-RAlk,7151
|
|
76
81
|
KekikStream/Plugins/RoketDizi.py,sha256=2OIDct56NgmQJyv0gIi9ZprpxSL3u41ZdEst5q1mhq4,9222
|
|
@@ -85,9 +90,9 @@ KekikStream/Plugins/SuperFilmGeldi.py,sha256=jJKBrLPI4rXI8n55lIdZOTyzNccPAEEIkmT
|
|
|
85
90
|
KekikStream/Plugins/UgurFilm.py,sha256=NO6c1hHlylCfoP8fM-aVsxpBIyTAyu4uBHVM8CjybuI,5037
|
|
86
91
|
KekikStream/Plugins/Watch32.py,sha256=NeESk1unb5SYs6kwkb3dDymv2yYOkRU2QJCPI9izXKk,7915
|
|
87
92
|
KekikStream/Plugins/YabanciDizi.py,sha256=m4I8OM7Br_RRUSY0RAMpqcZ-_BwyjKXWHQuF_jS4EnE,9876
|
|
88
|
-
kekikstream-2.4.
|
|
89
|
-
kekikstream-2.4.
|
|
90
|
-
kekikstream-2.4.
|
|
91
|
-
kekikstream-2.4.
|
|
92
|
-
kekikstream-2.4.
|
|
93
|
-
kekikstream-2.4.
|
|
93
|
+
kekikstream-2.4.9.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
|
94
|
+
kekikstream-2.4.9.dist-info/METADATA,sha256=AuylDm8bUfwDBeEQ4CBg0hi6csQXcMrS1dvytuP-Qr0,10745
|
|
95
|
+
kekikstream-2.4.9.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
96
|
+
kekikstream-2.4.9.dist-info/entry_points.txt,sha256=dFwdiTx8djyehI0Gsz-rZwjAfZzUzoBSrmzRu9ubjJc,50
|
|
97
|
+
kekikstream-2.4.9.dist-info/top_level.txt,sha256=DNmGJDXl27Drdfobrak8KYLmocW_uznVYFJOzcjUgmY,12
|
|
98
|
+
kekikstream-2.4.9.dist-info/RECORD,,
|
|
@@ -1,179 +0,0 @@
|
|
|
1
|
-
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
|
2
|
-
|
|
3
|
-
from KekikStream.Core import PluginBase, MainPageResult, SearchResult, MovieInfo, SeriesInfo, Episode, ExtractResult, Subtitle, HTMLHelper
|
|
4
|
-
import base64
|
|
5
|
-
|
|
6
|
-
class FullHDFilm(PluginBase):
|
|
7
|
-
name = "FullHDFilm"
|
|
8
|
-
language = "tr"
|
|
9
|
-
main_url = "https://hdfilm.us"
|
|
10
|
-
favicon = f"https://www.google.com/s2/favicons?domain={main_url}&sz=64"
|
|
11
|
-
description = "Full HD Film izle, Türkçe Dublaj ve Altyazılı filmler."
|
|
12
|
-
|
|
13
|
-
main_page = {
|
|
14
|
-
f"{main_url}/tur/turkce-altyazili-film-izle" : "Altyazılı Filmler",
|
|
15
|
-
f"{main_url}/tur/netflix-filmleri-izle" : "Netflix",
|
|
16
|
-
f"{main_url}/tur/yerli-film-izle" : "Yerli Film",
|
|
17
|
-
f"{main_url}/category/aile-filmleri-izle" : "Aile",
|
|
18
|
-
f"{main_url}/category/aksiyon-filmleri-izle" : "Aksiyon",
|
|
19
|
-
f"{main_url}/category/animasyon-filmleri-izle" : "Animasyon",
|
|
20
|
-
f"{main_url}/category/belgesel-filmleri-izle" : "Belgesel",
|
|
21
|
-
f"{main_url}/category/bilim-kurgu-filmleri-izle" : "Bilim Kurgu",
|
|
22
|
-
f"{main_url}/category/biyografi-filmleri-izle" : "Biyografi",
|
|
23
|
-
f"{main_url}/category/dram-filmleri-izle" : "Dram",
|
|
24
|
-
f"{main_url}/category/fantastik-filmler-izle" : "Fantastik",
|
|
25
|
-
f"{main_url}/category/gerilim-filmleri-izle" : "Gerilim",
|
|
26
|
-
f"{main_url}/category/gizem-filmleri-izle" : "Gizem",
|
|
27
|
-
f"{main_url}/category/kisa" : "Kısa",
|
|
28
|
-
f"{main_url}/category/komedi-filmleri-izle" : "Komedi",
|
|
29
|
-
f"{main_url}/category/korku-filmleri-izle" : "Korku",
|
|
30
|
-
f"{main_url}/category/macera-filmleri-izle" : "Macera",
|
|
31
|
-
f"{main_url}/category/muzik" : "Müzik",
|
|
32
|
-
f"{main_url}/category/muzikal-filmleri-izle" : "Müzikal",
|
|
33
|
-
f"{main_url}/category/romantik-filmler-izle" : "Romantik",
|
|
34
|
-
f"{main_url}/category/savas-filmleri-izle" : "Savaş",
|
|
35
|
-
f"{main_url}/category/spor-filmleri-izle" : "Spor",
|
|
36
|
-
f"{main_url}/category/suc-filmleri-izle" : "Suç",
|
|
37
|
-
f"{main_url}/category/tarih-filmleri-izle" : "Tarih",
|
|
38
|
-
f"{main_url}/category/western-filmleri-izle" : "Western",
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
async def get_main_page(self, page: int, url: str, category: str) -> list[MainPageResult]:
|
|
42
|
-
page_url = url if page == 1 else f"{url}/page/{page}"
|
|
43
|
-
|
|
44
|
-
self.httpx.headers.update({
|
|
45
|
-
"User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
|
|
46
|
-
"Referer" : f"{self.main_url}/"
|
|
47
|
-
})
|
|
48
|
-
|
|
49
|
-
istek = await self.httpx.get(page_url)
|
|
50
|
-
secici = HTMLHelper(istek.text)
|
|
51
|
-
|
|
52
|
-
results = []
|
|
53
|
-
for veri in secici.select("div.movie-poster"):
|
|
54
|
-
alt = secici.select_attr("img", "alt", veri)
|
|
55
|
-
poster = secici.select_attr("img", "src", veri)
|
|
56
|
-
href = secici.select_attr("a", "href", veri)
|
|
57
|
-
|
|
58
|
-
if alt and href:
|
|
59
|
-
results.append(MainPageResult(
|
|
60
|
-
category = category,
|
|
61
|
-
title = alt,
|
|
62
|
-
url = self.fix_url(href),
|
|
63
|
-
poster = self.fix_url(poster),
|
|
64
|
-
))
|
|
65
|
-
|
|
66
|
-
return results
|
|
67
|
-
|
|
68
|
-
async def search(self, query: str) -> list[SearchResult]:
|
|
69
|
-
istek = await self.httpx.get(f"{self.main_url}/?s={query}")
|
|
70
|
-
secici = HTMLHelper(istek.text)
|
|
71
|
-
|
|
72
|
-
results = []
|
|
73
|
-
for veri in secici.select("div.movie-poster"):
|
|
74
|
-
alt = secici.select_attr("img", "alt", veri)
|
|
75
|
-
poster = secici.select_attr("img", "src", veri)
|
|
76
|
-
href = secici.select_attr("a", "href", veri)
|
|
77
|
-
|
|
78
|
-
if alt and href:
|
|
79
|
-
results.append(SearchResult(
|
|
80
|
-
title = alt,
|
|
81
|
-
url = self.fix_url(href),
|
|
82
|
-
poster = self.fix_url(poster),
|
|
83
|
-
))
|
|
84
|
-
|
|
85
|
-
return results
|
|
86
|
-
|
|
87
|
-
async def load_item(self, url: str) -> MovieInfo | SeriesInfo:
|
|
88
|
-
istek = await self.httpx.get(url)
|
|
89
|
-
secici = HTMLHelper(istek.text)
|
|
90
|
-
|
|
91
|
-
title = self.clean_title(secici.select_text("h1"))
|
|
92
|
-
poster = secici.select_poster("div.poster img")
|
|
93
|
-
description = secici.select_text("div.film") or secici.select_attr("meta[property='og:description']", "content")
|
|
94
|
-
year = secici.extract_year("div.yayin-tarihi.info") or secici.regex_first(r"\((\d{4})\)")
|
|
95
|
-
tags = secici.select_texts("div.tur.info a")
|
|
96
|
-
rating = secici.regex_first(r"IMDb\s*([\d\.]+)", secici.select_text("div.imdb"))
|
|
97
|
-
actors = secici.select_direct_text("div.oyuncular")
|
|
98
|
-
|
|
99
|
-
# Kotlin referansı: URL'de -dizi veya tags içinde dizi kontrolü
|
|
100
|
-
is_series = "-dizi" in url.lower() or any("dizi" in tag.lower() for tag in tags)
|
|
101
|
-
|
|
102
|
-
if is_series:
|
|
103
|
-
episodes = []
|
|
104
|
-
for idx, el in enumerate(secici.select("li.psec")):
|
|
105
|
-
part_id = el.attrs.get("id")
|
|
106
|
-
part_name = secici.select_text("a", el) or ""
|
|
107
|
-
if not part_name or "fragman" in part_name.lower(): continue
|
|
108
|
-
|
|
109
|
-
s, e = secici.extract_season_episode(f"{part_id} {part_name}")
|
|
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
|
-
|
|
112
|
-
return SeriesInfo(
|
|
113
|
-
url=url, poster=self.fix_url(poster), title=title, description=description,
|
|
114
|
-
tags=tags, year=year, actors=actors, rating=rating, episodes=episodes
|
|
115
|
-
)
|
|
116
|
-
|
|
117
|
-
return MovieInfo(
|
|
118
|
-
url=url, poster=self.fix_url(poster), title=title, description=description,
|
|
119
|
-
tags=tags, year=year, actors=actors, rating=rating
|
|
120
|
-
)
|
|
121
|
-
|
|
122
|
-
def _get_iframe(self, source_code: str) -> str:
|
|
123
|
-
"""Base64 kodlu iframe'i çözümle"""
|
|
124
|
-
script_val = HTMLHelper(source_code).regex_first(r'<script[^>]*>(PCEtLWJhc2xpazp[^<]*)</script>')
|
|
125
|
-
if not script_val:
|
|
126
|
-
return ""
|
|
127
|
-
|
|
128
|
-
try:
|
|
129
|
-
decoded_html = base64.b64decode(script_val).decode("utf-8")
|
|
130
|
-
iframe_src = HTMLHelper(decoded_html).regex_first(r'<iframe[^>]+src=["\']([^"\']+)["\']')
|
|
131
|
-
return self.fix_url(iframe_src) if iframe_src else ""
|
|
132
|
-
except Exception:
|
|
133
|
-
return ""
|
|
134
|
-
|
|
135
|
-
def _extract_subtitle_url(self, source_code: str) -> str | None:
|
|
136
|
-
"""playerjsSubtitle değişkeninden .srt URL çıkar"""
|
|
137
|
-
patterns = [
|
|
138
|
-
r'var playerjsSubtitle = "\[Türkçe\](https?://[^\s"]+?\.srt)";',
|
|
139
|
-
r'var playerjsSubtitle = "(https?://[^\s"]+?\.srt)";',
|
|
140
|
-
r'subtitle:\s*"(https?://[^\s"]+?\.srt)"',
|
|
141
|
-
]
|
|
142
|
-
|
|
143
|
-
for pattern in patterns:
|
|
144
|
-
val = HTMLHelper(source_code).regex_first(pattern)
|
|
145
|
-
if val:
|
|
146
|
-
return val
|
|
147
|
-
|
|
148
|
-
return None
|
|
149
|
-
|
|
150
|
-
async def load_links(self, url: str) -> list[ExtractResult]:
|
|
151
|
-
self.httpx.headers.update({
|
|
152
|
-
"User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
|
|
153
|
-
"Referer" : self.main_url
|
|
154
|
-
})
|
|
155
|
-
|
|
156
|
-
istek = await self.httpx.get(url)
|
|
157
|
-
source_code = istek.text
|
|
158
|
-
|
|
159
|
-
# Ana sayfadan altyazı URL'sini çek
|
|
160
|
-
subtitle_url = self._extract_subtitle_url(source_code)
|
|
161
|
-
|
|
162
|
-
# Iframe'den altyazı URL'sini çek
|
|
163
|
-
iframe_src = self._get_iframe(source_code)
|
|
164
|
-
|
|
165
|
-
if not subtitle_url and iframe_src:
|
|
166
|
-
iframe_istek = await self.httpx.get(iframe_src)
|
|
167
|
-
subtitle_url = self._extract_subtitle_url(iframe_istek.text)
|
|
168
|
-
|
|
169
|
-
results = []
|
|
170
|
-
|
|
171
|
-
if iframe_src:
|
|
172
|
-
data = await self.extract(iframe_src)
|
|
173
|
-
if data:
|
|
174
|
-
# ExtractResult objesi immutable, yeni bir kopya oluştur
|
|
175
|
-
subtitles = [Subtitle(name="Türkçe", url=subtitle_url)] if subtitle_url else []
|
|
176
|
-
updated_data = data.model_copy(update={"subtitles": subtitles}) if subtitles else data
|
|
177
|
-
results.append(updated_data)
|
|
178
|
-
|
|
179
|
-
return results
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|