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.

@@ -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/VidHide.py,sha256=xJSferkaCLOQ-kLgsA_eDZCmGagiL2711boOdogOlWw,1918
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/Plugins/BelgeselX.py,sha256=EpF57qtOvFsQF5_KLyYm6rL6dqSz-3gPEYt1g-z0Ds8,9633
59
- KekikStream/Plugins/DiziBox.py,sha256=HhDt38Rmwgi2HpmaCrP_QLX_eiSftpwQOmyJoFmcfpo,10198
60
- KekikStream/Plugins/DiziMom.py,sha256=RuOMwqwZ0_sVqkkpVig9QOu7tPGFh2TIeAsacRDJywU,7401
61
- KekikStream/Plugins/DiziPal.py,sha256=b3oa3s-WyS3sUbR5Zumd2qbt-4vq-3B1di8b6x3R4Fg,7935
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=dAz-N1LCb0fXmppn45mzGnFMSSNcO2mGo_QbwuDhaYY,12697
64
- KekikStream/Plugins/FilmBip.py,sha256=PIvSFUnxtfPjUeNFnxpIgFkXnLzBddGoqq6kDE3xc1g,9248
65
- KekikStream/Plugins/FilmEkseni.py,sha256=rtnjvcR6i6wBvGHi7ebtjJRYOLkbmV3zxcBZflrog8w,6778
66
- KekikStream/Plugins/FilmMakinesi.py,sha256=v_8eSGcN9oIjz909RjHpIM8nDuvbtBxmKkm2ErNy8JU,6579
67
- KekikStream/Plugins/FilmModu.py,sha256=hTY4zKaby2UYbyXSOO6JbFO0XtlPhZxei4VEBGZO7u8,6944
68
- KekikStream/Plugins/Filmatek.py,sha256=nBCxYxqOqnLqCFMYLJF4Cg4-bdOnkTYKbntLu-kyryY,7758
69
- KekikStream/Plugins/Full4kizle.py,sha256=O2Sarvc1aUZAJTHhmrEFkMeD3vp04dWVjjWco2eP6yU,7665
70
- KekikStream/Plugins/FullHDFilm.py,sha256=sUbN5WaHGX2pkB8DbEjuPsJ-ZC8t7OED7qV0xgd8oro,8045
71
- KekikStream/Plugins/FullHDFilmizlesene.py,sha256=e0BDIIAa755Q5MfLDCIWm0ZaRUy-jCMCM7RfBOqZrEE,6315
72
- KekikStream/Plugins/HDFilmCehennemi.py,sha256=MWpZ_nzGj5LoSDHsUQGGQA8NHwWRZFNT04dlSt0fVwY,11862
73
- KekikStream/Plugins/JetFilmizle.py,sha256=D3feoxmTNhOMH6d0LwGdYnGVfvUkMmjrNdj3Yo5teOQ,8181
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.7.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
89
- kekikstream-2.4.7.dist-info/METADATA,sha256=SZ9V_cdt-fB5d-tNdb7d3IGVrA1HBO3mauAN7OvpeV0,10745
90
- kekikstream-2.4.7.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
91
- kekikstream-2.4.7.dist-info/entry_points.txt,sha256=dFwdiTx8djyehI0Gsz-rZwjAfZzUzoBSrmzRu9ubjJc,50
92
- kekikstream-2.4.7.dist-info/top_level.txt,sha256=DNmGJDXl27Drdfobrak8KYLmocW_uznVYFJOzcjUgmY,12
93
- kekikstream-2.4.7.dist-info/RECORD,,
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