KekikStream 0.3.7__py3-none-any.whl → 0.3.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.
@@ -2,6 +2,7 @@
2
2
 
3
3
  from abc import ABC, abstractmethod
4
4
  from httpx import AsyncClient, Timeout
5
+ from cloudscraper import CloudScraper
5
6
  from typing import Optional
6
7
  from .ExtractorModels import ExtractResult
7
8
 
@@ -17,6 +18,7 @@ class ExtractorBase(ABC):
17
18
  },
18
19
  timeout = Timeout(10.0)
19
20
  )
21
+ self.cloudscraper = CloudScraper()
20
22
 
21
23
  def can_handle_url(self, url: str) -> bool:
22
24
  """URL'nin bu extractor tarafından işlenip işlenemeyeceğini kontrol eder."""
@@ -5,7 +5,10 @@ from .ExtractorModels import ExtractResult
5
5
  import subprocess, os
6
6
 
7
7
  class MediaHandler:
8
- def __init__(self, title: str = "KekikStream", headers: dict = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5)"}):
8
+ def __init__(self, title: str = "KekikStream", headers: dict = None):
9
+ if headers is None:
10
+ headers = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5)"}
11
+
9
12
  self.headers = headers
10
13
  self.title = title
11
14
 
@@ -29,16 +32,16 @@ class MediaHandler:
29
32
  if "Referer" in self.headers:
30
33
  vlc_command.append(f"--http-referrer={self.headers.get('Referer')}")
31
34
 
32
- for subtitle in extract_data.subtitles:
33
- vlc_command.append(f"--sub-file={subtitle.url}")
34
-
35
+ vlc_command.extend(
36
+ f"--sub-file={subtitle.url}" for subtitle in extract_data.subtitles
37
+ )
35
38
  vlc_command.append(extract_data.url)
36
39
 
37
40
  with open(os.devnull, "w") as devnull:
38
41
  subprocess.run(vlc_command, stdout=devnull, stderr=devnull, check=True)
39
42
 
40
- except subprocess.CalledProcessError as e:
41
- konsol.print(f"[red]VLC oynatma hatası: {e}[/red]")
43
+ except subprocess.CalledProcessError as hata:
44
+ konsol.print(f"[red]VLC oynatma hatası: {hata}[/red]")
42
45
  konsol.print({"title": self.title, "url": extract_data.url, "headers": self.headers})
43
46
  except FileNotFoundError:
44
47
  konsol.print("[red]VLC bulunamadı! VLC kurulu olduğundan emin olun.[/red]")
@@ -60,16 +63,16 @@ class MediaHandler:
60
63
  if "Cookie" in self.headers:
61
64
  mpv_command.append(f"--http-header-fields=Cookie: {self.headers.get('Cookie')}")
62
65
 
63
- for subtitle in extract_data.subtitles:
64
- mpv_command.append(f"--sub-file={subtitle.url}")
65
-
66
+ mpv_command.extend(
67
+ f"--sub-file={subtitle.url}" for subtitle in extract_data.subtitles
68
+ )
66
69
  mpv_command.append(extract_data.url)
67
70
 
68
71
  with open(os.devnull, "w") as devnull:
69
72
  subprocess.run(mpv_command, stdout=devnull, stderr=devnull, check=True)
70
73
 
71
- except subprocess.CalledProcessError as e:
72
- konsol.print(f"[red]mpv oynatma hatası: {e}[/red]")
74
+ except subprocess.CalledProcessError as hata:
75
+ konsol.print(f"[red]mpv oynatma hatası: {hata}[/red]")
73
76
  konsol.print({"title": self.title, "url": extract_data.url, "headers": self.headers})
74
77
  except FileNotFoundError:
75
78
  konsol.print("[red]mpv bulunamadı! mpv kurulu olduğundan emin olun.[/red]")
@@ -18,11 +18,11 @@ class PluginLoader:
18
18
 
19
19
  if self.global_plugins_dir.exists():
20
20
  konsol.log(f"[green][*] Global Plugin dizininden yükleniyor: {self.global_plugins_dir}[/green]")
21
- plugins.update(self._load_from_directory(self.global_plugins_dir))
21
+ plugins |= self._load_from_directory(self.global_plugins_dir)
22
22
 
23
23
  if self.local_plugins_dir.exists():
24
24
  konsol.log(f"[green][*] Yerel Plugin dizininden yükleniyor: {self.local_plugins_dir}[/green]")
25
- plugins.update(self._load_from_directory(self.local_plugins_dir))
25
+ plugins |= self._load_from_directory(self.local_plugins_dir)
26
26
 
27
27
  if not plugins:
28
28
  konsol.print("[yellow][!] Yüklenecek bir Plugin bulunamadı![/yellow]")
@@ -25,8 +25,8 @@ class MixPlayHD(ExtractorBase):
25
25
  try:
26
26
  decrypted_data = AESManager.decrypt(be_player_data, be_player_pass).replace("\\", "")
27
27
  decrypted_json = json.loads(decrypted_data)
28
- except Exception as e:
29
- raise RuntimeError(f"Decryption failed: {e}")
28
+ except Exception as hata:
29
+ raise RuntimeError(f"Decryption failed: {hata}") from hata
30
30
 
31
31
  if video_url_match := re.search(
32
32
  pattern = r'"video_location":"([^"]+)"',
@@ -21,8 +21,8 @@ class Odnoklassniki(ExtractorBase):
21
21
  try:
22
22
  istek = await self.fetch_with_redirects(url)
23
23
  istek.raise_for_status()
24
- except Exception as e:
25
- raise RuntimeError(f"Failed to fetch the URL: {url}, Error: {e}")
24
+ except Exception as hata:
25
+ raise RuntimeError(f"Failed to fetch the URL: {url}, Error: {hata}") from hata
26
26
 
27
27
  response_text = (
28
28
  istek.text.replace("\\"", "\"")
@@ -41,8 +41,8 @@ class Odnoklassniki(ExtractorBase):
41
41
 
42
42
  try:
43
43
  videos = json.loads(videos_match[1])
44
- except json.JSONDecodeError:
45
- raise ValueError("Failed to parse video data.")
44
+ except json.JSONDecodeError as hata:
45
+ raise ValueError("Failed to parse video data.") from hata
46
46
 
47
47
  quality_order = {
48
48
  "ULTRA": 6, # 4K veya daha yüksek
@@ -43,8 +43,8 @@ class PeaceMakerst(ExtractorBase):
43
43
  video_response = response.json()
44
44
  if video_sources := video_response.get("videoSources", []):
45
45
  m3u_link = video_sources[-1]["file"]
46
- except (json.JSONDecodeError, KeyError):
47
- raise ValueError("Peace response is invalid or null.")
46
+ except (json.JSONDecodeError, KeyError) as hata:
47
+ raise ValueError("Peace response is invalid or null.") from hata
48
48
 
49
49
  if not m3u_link:
50
50
  raise ValueError("m3u link not found.")
@@ -48,8 +48,8 @@ class RapidVid(ExtractorBase):
48
48
 
49
49
  escaped_hex = extracted_value[1].replace("\\\\x", "")
50
50
  decoded_url = bytes.fromhex(escaped_hex).decode("utf-8")
51
- except Exception as e:
52
- raise RuntimeError(f"Extraction failed: {e}")
51
+ except Exception as hata:
52
+ raise RuntimeError(f"Extraction failed: {hata}") from hata
53
53
 
54
54
  await self.close()
55
55
  return ExtractResult(
@@ -26,8 +26,8 @@ class Sobreatsesuyp(ExtractorBase):
26
26
 
27
27
  try:
28
28
  post_json = json.loads(post_istek.text)
29
- except json.JSONDecodeError:
30
- raise ValueError("Failed to parse JSON response.")
29
+ except json.JSONDecodeError as hata:
30
+ raise ValueError("Failed to parse JSON response.") from hata
31
31
 
32
32
  video_data_list = post_json[1:] if isinstance(post_json, list) else []
33
33
 
@@ -26,8 +26,8 @@ class TRsTX(ExtractorBase):
26
26
 
27
27
  try:
28
28
  post_json = json.loads(post_istek.text)
29
- except json.JSONDecodeError:
30
- raise ValueError("Failed to parse JSON response.")
29
+ except json.JSONDecodeError as hata:
30
+ raise ValueError("Failed to parse JSON response.") from hata
31
31
 
32
32
  video_data_list = post_json[1:] if isinstance(post_json, list) else []
33
33
 
@@ -40,8 +40,8 @@ class VidMoly(ExtractorBase):
40
40
  video_data = self._add_marks(script_content, "file")
41
41
  try:
42
42
  video_sources = json.loads(f"[{video_data}]")
43
- except json.JSONDecodeError:
44
- raise ValueError("Video kaynakları ayrıştırılamadı.")
43
+ except json.JSONDecodeError as hata:
44
+ raise ValueError("Video kaynakları ayrıştırılamadı.") from hata
45
45
 
46
46
  # Altyazı kaynaklarını ayrıştır
47
47
  subtitles = []
@@ -23,8 +23,8 @@ class VideoSeyred(ExtractorBase):
23
23
  else:
24
24
  raise ValueError("Empty response from VideoSeyred.")
25
25
 
26
- except (json.JSONDecodeError, IndexError) as e:
27
- raise RuntimeError(f"Failed to parse response: {e}")
26
+ except (json.JSONDecodeError, IndexError) as hata:
27
+ raise RuntimeError(f"Failed to parse response: {hata}") from hata
28
28
 
29
29
  subtitles = [
30
30
  Subtitle(name=track["label"], url=self.fix_url(track["file"]))
@@ -72,6 +72,7 @@ class FullHDFilmizlesene(PluginBase):
72
72
  if isinstance(t, dict):
73
73
  link_list.extend(StringCodec.decode(v) for k, v in t.items())
74
74
 
75
- link_list = [f"https:{link}" if link.startswith("//") else link for link in link_list]
76
- # konsol.print(link_list)
77
- return link_list
75
+ return [
76
+ f"https:{link}" if link.startswith("//") else link
77
+ for link in link_list
78
+ ]
@@ -60,8 +60,7 @@ class JetFilmizle(PluginBase):
60
60
  secici = Selector(istek.text)
61
61
 
62
62
  iframes = []
63
- main_iframe = secici.css("div#movie iframe::attr(data-src), div#movie iframe::attr(data), div#movie iframe::attr(src)").get()
64
- if main_iframe:
63
+ if main_iframe := secici.css("div#movie iframe::attr(data-src), div#movie iframe::attr(data), div#movie iframe::attr(src)").get():
65
64
  iframes.append(self.fix_url(main_iframe))
66
65
 
67
66
  for part in secici.css("div.film_part a"):
@@ -72,13 +71,11 @@ class JetFilmizle(PluginBase):
72
71
  part_istek = await self.oturum.get(part_href)
73
72
  part_secici = Selector(part_istek.text)
74
73
 
75
- iframe = part_secici.css("div#movie iframe::attr(data-src), div#movie iframe::attr(data), div#movie iframe::attr(src)").get()
76
- if iframe:
74
+ if iframe := part_secici.css("div#movie iframe::attr(data-src), div#movie iframe::attr(data), div#movie iframe::attr(src)").get():
77
75
  iframes.append(self.fix_url(iframe))
78
76
  else:
79
77
  for link in part_secici.css("div#movie p a"):
80
- download_link = link.attrib.get("href")
81
- if download_link:
78
+ if download_link := link.attrib.get("href"):
82
79
  iframes.append(self.fix_url(download_link))
83
80
 
84
81
  processed_iframes = []
@@ -87,8 +84,7 @@ class JetFilmizle(PluginBase):
87
84
  jetv_istek = await self.oturum.get(iframe)
88
85
  jetv_secici = Selector(jetv_istek.text)
89
86
 
90
- jetv_iframe = jetv_secici.css("iframe::attr(src)").get()
91
- if jetv_iframe:
87
+ if jetv_iframe := jetv_secici.css("iframe::attr(src)").get():
92
88
  processed_iframes.append(self.fix_url(jetv_iframe))
93
89
  else:
94
90
  processed_iframes.append(iframe)
KekikStream/__init__.py CHANGED
@@ -1,9 +1,10 @@
1
1
  # Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
2
2
 
3
- from .CLI import konsol, cikis_yap, hata_yakala, pypi_kontrol_guncelle
4
- from .Managers import PluginManager, ExtractorManager, UIManager, MediaManager
5
- from .Core import PluginBase, ExtractorBase, SeriesInfo
6
- from asyncio import run
3
+ from .CLI import konsol, cikis_yap, hata_yakala, pypi_kontrol_guncelle
4
+ from .Managers import PluginManager, ExtractorManager, UIManager, MediaManager
5
+ from .Core import PluginBase, ExtractorBase, SeriesInfo
6
+ from asyncio import run
7
+ from contextlib import suppress
7
8
 
8
9
  class KekikStream:
9
10
  def __init__(self):
@@ -83,7 +84,7 @@ class KekikStream:
83
84
  secilen_sonuc = await self.tum_sonuc_secimi(sonuclar)
84
85
 
85
86
  if secilen_sonuc:
86
- await self.sonuc_detaylari_goster(secilen_sonuc)
87
+ return await self.sonuc_detaylari_goster(secilen_sonuc)
87
88
 
88
89
  async def tum_eklentilerde_arama_sorgula(self, sorgu: str) -> list:
89
90
  tum_sonuclar = []
@@ -131,7 +132,11 @@ class KekikStream:
131
132
  else:
132
133
  url = secilen_sonuc
133
134
 
134
- medya_bilgi = await self.suanki_eklenti.load_item(url)
135
+ for _ in range(3):
136
+ with suppress(Exception):
137
+ medya_bilgi = await self.suanki_eklenti.load_item(url)
138
+ break
139
+
135
140
  except Exception as hata:
136
141
  konsol.log(secilen_sonuc)
137
142
  return hata_yakala(hata)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: KekikStream
3
- Version: 0.3.7
3
+ Version: 0.3.9
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
@@ -1,14 +1,14 @@
1
- KekikStream/__init__.py,sha256=FR1jcEZkFpOP7_GLRPLqUcYYxFaElmAo_3R9gZpigdE,10489
1
+ KekikStream/__init__.py,sha256=Ht72MB4A8KazwZDUdaCmNx1-nybWXz02IpcAPy41FFc,10638
2
2
  KekikStream/__main__.py,sha256=B81dQoeGEb-T5Sycs3eNAmW7unvx0Mef0syCjs4nPds,137
3
3
  KekikStream/requirements.txt,sha256=gS_TUUQx5A7FUmRGxj2dQedxheD7qA6AswdUb2y_Ub8,70
4
4
  KekikStream/CLI/__init__.py,sha256=U6oLq_O7u5y2eHhBnmfhZNns_EqHHJXJmzl8jvZFUNY,230
5
5
  KekikStream/CLI/pypi_kontrol.py,sha256=MchatOwCWCpFBtgt09yag9Rjal9XFyh2W_oVs2p7SNg,1518
6
- KekikStream/Core/ExtractorBase.py,sha256=-3jadehq2wIa4jwwn38ojkGHay2qAYgweSYIBqVGwNU,1068
6
+ KekikStream/Core/ExtractorBase.py,sha256=o9VaOZ0UVKNSxJt6jGpr9OfbfKROv6ChooKC2c8X2WQ,1154
7
7
  KekikStream/Core/ExtractorLoader.py,sha256=rrll3F2CyVmx3foa57PG0FocQMrFuMpdlG0Uf0-2Fz4,3915
8
8
  KekikStream/Core/ExtractorModels.py,sha256=huIcPQ5VIRfMx0LcL5SS1u4dldZbHjzHKEdSEtOPlc0,456
9
- KekikStream/Core/MediaHandler.py,sha256=hEnJpLAAMRDhFda4k8iaZlApFysZLxIHU-6Wfy4zK0A,3253
9
+ KekikStream/Core/MediaHandler.py,sha256=9nwudUVv4Zu8r0uHswFcwv5OWDKoz2k_PhjHvcq0m3I,3345
10
10
  KekikStream/Core/PluginBase.py,sha256=ZQx6adxOKuX50TPN5pxE8oG9FD-ZjPXSHpSiW086QPQ,2479
11
- KekikStream/Core/PluginLoader.py,sha256=4gucz-9RKIGYiwvcvxqHNf4NVRGVwEj9sg1rKX3LZ58,2584
11
+ KekikStream/Core/PluginLoader.py,sha256=5HQF8Em1TjvqMBPLKB7M_i2y6zPH6JZao-uekeacoSs,2574
12
12
  KekikStream/Core/PluginModels.py,sha256=WWPEz8PpZZ4bLMDJzTE19BsQEJObkyhaYjDkyLaF2Ck,2365
13
13
  KekikStream/Core/__init__.py,sha256=HZpXs3MKy4joO0sDpIGcZ2DrUKwK49IKG-GQgKbO2jk,416
14
14
  KekikStream/Extractors/CloseLoad.py,sha256=YmDB3YvuDaCUbQ0T_tmhnkEsC5mSdEN6GNoAR662fl8,990
@@ -19,23 +19,23 @@ KekikStream/Extractors/FourPlayRu.py,sha256=wq1ylxKpsO_IBoYr_ALzB2dVrQpJ-jY9lf2z
19
19
  KekikStream/Extractors/HDStreamAble.py,sha256=66n5EvIdX_or5cdnlJ_Uqmzi50n4rl9c5VCw8kBqhQk,245
20
20
  KekikStream/Extractors/Hotlinger.py,sha256=NFMRgUmb6BCrJfa7Hi0VarDNYvCeVknBWEk24FKBBa0,224
21
21
  KekikStream/Extractors/MailRu.py,sha256=lB3Xy912EaSEUw7Im65L5TwtIeM7OLFV1_9lan39g40,1308
22
- KekikStream/Extractors/MixPlayHD.py,sha256=pfqtbrSz4JbEFROcCLhfZ-24XuV9KsQQZ6-ALhm53KU,1538
23
- KekikStream/Extractors/Odnoklassniki.py,sha256=N8qPDAoMj8UV3TmFRHNiUng4agjRzIAUkKl0Hk4Ghp0,3559
22
+ KekikStream/Extractors/MixPlayHD.py,sha256=M7Zxmpkazkj6ewgLWKKDeZDbBOCM9vkMDyIaVhaSPrY,1554
23
+ KekikStream/Extractors/Odnoklassniki.py,sha256=B0A2krVVvzmpZBzIpxu40WB9AZ_zzH-Km2HTetrNvqQ,3593
24
24
  KekikStream/Extractors/OkRuHTTP.py,sha256=L-B0i_i_Vnm61GvUfd6cGIW-o_H4M-C7DO_cdw2rQPU,228
25
25
  KekikStream/Extractors/OkRuSSL.py,sha256=FHJ5XZ1dO5ED3mIku3e3vnq8K0slrcr0jqhaUnHmfVk,227
26
- KekikStream/Extractors/PeaceMakerst.py,sha256=c9D2IUYR04nJ6WnRMPIJpUvJ7JDHgDrDe5tSVdPbKSc,2082
26
+ KekikStream/Extractors/PeaceMakerst.py,sha256=VSXeCeA_-9IkKdjoQ3lvA4FFDzdT_Oj1oFM7i-_3tvQ,2100
27
27
  KekikStream/Extractors/Pichive.py,sha256=BSVYFwL3Ax6yGoS1WkpOWtngxNyuZLoKzpPwjibpu2s,221
28
28
  KekikStream/Extractors/PixelDrain.py,sha256=1kf1kKKxcYwLVPo_8Fg1Za3E2kOplqqVFM41xBT52KY,992
29
29
  KekikStream/Extractors/PlayRu.py,sha256=DQMZyCSJwLkrh-gfDD8T1DvUFNBAKUXpByeCAWuK6YY,215
30
- KekikStream/Extractors/RapidVid.py,sha256=MEffqeSsg6RK-KAWtNOXEw99LVisXgM-obQo8rKE-Ls,2353
30
+ KekikStream/Extractors/RapidVid.py,sha256=n03CyrnFLSoL6Ys5Dy4a4d-5iIAdmouqz4-k6Vl3Hok,2369
31
31
  KekikStream/Extractors/SibNet.py,sha256=Jrl93OdKwEhssG348-F2BKaj-XUS7v-Qw3dKMh_ZMRQ,878
32
- KekikStream/Extractors/Sobreatsesuyp.py,sha256=MZTdRPx1i4O56pL3Q2QfakCHTUQ1v2lBN6ek-MkgsDw,1941
33
- KekikStream/Extractors/TRsTX.py,sha256=KxcQsJ-sby90DdS1HtE-pQ0VygolvJUwp_192NWvQV0,2093
32
+ KekikStream/Extractors/Sobreatsesuyp.py,sha256=mBYu29rHpAZfB8CYJ6Wuy3roUvdRyqzkfAxmEUkkaxw,1959
33
+ KekikStream/Extractors/TRsTX.py,sha256=ammizq5izjv9FpeV5kyXZPftEX_K0JGQfAnlMhl2Sn0,2111
34
34
  KekikStream/Extractors/TauVideo.py,sha256=ID-QwdPnl62wTECSzTFA8Z0P7Rv9LELd6xdvBz5ALiQ,1018
35
35
  KekikStream/Extractors/TurboImgz.py,sha256=VXx9vZZRTdQiVNER0LcXm2nsv2OaXnxuPpslG-sEKD0,826
36
- KekikStream/Extractors/VidMoly.py,sha256=m8a_doZiTYaTQTevAQ1mJh7LogYK9uWRIsoa841Zfx8,3350
36
+ KekikStream/Extractors/VidMoly.py,sha256=BKJgk60GomFYiLFsRQSR2sOYP105Aix5y5XLazBNWmw,3368
37
37
  KekikStream/Extractors/VidMoxy.py,sha256=_K6BA7Uo59DA3ty_tsayCUZjXmRoDBTghekVNXiuZ7g,1800
38
- KekikStream/Extractors/VideoSeyred.py,sha256=FCTVKeQfivklVRljymg7CkdHR_FQgB9zHN-p3Diphfw,1764
38
+ KekikStream/Extractors/VideoSeyred.py,sha256=otyGi1zdY_JPrXJjoZjesCQDiOkxFdaWiXQ9mOmrygA,1780
39
39
  KekikStream/Managers/ExtractorManager.py,sha256=9rGlUsnedJ7fwIeObN5Vsm8H5VLal0ODO7F93dDRx8w,976
40
40
  KekikStream/Managers/MediaManager.py,sha256=F7mkSvAttAaMHRvnDcxnV2K1D_sK644BCSrEaAmMl_U,522
41
41
  KekikStream/Managers/PluginManager.py,sha256=YDBLHB_Fh79A3Pei0ny2KLVY4VSihdNiKBh_w5tBl-0,637
@@ -43,14 +43,14 @@ KekikStream/Managers/UIManager.py,sha256=OrGxzbhRPTCqiLEXjipLb8ChF7saV3fvFIUXLKT
43
43
  KekikStream/Managers/__init__.py,sha256=3085I_9Sa2L_Vq6Z-QvYUYn1BapkN4sQqBo8ITZoD_4,251
44
44
  KekikStream/Plugins/DiziBox.py,sha256=ARzsao-r91c3PVV_3-NCLvNcVRSIxjlGdWl_3-1Q6Mo,5722
45
45
  KekikStream/Plugins/FilmMakinesi.py,sha256=rz8TQeL41PJbeEmksgPHIhp6J-4vbSCBTeEH0ukExz4,2822
46
- KekikStream/Plugins/FullHDFilmizlesene.py,sha256=MKTaDQaatI_XuJk-NFj3xqsTXO5bFnoy4-I5tCL0A-M,3106
47
- KekikStream/Plugins/JetFilmizle.py,sha256=DPdvTEns8r2MI9pHY8d9EEsUZmlQU7N2C9yr8ox80qU,4016
46
+ KekikStream/Plugins/FullHDFilmizlesene.py,sha256=Fa0gRP_NoMfPC8HIKRxERjQVOv8Fyb-ayMJ2EooZ7BE,3080
47
+ KekikStream/Plugins/JetFilmizle.py,sha256=FXkMSQtjYoxwIonjRENFa91rC42L_8SYRhjhuSgsu60,3919
48
48
  KekikStream/Plugins/SezonlukDizi.py,sha256=5BZVzQ2eQtymHxO0bzjA2ho4FFNahPFQly4hoHuH8lo,4441
49
49
  KekikStream/Plugins/SineWix.py,sha256=ZtcIwPW0ONGkSjT7Ye8b71RWdHZMUZefX-JTWu6uGSs,4854
50
50
  KekikStream/Plugins/UgurFilm.py,sha256=yYXee5uxwNnPqFJZ6s6cRkmUyqS3Vv8x-iesPalc4j4,2930
51
- KekikStream-0.3.7.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
52
- KekikStream-0.3.7.dist-info/METADATA,sha256=z7V9PBvDmXcYGScDp3K2oNJR8YMOpdj_Zoe_F5m0iw0,3987
53
- KekikStream-0.3.7.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
54
- KekikStream-0.3.7.dist-info/entry_points.txt,sha256=dFwdiTx8djyehI0Gsz-rZwjAfZzUzoBSrmzRu9ubjJc,50
55
- KekikStream-0.3.7.dist-info/top_level.txt,sha256=DNmGJDXl27Drdfobrak8KYLmocW_uznVYFJOzcjUgmY,12
56
- KekikStream-0.3.7.dist-info/RECORD,,
51
+ KekikStream-0.3.9.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
52
+ KekikStream-0.3.9.dist-info/METADATA,sha256=nNeMFrvBcus3ge5Um-hId3yIIhs9pfyc86_KYBaF7Kc,3987
53
+ KekikStream-0.3.9.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
54
+ KekikStream-0.3.9.dist-info/entry_points.txt,sha256=dFwdiTx8djyehI0Gsz-rZwjAfZzUzoBSrmzRu9ubjJc,50
55
+ KekikStream-0.3.9.dist-info/top_level.txt,sha256=DNmGJDXl27Drdfobrak8KYLmocW_uznVYFJOzcjUgmY,12
56
+ KekikStream-0.3.9.dist-info/RECORD,,