KekikStream 2.4.2__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.
Files changed (72) hide show
  1. KekikStream/Core/Extractor/ExtractorBase.py +3 -2
  2. KekikStream/Core/HTMLHelper.py +134 -40
  3. KekikStream/Core/Plugin/PluginBase.py +3 -2
  4. KekikStream/Extractors/CloseLoad.py +30 -54
  5. KekikStream/Extractors/ContentX.py +27 -72
  6. KekikStream/Extractors/DonilasPlay.py +33 -77
  7. KekikStream/Extractors/DzenRu.py +10 -24
  8. KekikStream/Extractors/ExPlay.py +20 -38
  9. KekikStream/Extractors/Filemoon.py +19 -45
  10. KekikStream/Extractors/HDMomPlayer.py +24 -56
  11. KekikStream/Extractors/HDPlayerSystem.py +13 -31
  12. KekikStream/Extractors/HotStream.py +14 -32
  13. KekikStream/Extractors/JFVid.py +3 -24
  14. KekikStream/Extractors/JetTv.py +21 -34
  15. KekikStream/Extractors/MailRu.py +11 -29
  16. KekikStream/Extractors/MixPlayHD.py +15 -28
  17. KekikStream/Extractors/MixTiger.py +17 -40
  18. KekikStream/Extractors/MolyStream.py +17 -21
  19. KekikStream/Extractors/Odnoklassniki.py +28 -104
  20. KekikStream/Extractors/PeaceMakerst.py +18 -45
  21. KekikStream/Extractors/PixelDrain.py +8 -16
  22. KekikStream/Extractors/PlayerFilmIzle.py +22 -41
  23. KekikStream/Extractors/RapidVid.py +21 -35
  24. KekikStream/Extractors/SetPlay.py +18 -43
  25. KekikStream/Extractors/SibNet.py +7 -17
  26. KekikStream/Extractors/Sobreatsesuyp.py +23 -45
  27. KekikStream/Extractors/TRsTX.py +23 -53
  28. KekikStream/Extractors/TurboImgz.py +7 -14
  29. KekikStream/Extractors/VCTPlay.py +10 -28
  30. KekikStream/Extractors/VidHide.py +10 -31
  31. KekikStream/Extractors/VidMoly.py +65 -99
  32. KekikStream/Extractors/VidMoxy.py +16 -27
  33. KekikStream/Extractors/VidPapi.py +24 -54
  34. KekikStream/Extractors/VideoSeyred.py +19 -40
  35. KekikStream/Extractors/Videostr.py +42 -99
  36. KekikStream/Extractors/Vidoza.py +8 -15
  37. KekikStream/Extractors/YildizKisaFilm.py +13 -31
  38. KekikStream/Plugins/BelgeselX.py +63 -69
  39. KekikStream/Plugins/DiziBox.py +16 -36
  40. KekikStream/Plugins/DiziMom.py +37 -129
  41. KekikStream/Plugins/DiziPal.py +71 -164
  42. KekikStream/Plugins/DiziYou.py +44 -152
  43. KekikStream/Plugins/Dizilla.py +18 -44
  44. KekikStream/Plugins/FilmBip.py +10 -24
  45. KekikStream/Plugins/FilmEkseni.py +12 -32
  46. KekikStream/Plugins/FilmMakinesi.py +24 -77
  47. KekikStream/Plugins/FilmModu.py +11 -18
  48. KekikStream/Plugins/Filmatek.py +13 -39
  49. KekikStream/Plugins/Full4kizle.py +33 -133
  50. KekikStream/Plugins/FullHDFilm.py +23 -93
  51. KekikStream/Plugins/FullHDFilmizlesene.py +10 -29
  52. KekikStream/Plugins/HDFilmCehennemi.py +27 -66
  53. KekikStream/Plugins/JetFilmizle.py +19 -20
  54. KekikStream/Plugins/KultFilmler.py +16 -50
  55. KekikStream/Plugins/RecTV.py +47 -85
  56. KekikStream/Plugins/SelcukFlix.py +29 -47
  57. KekikStream/Plugins/SetFilmIzle.py +28 -84
  58. KekikStream/Plugins/SezonlukDizi.py +27 -59
  59. KekikStream/Plugins/Sinefy.py +37 -100
  60. KekikStream/Plugins/SinemaCX.py +12 -18
  61. KekikStream/Plugins/Sinezy.py +11 -12
  62. KekikStream/Plugins/SuperFilmGeldi.py +8 -13
  63. KekikStream/Plugins/UgurFilm.py +14 -14
  64. KekikStream/Plugins/Watch32.py +42 -74
  65. KekikStream/Plugins/YabanciDizi.py +33 -87
  66. {kekikstream-2.4.2.dist-info → kekikstream-2.4.4.dist-info}/METADATA +1 -1
  67. kekikstream-2.4.4.dist-info/RECORD +93 -0
  68. kekikstream-2.4.2.dist-info/RECORD +0 -93
  69. {kekikstream-2.4.2.dist-info → kekikstream-2.4.4.dist-info}/WHEEL +0 -0
  70. {kekikstream-2.4.2.dist-info → kekikstream-2.4.4.dist-info}/entry_points.txt +0 -0
  71. {kekikstream-2.4.2.dist-info → kekikstream-2.4.4.dist-info}/licenses/LICENSE +0 -0
  72. {kekikstream-2.4.2.dist-info → kekikstream-2.4.4.dist-info}/top_level.txt +0 -0
@@ -83,36 +83,30 @@ class SinemaCX(PluginBase):
83
83
  istek = await self.httpx.get(url)
84
84
  secici = HTMLHelper(istek.text)
85
85
 
86
- duration_match = secici.regex_first(r"Süre:.*?(\d+)\s*Dakika")
87
-
86
+ title = secici.select_text("div.f-bilgi h1")
87
+ poster = secici.select_poster("div.resim img")
88
88
  description = secici.select_text("div.ackl div.scroll-liste")
89
-
90
- poster = secici.select_attr("link[rel='image_src']", "href")
91
-
92
- title = secici.select_text("div.f-bilgi h1")
93
-
94
- tags = secici.select_all_text("div.f-bilgi div.tur a")
95
-
96
- year = secici.select_text("div.f-bilgi ul.detay a[href*='yapim']")
97
-
98
- actors = secici.select_all_text("li.oync li.oyuncu-k span.isim")
89
+ rating = secici.select_text("b.puandegistir")
90
+ tags = secici.select_texts("div.f-bilgi div.tur a")
91
+ year = secici.extract_year("ul.detay a[href*='yapim']")
92
+ actors = secici.select_texts("li.oync li.oyuncu-k span.isim")
99
93
 
100
94
  return MovieInfo(
101
95
  url = url,
102
96
  poster = self.fix_url(poster) if poster else None,
103
- title = title,
97
+ title = title or "Bilinmiyor",
104
98
  description = description,
99
+ rating = rating,
105
100
  tags = tags,
106
- year = year,
107
- actors = actors,
108
- duration = int(duration_match) if duration_match else None,
101
+ year = str(year) if year else None,
102
+ actors = actors
109
103
  )
110
104
 
111
105
  async def load_links(self, url: str) -> list[ExtractResult]:
112
106
  istek = await self.httpx.get(url)
113
107
  secici = HTMLHelper(istek.text)
114
108
 
115
- iframe_list = secici.select_all_attr("iframe", "data-vsrc")
109
+ iframe_list = secici.select_attrs("iframe", "data-vsrc")
116
110
 
117
111
  # Sadece fragman varsa /2/ sayfasından dene
118
112
  has_only_trailer = all(
@@ -125,7 +119,7 @@ class SinemaCX(PluginBase):
125
119
  alt_istek = await self.httpx.get(alt_url)
126
120
  alt_istek = await self.httpx.get(alt_url)
127
121
  alt_sec = HTMLHelper(alt_istek.text)
128
- iframe_list = alt_sec.select_all_attr("iframe", "data-vsrc")
122
+ iframe_list = alt_sec.select_attrs("iframe", "data-vsrc")
129
123
 
130
124
  if not iframe_list:
131
125
  return []
@@ -83,29 +83,28 @@ class Sinezy(PluginBase):
83
83
  return results
84
84
 
85
85
  async def load_item(self, url: str) -> MovieInfo:
86
- resp = await self.httpx.get(url)
86
+ resp = await self.httpx.get(url)
87
87
  secici = HTMLHelper(resp.text)
88
88
 
89
- title = secici.select_attr("div.detail", "title")
90
- poster = secici.select_attr("div.move_k img", "data-src")
89
+ title = secici.select_attr("div.detail", "title")
90
+ poster = secici.select_poster("div.move_k img")
91
91
  description = secici.select_text("div.desc.yeniscroll p")
92
- rating = secici.select_text("span.info span.imdb")
93
-
94
- tags = secici.select_all_text("div.detail span a")
95
- actors = secici.select_all_text("span.oyn p")
92
+ rating = secici.select_text("span.info span.imdb")
93
+ tags = secici.select_texts("div.detail span a")
94
+ actors = secici.select_texts("span.oyn p")
95
+ year = secici.extract_year()
96
+ duration = secici.regex_first(r"(\d+) Dakika", secici.select_text("div.detail p"))
96
97
 
97
- year = secici.regex_first(r"\b(19\d{2}|20\d{2})\b")
98
- if not year:
99
- year = secici.regex_first(r"\b(19\d{2}|20\d{2})\b", secici.html)
100
98
  return MovieInfo(
101
- title = title,
102
99
  url = url,
103
100
  poster = self.fix_url(poster) if poster else None,
101
+ title = title or "Bilinmiyor",
104
102
  description = description,
105
103
  tags = tags,
106
104
  rating = rating,
105
+ year = str(year) if year else None,
107
106
  actors = actors,
108
- year = year
107
+ duration = duration
109
108
  )
110
109
 
111
110
  async def load_links(self, url: str) -> list[ExtractResult]:
@@ -79,26 +79,21 @@ class SuperFilmGeldi(PluginBase):
79
79
  istek = await self.httpx.get(url)
80
80
  secici = HTMLHelper(istek.text)
81
81
 
82
- title = secici.select_text("div.title h1") or ""
83
- title = self.clean_title(title.split(" izle")[0]) if title else ""
84
-
85
- poster = secici.select_attr("div.poster img", "src")
86
-
87
- year = secici.extract_year("div.release a")
88
-
82
+ title = self.clean_title(secici.select_text("div.title h1").split(" izle")[0]) if secici.select_text("div.title h1") else ""
83
+ poster = secici.select_poster("div.poster img")
84
+ year = secici.extract_year("div.release a")
89
85
  description = secici.select_text("div.excerpt p")
90
-
91
- tags = secici.select_all_text("div.categories a")
92
- actors = secici.select_all_text("div.actor a")
86
+ tags = secici.select_texts("div.categories a")
87
+ actors = secici.select_texts("div.actor a")
93
88
 
94
89
  return MovieInfo(
95
90
  url = url,
96
91
  poster = self.fix_url(poster) if poster else None,
97
- title = title,
92
+ title = title or "Bilinmiyor",
98
93
  description = description,
99
94
  tags = tags,
100
- year = year,
101
- actors = actors,
95
+ year = str(year) if year else None,
96
+ actors = actors
102
97
  )
103
98
 
104
99
  async def load_links(self, url: str) -> list[ExtractResult]:
@@ -68,25 +68,25 @@ class UgurFilm(PluginBase):
68
68
  istek = await self.httpx.get(url)
69
69
  secici = HTMLHelper(istek.text)
70
70
 
71
- title = secici.select_text("div.bilgi h2") or ""
72
- poster = secici.select_attr("div.resim img", "src") or ""
73
- description = secici.select_text("div.slayt-aciklama") or ""
74
-
75
- tags = secici.select_all_text("p.tur a[href*='/category/']")
76
-
77
- year_val = secici.extract_year("a[href*='/yil/']")
78
- year = str(year_val) if year_val else None
79
-
80
- actors = secici.select_all_text("li.oyuncu-k span")
71
+ title = secici.select_text("div.bilgi h2")
72
+ poster = secici.select_poster("div.resim img")
73
+ description = secici.select_text("div.slayt-aciklama")
74
+ rating = secici.select_text("b#puandegistir")
75
+ tags = secici.select_texts("p.tur a[href*='/category/']")
76
+ year = secici.extract_year("a[href*='/yil/']")
77
+ actors = secici.select_texts("li.oyuncu-k span")
78
+ duration = secici.regex_first(r"(\d+) Dakika", secici.select_text("div.bilgi b"))
81
79
 
82
80
  return MovieInfo(
83
- url = self.fix_url(url),
81
+ url = url,
84
82
  poster = self.fix_url(poster) if poster else None,
85
- title = title,
83
+ title = title or "Bilinmiyor",
86
84
  description = description,
85
+ rating = rating,
87
86
  tags = tags,
88
- year = year,
87
+ year = str(year) if year else None,
89
88
  actors = actors,
89
+ duration = duration
90
90
  )
91
91
 
92
92
  async def load_links(self, url: str) -> list[ExtractResult]:
@@ -94,7 +94,7 @@ class UgurFilm(PluginBase):
94
94
  secici = HTMLHelper(istek.text)
95
95
  results = []
96
96
 
97
- part_links = secici.select_all_attr("li.parttab a", "href")
97
+ part_links = secici.select_attrs("li.parttab a", "href")
98
98
 
99
99
  for part_link in part_links:
100
100
  sub_response = await self.httpx.get(part_link)
@@ -76,86 +76,54 @@ class Watch32(PluginBase):
76
76
  istek = await self.httpx.get(url)
77
77
  helper = HTMLHelper(istek.text)
78
78
 
79
- content_id = helper.select_attr("div.detail_page-watch", "data-id")
80
- details = helper.select_first("div.detail_page-infor")
81
- name = helper.select_text("h2.heading-name > a", details)
82
-
83
- poster = helper.select_attr("div.film-poster > img", "src", details)
79
+ content_id = helper.select_attr("div.detail_page-watch", "data-id")
80
+ details = helper.select_first("div.detail_page-infor")
81
+ name = helper.select_text("h2.heading-name > a", details)
82
+ poster = helper.select_poster("div.film-poster > img", details)
84
83
  description = helper.select_text("div.description", details)
85
-
86
- # Release year extraction
87
- year_text = helper.regex_first(r"Released:\s*(\d{4})")
88
- if not year_text:
89
- # Fallback for series
90
- year_text = helper.regex_first(r"Released:.+?(\d{4})")
91
-
92
- # Tags/Genres
93
- tags = helper.select_all_text("div.row-line:has(> span.type > strong:contains(Genre)) a")
94
-
95
- # Rating
96
- rating = helper.select_text("button.btn-imdb")
97
- if rating:
98
- rating = rating.replace("N/A", "").split(":")[-1].strip()
84
+ year = str(helper.extract_year())
85
+ tags = helper.meta_list("Genre", container_selector="div.row-line")
86
+ rating = helper.select_text("button.btn-imdb").replace("N/A", "").split(":")[-1].strip() if helper.select_text("button.btn-imdb") else None
87
+ actors = helper.meta_list("Casts", container_selector="div.row-line")
99
88
 
100
- # Actors
101
- actors = helper.select_all_text("div.row-line:has(> span.type > strong:contains(Casts)) a")
89
+ common_info = {
90
+ "url" : url,
91
+ "poster" : self.fix_url(poster),
92
+ "title" : name or "Bilinmiyor",
93
+ "description" : description,
94
+ "tags" : tags,
95
+ "rating" : rating,
96
+ "year" : year,
97
+ "actors" : actors
98
+ }
102
99
 
103
100
  if "movie" in url:
104
- return MovieInfo(
105
- url = url,
106
- poster = self.fix_url(poster),
107
- title = name,
108
- description = description,
109
- tags = tags,
110
- rating = rating,
111
- year = year_text,
112
- actors = actors
113
- )
114
- else:
115
- episodes = []
116
- seasons_resp = await self.httpx.get(f"{self.main_url}/ajax/season/list/{content_id}")
117
- sh = HTMLHelper(seasons_resp.text)
118
- seasons = sh.select("a.dropdown-item") # Relaxed selector from a.ss-item
101
+ return MovieInfo(**common_info)
102
+
103
+ episodes = []
104
+ seasons_resp = await self.httpx.get(f"{self.main_url}/ajax/season/list/{content_id}")
105
+ sh = HTMLHelper(seasons_resp.text)
106
+
107
+ for season in sh.select("a.dropdown-item"):
108
+ season_id = season.attrs.get("data-id")
109
+ s_val, _ = sh.extract_season_episode(season.text())
119
110
 
120
- for season in seasons:
121
- season_id = season.attrs.get("data-id")
122
- season_num_text = season.text().replace("Season ", "").replace("Series", "").strip()
123
- season_num = int(season_num_text) if season_num_text.isdigit() else 1
124
-
125
- episodes_resp = await self.httpx.get(f"{self.main_url}/ajax/season/episodes/{season_id}")
126
- eh = HTMLHelper(episodes_resp.text)
127
- eps = eh.select("a.eps-item")
128
-
129
- for ep in eps:
130
- ep_id = ep.attrs.get("data-id")
131
- ep_title_raw = ep.attrs.get("title", "")
132
- # Eps 1: Name
133
- m = re.search(r"Eps (\d+): (.+)", ep_title_raw)
134
- if m:
135
- ep_num = int(m.group(1))
136
- ep_name = m.group(2)
137
- else:
138
- ep_num = 1
139
- ep_name = ep_title_raw
140
-
141
- episodes.append(Episode(
142
- season = season_num,
143
- episode = ep_num,
144
- title = ep_name,
145
- url = f"servers/{ep_id}"
146
- ))
111
+ e_resp = await self.httpx.get(f"{self.main_url}/ajax/season/episodes/{season_id}")
112
+ eh = HTMLHelper(e_resp.text)
147
113
 
148
- return SeriesInfo(
149
- url = url,
150
- poster = self.fix_url(poster),
151
- title = name,
152
- description = description,
153
- tags = tags,
154
- rating = rating,
155
- year = year_text,
156
- actors = actors,
157
- episodes = episodes
158
- )
114
+ for ep in eh.select("a.eps-item"):
115
+ ep_id = ep.attrs.get("data-id")
116
+ ep_title = ep.attrs.get("title", "")
117
+ _, e_val = eh.extract_season_episode(ep_title)
118
+
119
+ episodes.append(Episode(
120
+ season = s_val or 1,
121
+ episode = e_val or 1,
122
+ title = ep_title,
123
+ url = f"servers/{ep_id}"
124
+ ))
125
+
126
+ return SeriesInfo(**common_info, episodes=episodes)
159
127
 
160
128
  async def load_links(self, url: str) -> list[ExtractResult]:
161
129
  # url in load_links might be the full page URL for movies or "servers/epId" for episodes
@@ -84,97 +84,43 @@ class YabanciDizi(PluginBase):
84
84
  resp = await self.httpx.get(url, follow_redirects=True)
85
85
  sel = HTMLHelper(resp.text)
86
86
 
87
- og_title = sel.select_attr("meta[property='og:title']", "content")
88
- title = og_title.split("|")[0].strip() if og_title else sel.select_text("h1")
89
-
90
- poster = sel.select_attr("meta[property='og:image']", "content")
87
+ title = (sel.select_attr("meta[property='og:title']", "content") or "").split("|")[0].strip() or sel.select_text("h1")
88
+ poster = sel.select_poster("meta[property='og:image']")
91
89
  description = sel.select_text("p#tv-series-desc")
90
+ year = sel.extract_year("td div.truncate")
91
+ tags = sel.meta_list("Türü", container_selector="div.item")
92
+ rating = sel.meta_value("IMDb Puanı", container_selector="div.item")
93
+ duration = int(sel.regex_first(r"(\d+)", sel.meta_value("Süre", container_selector="div.item")) or 0)
94
+ actors = sel.meta_list("Oyuncular", container_selector="div.item") or sel.select_texts("div#common-cast-list div.item h5")
92
95
 
93
- # Try to extract year from table first
94
- year_cell = sel.select_text("td div.truncate")
95
- year = None
96
- if year_cell:
97
- year_match = sel.regex_first(r"(\d{4})", year_cell)
98
- if year_match:
99
- year = year_match
100
-
101
- tags = []
102
- rating = None
103
- duration = None
104
- actors = []
105
- for item in sel.select("div.item"):
106
- text = item.text(strip=True)
107
- if "T\u00fcr\u00fc:" in text:
108
- tags = [t.strip() for t in text.replace("T\u00fcr\u00fc:", "").split(",")]
109
- elif "IMDb Puan\u0131" in text:
110
- rating = text.replace("IMDb Puan\u0131", "").strip()
111
- elif "Yap\u0131m Y\u0131l\u0131" in text:
112
- year_match = sel.regex_first(r"(\d{4})", text)
113
- if year_match:
114
- year = year_match
115
- elif "Takip\u00e7iler" in text:
116
- continue
117
- elif "S\u00fcre" in text:
118
- dur_match = sel.regex_first(r"(\d+)", text)
119
- if dur_match:
120
- duration = dur_match
121
- elif "Oyuncular:" in text:
122
- actors = [a.text(strip=True) for a in sel.select("a", item)]
123
-
124
- if not actors:
125
- actors = [a.text(strip=True) for a in sel.select("div#common-cast-list div.item h5")]
126
-
127
- trailer_match = sel.regex_first(r"embed\/(.*)\?rel", resp.text)
128
- trailer = f"https://www.youtube.com/embed/{trailer_match}" if trailer_match else None
96
+ common_info = {
97
+ "url" : url,
98
+ "poster" : self.fix_url(poster) if poster else None,
99
+ "title" : title or "Bilinmiyor",
100
+ "description" : description,
101
+ "tags" : tags,
102
+ "rating" : rating,
103
+ "year" : str(year) if year else None,
104
+ "actors" : actors,
105
+ "duration" : duration
106
+ }
129
107
 
130
108
  if "/film/" in url:
131
- return MovieInfo(
132
- title = title,
133
- url = url,
134
- poster = self.fix_url(poster) if poster else None,
135
- description = description,
136
- rating = rating,
137
- tags = tags,
138
- actors = actors,
139
- year = year,
140
- duration = int(duration) if duration and duration.isdigit() else None
141
- )
142
- else:
143
- episodes = []
144
- for bolum_item in sel.select("div.episodes-list div.ui td:has(h6)"):
145
- link_el = sel.select_first("a", bolum_item)
146
- if not link_el: continue
147
-
148
- bolum_href = link_el.attrs.get("href")
149
- bolum_name = sel.select_text("h6", bolum_item) or link_el.text(strip=True)
150
-
151
- season = sel.regex_first(r"sezon-(\d+)", bolum_href)
152
- episode = sel.regex_first(r"bolum-(\d+)", bolum_href)
153
-
154
- ep_season = int(season) if season and season.isdigit() else None
155
- ep_episode = int(episode) if episode and episode.isdigit() else None
156
-
157
- episodes.append(Episode(
158
- season = ep_season,
159
- episode = ep_episode,
160
- title = bolum_name,
161
- url = self.fix_url(bolum_href)
162
- ))
163
-
164
- if episodes and (episodes[0].episode or 0) > (episodes[-1].episode or 0):
165
- episodes.reverse()
166
-
167
- return SeriesInfo(
168
- title = title,
169
- url = url,
170
- poster = self.fix_url(poster) if poster else None,
171
- description = description,
172
- rating = rating,
173
- tags = tags,
174
- actors = actors,
175
- year = year,
176
- episodes = episodes
177
- )
109
+ return MovieInfo(**common_info)
110
+
111
+ episodes = []
112
+ for bolum in sel.select("div.episodes-list div.ui td:has(h6)"):
113
+ link = sel.select_first("a", bolum)
114
+ if link:
115
+ href = link.attrs.get("href")
116
+ name = sel.select_text("h6", bolum) or link.text(strip=True)
117
+ s, e = sel.extract_season_episode(href)
118
+ episodes.append(Episode(season=s or 1, episode=e or 1, title=name, url=self.fix_url(href)))
119
+
120
+ if episodes and (episodes[0].episode or 0) > (episodes[-1].episode or 0):
121
+ episodes.reverse()
122
+
123
+ return SeriesInfo(**common_info, episodes=episodes)
178
124
 
179
125
  async def load_links(self, url: str) -> list[ExtractResult]:
180
126
  # Use cloudscraper to bypass Cloudflare
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: KekikStream
3
- Version: 2.4.2
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
@@ -0,0 +1,93 @@
1
+ KekikStream/__init__.py,sha256=nTgIxO1716DVX-cZnMvwi6OjPbuebFyeYpHvpqCJ0Js,12767
2
+ KekikStream/__main__.py,sha256=B81dQoeGEb-T5Sycs3eNAmW7unvx0Mef0syCjs4nPds,137
3
+ KekikStream/requirements.txt,sha256=V-Rk-4DnK8B-HRR6RtSKmTR3sHfaYgOrnBj8kmVz17w,80
4
+ KekikStream/CLI/__init__.py,sha256=U6oLq_O7u5y2eHhBnmfhZNns_EqHHJXJmzl8jvZFUNY,230
5
+ KekikStream/CLI/pypi_kontrol.py,sha256=q6fNs6EKJDc5VuUFig9DBzLzNPp_kMD1vOVgLElcii8,1487
6
+ KekikStream/Core/HTMLHelper.py,sha256=JI677_XerQc6ZwKDpwoCzfyHlKDekEWDuHgsEFOPu50,9792
7
+ KekikStream/Core/__init__.py,sha256=sk2pWup1_jsGB43HJzbbqgQYFDZpf2TquEBYUhqOdN4,807
8
+ KekikStream/Core/Extractor/ExtractorBase.py,sha256=9Q79wULey2Nl254MUkiulhxZzGyb2C1H3mOUh4t0MN0,2077
9
+ KekikStream/Core/Extractor/ExtractorLoader.py,sha256=GPGCmgFpDBywR8CsNw43-ddseZhSKTjAUETp1Ohbi6E,4796
10
+ KekikStream/Core/Extractor/ExtractorManager.py,sha256=VYkj4CCE5Puqsr6PCeN8i_OS0hfYKI4NScj98BLO39o,2644
11
+ KekikStream/Core/Extractor/ExtractorModels.py,sha256=Qj_gbIeGRewaZXNfYkTi4FFRRq6XBOc0HS0tXGDwajI,445
12
+ KekikStream/Core/Extractor/YTDLPCache.py,sha256=sRg5kwFxkRXA_8iRwsV29E51g9qQJvg8dWUnzfr7EwA,984
13
+ KekikStream/Core/Media/MediaHandler.py,sha256=MEn3spPAThVloN3WcoCwWhpoyMA7tAZvcwYjmjJsX3U,7678
14
+ KekikStream/Core/Media/MediaManager.py,sha256=AaUq2D7JSJIphjoAj2fjLOJjswm7Qf5hjYCbBdrbnDU,438
15
+ KekikStream/Core/Plugin/PluginBase.py,sha256=ciZGztbXzm2co3WZBjnghtbQuxH4jUMRmjInvS0WDeI,6692
16
+ KekikStream/Core/Plugin/PluginLoader.py,sha256=6LE5id0571bB-gJZxaLfd973XcG6oaGeMhLVcYYY7kw,3768
17
+ KekikStream/Core/Plugin/PluginManager.py,sha256=6a0Q2mHtzIpx1ttdSTsVHg2HfLJIO0r_iHjK3Kui1Rw,939
18
+ KekikStream/Core/Plugin/PluginModels.py,sha256=7g1uHjJstfnrdTabDgyrBnu1ojIQ025hsmw85cDXFS8,2353
19
+ KekikStream/Core/UI/UIManager.py,sha256=T4V_kdTTWa-UDamgLSKa__dWJuzcvRK9NuwBlzU9Bzc,1693
20
+ KekikStream/Extractors/CloseLoad.py,sha256=eoXr9Dxgfy3BUdQpXrvS69bqCFBmag95cmJLGhsHslE,1922
21
+ KekikStream/Extractors/ContentX.py,sha256=832xDeKoudQYJBRxJntOuJ0G8xYFVq2vHhycdnzcMeg,2539
22
+ KekikStream/Extractors/DonilasPlay.py,sha256=yIh6ZOVjXzHKc_Zi8j0Cpr4vWibwkSeoZxeFfU8IfmQ,1844
23
+ KekikStream/Extractors/DzenRu.py,sha256=tUrQexHkclw9EdoFD_ACejW-QwlOnTDFTxA0v-1jIVU,932
24
+ KekikStream/Extractors/ExPlay.py,sha256=hrG31pRFD5s_0wNls0fF8AdMn6ve5OD-mOAV32_1H2I,1324
25
+ KekikStream/Extractors/Filemoon.py,sha256=y3VQpTVR2o4PGbRfLEXOlxQ0NM-JblaMUpoFhpka5iI,2263
26
+ KekikStream/Extractors/HDMomPlayer.py,sha256=ui8aH9sc3NDlN2uKlhJiySUHA__mpSSvAPHRzde6F2k,1177
27
+ KekikStream/Extractors/HDPlayerSystem.py,sha256=hoPN7fqVRBK97BnQ7vF_5TlEO28BD3DrsngDW48rw5E,936
28
+ KekikStream/Extractors/HotStream.py,sha256=37H9pK4HSEqGR6QKgxz887JCBXfXB1NXDpBGuhvPmXo,1078
29
+ KekikStream/Extractors/JFVid.py,sha256=rdy0bmqZIruejn1G1YNxVM3wlqxkdFRd4zunxxZlev4,746
30
+ KekikStream/Extractors/JetTv.py,sha256=Cdx1XZEtQZkrmOdZdgM9E1iBkCNzVTExjrI_F-3Nv-I,1176
31
+ KekikStream/Extractors/MailRu.py,sha256=n87wBc9jQ4nP8OJbqS7LsHHCKuRxlsgdtL_xHVn0rdY,779
32
+ KekikStream/Extractors/MixPlayHD.py,sha256=otA2SKDnJisY4Zt9DCuNdjNVHtSquHoMVvP3_5Q0poY,1205
33
+ KekikStream/Extractors/MixTiger.py,sha256=kF_AKkJoyAS6peQ94eu3pLzS-VeZ_8IYjpaDrTo3x_I,1135
34
+ KekikStream/Extractors/MolyStream.py,sha256=L38rydMtnRxeqHjLK4vOLMC7FspbyTPdILEjE-gsbYc,1531
35
+ KekikStream/Extractors/Odnoklassniki.py,sha256=V790IUkMeYjim9Hx4hjWF0OWu6AhMTaLq3fMwAqtQNc,1577
36
+ KekikStream/Extractors/PeaceMakerst.py,sha256=0YE-IASOoSoQi4AITKkX7IyGcyfq_ZhmFmqw2q2TZ_U,1491
37
+ KekikStream/Extractors/PixelDrain.py,sha256=BYu8UmVNw3EL75Z1X8NszWPfFarmry_3chWRO1JoKCs,780
38
+ KekikStream/Extractors/PlayerFilmIzle.py,sha256=GVB2Ly3381IGIc1FztFS35mHVIMQjcc2_IW8KvWYBdI,1877
39
+ KekikStream/Extractors/RapidVid.py,sha256=4nWqTNfJ70Qq67LgaYjnUU4NrHwbeqRN9uldo0j941E,3028
40
+ KekikStream/Extractors/SetPlay.py,sha256=uWkXimWc5olsYLK46l440Pp8WgehbctM323n9PwoEJs,1556
41
+ KekikStream/Extractors/SetPrime.py,sha256=5xqB72D8FjH3JNrbynA75y_n_aUFZ2vXSr1MY3nZ4cU,1495
42
+ KekikStream/Extractors/SibNet.py,sha256=67FS1yLUWf_ZBkVehRiYu2pFkIdNO4-2EZEomCHo8Jk,692
43
+ KekikStream/Extractors/Sobreatsesuyp.py,sha256=IORS2fXauATYiN4sdU_WuSfsbFUhphxqsGq7C6mzaEw,1484
44
+ KekikStream/Extractors/TRsTX.py,sha256=l425nQZciyYEJjOJ1nyPhDnmD-4bI9O16V6lJhY98Os,1444
45
+ KekikStream/Extractors/TauVideo.py,sha256=2ai9BwwM6qlCgxK7E0B642LtOF5y4hEb9tQ2aDpbMtc,1112
46
+ KekikStream/Extractors/TurboImgz.py,sha256=-RyC4EWtJdK85Ei01lntqivnSmk4tXOlmSXv70cQJ70,679
47
+ KekikStream/Extractors/TurkeyPlayer.py,sha256=zdX0IOO3M-kgAYWex2WwJJu9aGf8WhOY-ZIrRmZRiC0,1246
48
+ KekikStream/Extractors/VCTPlay.py,sha256=MdCH9GhhKod4oPT3ePH8rhicUWuNT-GsE42S72o1NJ4,876
49
+ KekikStream/Extractors/VidHide.py,sha256=xJSferkaCLOQ-kLgsA_eDZCmGagiL2711boOdogOlWw,1918
50
+ KekikStream/Extractors/VidMoly.py,sha256=awrjBtxtP2xEr8xRTCH1JcnRattzIAdxGE2rDd9czDg,4132
51
+ KekikStream/Extractors/VidMoxy.py,sha256=qTkTFRqTgQVi-E94zY5lQC2-AYFhkl8LqaOJpgGdErc,1452
52
+ KekikStream/Extractors/VidPapi.py,sha256=yqjA5gadCE2lZ9ksT6zZOz-1zCcCYJxZsg0Ccgz2X10,1988
53
+ KekikStream/Extractors/VideoSeyred.py,sha256=sNxw5OHQ8AzRJIRGXGjql8nK1E6Cbg9qhKP5PuOyeM8,1216
54
+ KekikStream/Extractors/Videostr.py,sha256=CGL9GDzN0QzDir6ss8oUvDYYbGt2k8323P2_z5tVZVI,2563
55
+ KekikStream/Extractors/Vidoza.py,sha256=VSqCI-SYnLh6COnLHpg0feRX37t2WhPxbo08us5wCcc,655
56
+ KekikStream/Extractors/YTDLP.py,sha256=Hy8loCSFSquu2zaL3INord-Jm6T8CM6K2-VcDA2K79g,7390
57
+ KekikStream/Extractors/YildizKisaFilm.py,sha256=jeCCSIwZvQUr-CSylleUIP--JtN18_wUGl0vQXMCsV4,936
58
+ KekikStream/Plugins/BelgeselX.py,sha256=0LZYeV8ve2HGsNvuqACltP7eI_nZyjoCBjeYWMokUXY,9175
59
+ KekikStream/Plugins/DiziBox.py,sha256=F0X_vUVFbzFIgo504dyXjJkJIB6OxoHRxD3CCBUNsxg,10087
60
+ KekikStream/Plugins/DiziMom.py,sha256=0kOXekDk9-I-rRgQZmKH0pZmYDgfdkS2PXOBbTlhI0g,6776
61
+ KekikStream/Plugins/DiziPal.py,sha256=gDj_7iJaP5WIoRWKZmvF6Q6nbPm8TBw9jAjbk_E75NA,7352
62
+ KekikStream/Plugins/DiziYou.py,sha256=ZgHVTEeXhLC5aNP7MeeIcmLxqAPPzj0WWOiZHHpkAho,6550
63
+ KekikStream/Plugins/Dizilla.py,sha256=GmA__LCUAMTQ0tbbeWiH8h_aA6Rw7k2chAJZRsDifjg,12908
64
+ KekikStream/Plugins/FilmBip.py,sha256=gHdYHEZjDBPkajQjqBZGVhbs97zDr5mF_cVSUKn8ljE,6018
65
+ KekikStream/Plugins/FilmEkseni.py,sha256=odqu-PM2L8iEsO97MVNTsHmyVWTgnudOlVMv1o9izC8,5352
66
+ KekikStream/Plugins/FilmMakinesi.py,sha256=OGZHkNVx4jgsKvY1GpumtkNxKG9eAH9n9xOP3xyDC7g,6341
67
+ KekikStream/Plugins/FilmModu.py,sha256=yzGe0uMPgkq2n6bhuS2W7P_hIIeJPW1J4dHXmgkq6-8,7073
68
+ KekikStream/Plugins/Filmatek.py,sha256=TuTV4bl0NdgKjR_fQBVc8wzGWdHN0h-NDm2kbvWbMeg,7260
69
+ KekikStream/Plugins/Full4kizle.py,sha256=h0cwOiV1ELptDG1IzwJU4qdzQm7vzWI6sFFcbfmBXJk,7783
70
+ KekikStream/Plugins/FullHDFilm.py,sha256=MkobrrzHTc8t6AYdcSOD2rpUOdKnkpXsUZezcqICDhE,8183
71
+ KekikStream/Plugins/FullHDFilmizlesene.py,sha256=BetcwSyMtNOrOT4tjmJ_Na8u4Popf3S4V1Gw5vys0jw,6470
72
+ KekikStream/Plugins/HDFilmCehennemi.py,sha256=WgwoqHpHYJUd78TR_hNfgJEc0raR7MDPsNo7A5nt3fc,11954
73
+ KekikStream/Plugins/JetFilmizle.py,sha256=LQaOv70QOe6t7oQB2aao7eSBQjeCyFjNID2OESXXUOY,8280
74
+ KekikStream/Plugins/KultFilmler.py,sha256=KfsfvFwEJ_rgMOmBHA-5iSIEe-iCZtO-RG1nh1AOnJw,8559
75
+ KekikStream/Plugins/RecTV.py,sha256=MRoP8KQF2V9kVlRNTQkRz9YFkBmMy3_skiNE47-RAlk,7151
76
+ KekikStream/Plugins/RoketDizi.py,sha256=KiX7Xf5IyPPJ-CVcJLM9qc0M6Fi2dhg7zU3EgWkICXA,9318
77
+ KekikStream/Plugins/SelcukFlix.py,sha256=1_v7-aqbOrWPNUHUL0n1mpUm29wUXrtfRbMMvD9sL9k,14520
78
+ KekikStream/Plugins/SetFilmIzle.py,sha256=oj32n7QWersZMymjfwt9QPxWhWj2YlIhOtehnMMYqoY,9172
79
+ KekikStream/Plugins/SezonlukDizi.py,sha256=WCfMqoCX3_4mVF6_N5K5WzJIveb4jNmd0IrfM8pxqQ8,8511
80
+ KekikStream/Plugins/SineWix.py,sha256=z0r90lggAugEWE1g9vg8gZsInBObUZPnVFQwq7GYmJs,7052
81
+ KekikStream/Plugins/Sinefy.py,sha256=oLp2jtNa-3l_vS1Z8sqcsTyKmiY-xJq0-cFQ6KC8L4c,8603
82
+ KekikStream/Plugins/SinemaCX.py,sha256=q9ZNnkUxGotTzjslzoJu1GzZDF31J3RayzeUAfAsGzw,7688
83
+ KekikStream/Plugins/Sinezy.py,sha256=KHo8_vIW-aJh2ix72kGB54Wdw8PLmik78zzIwAxrspA,5811
84
+ KekikStream/Plugins/SuperFilmGeldi.py,sha256=wfhbZLNAuiz57KOarSrsoMLLpr9-zd6zjp7AmUisaBY,6402
85
+ KekikStream/Plugins/UgurFilm.py,sha256=WIdyu8X1ZdixigumEwEpZjtbM-melHfvT_u5N349oN4,5116
86
+ KekikStream/Plugins/Watch32.py,sha256=NeESk1unb5SYs6kwkb3dDymv2yYOkRU2QJCPI9izXKk,7915
87
+ KekikStream/Plugins/YabanciDizi.py,sha256=cTAREfia6df-rLeXDhxLCrKRHeZI_l_-nhjgIAD1jNA,9975
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,,