KekikStream 2.1.7__py3-none-any.whl → 2.2.2__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.
@@ -0,0 +1,78 @@
1
+ # Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
2
+
3
+ from KekikStream.Core import ExtractorBase, ExtractResult
4
+ from Kekik.Sifreleme import Packer
5
+ from parsel import Selector
6
+ import re
7
+
8
+ class Filemoon(ExtractorBase):
9
+ name = "Filemoon"
10
+ main_url = "https://filemoon.to"
11
+
12
+ # Filemoon'un farklı domainlerini destekle
13
+ supported_domains = [
14
+ "filemoon.to",
15
+ "filemoon.in",
16
+ "filemoon.sx",
17
+ "filemoon.nl",
18
+ "filemoon.com"
19
+ ]
20
+
21
+ def can_handle_url(self, url: str) -> bool:
22
+ return any(domain in url for domain in self.supported_domains)
23
+
24
+ async def extract(self, url: str, referer: str = None) -> ExtractResult:
25
+ headers = {
26
+ "Referer" : url,
27
+ "Sec-Fetch-Dest" : "iframe",
28
+ "Sec-Fetch-Mode" : "navigate",
29
+ "Sec-Fetch-Site" : "cross-site",
30
+ }
31
+ self.httpx.headers.update(headers)
32
+
33
+ # İlk sayfayı al
34
+ istek = await self.httpx.get(url)
35
+ response = istek.text
36
+ secici = Selector(response)
37
+
38
+ # Eğer iframe varsa, iframe'e git
39
+ iframe_src = secici.css("iframe::attr(src)").get()
40
+ if iframe_src:
41
+ iframe_url = self.fix_url(iframe_src)
42
+ self.httpx.headers.update({
43
+ "Accept-Language" : "en-US,en;q=0.5",
44
+ "Sec-Fetch-Dest" : "iframe"
45
+ })
46
+ istek = await self.httpx.get(iframe_url)
47
+ response = istek.text
48
+
49
+ # Packed script'i bul ve unpack et
50
+ m3u8_url = None
51
+
52
+ if Packer.detect_packed(response):
53
+ try:
54
+ unpacked = Packer.unpack(response)
55
+ # sources:[{file:"..." pattern'ını ara
56
+ if match := re.search(r'sources:\s*\[\s*\{\s*file:\s*"([^"]+)"', unpacked):
57
+ m3u8_url = match.group(1)
58
+ elif match := re.search(r'file:\s*"([^"]*?\.m3u8[^"]*)"', unpacked):
59
+ m3u8_url = match.group(1)
60
+ except Exception:
61
+ pass
62
+
63
+ # Fallback: Doğrudan response'ta ara
64
+ if not m3u8_url:
65
+ if match := re.search(r'sources:\s*\[\s*\{\s*file:\s*"([^"]+)"', response):
66
+ m3u8_url = match.group(1)
67
+ elif match := re.search(r'file:\s*"([^"]*?\.m3u8[^"]*)"', response):
68
+ m3u8_url = match.group(1)
69
+
70
+ if not m3u8_url:
71
+ raise ValueError(f"Filemoon: Video URL bulunamadı. {url}")
72
+
73
+ return ExtractResult(
74
+ name = self.name,
75
+ url = self.fix_url(m3u8_url),
76
+ referer = f"{self.main_url}/",
77
+ subtitles = []
78
+ )
@@ -0,0 +1,40 @@
1
+ # Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
2
+
3
+ from KekikStream.Core import ExtractorBase, ExtractResult
4
+ import re
5
+
6
+ class JFVid(ExtractorBase):
7
+ name = "JFVid"
8
+ main_url = "https://jfvid.com"
9
+
10
+ # Birden fazla domain destekle
11
+ supported_domains = ["jfvid.com"]
12
+
13
+ def can_handle_url(self, url: str) -> bool:
14
+ return any(domain in url for domain in self.supported_domains)
15
+
16
+ async def extract(self, url: str, referer: str = None) -> ExtractResult:
17
+ # Dinamik base URL kullan
18
+ base_url = self.get_base_url(url)
19
+
20
+ if referer:
21
+ self.httpx.headers.update({"Referer": referer})
22
+
23
+ # /play/ endpoint'inden encodedId'yi al
24
+ # URL format: https://xxx.jfvid.com/play/{encodedId}
25
+ if "/play/" in url:
26
+ encoded_id = url.split("/play/")[-1]
27
+ stream_url = f"{base_url}/stream/{encoded_id}"
28
+ elif "/stream/" in url:
29
+ # Zaten stream URL ise doğrudan kullan
30
+ stream_url = url
31
+ else:
32
+ raise ValueError(f"JFVid: Desteklenmeyen URL formatı. {url}")
33
+
34
+ # Stream endpoint'i direkt m3u8 master playlist döndürür
35
+ return ExtractResult(
36
+ name = self.name,
37
+ url = stream_url,
38
+ referer = referer,
39
+ subtitles = []
40
+ )
@@ -1,7 +1,7 @@
1
1
  # Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
2
2
 
3
3
  from KekikStream.Core import ExtractorBase, ExtractResult, Subtitle
4
- from Kekik.Sifreleme import Packer, HexCodec
4
+ from Kekik.Sifreleme import Packer, HexCodec, StreamDecoder
5
5
  import re, base64
6
6
 
7
7
  class RapidVid(ExtractorBase):
@@ -39,15 +39,25 @@ class RapidVid(ExtractorBase):
39
39
  subtitles.append(Subtitle(name=decoded_lang, url=sub_url.replace("\\", "")))
40
40
 
41
41
  try:
42
+ decoded_url = None
43
+
44
+ # Method 1: file": "..." pattern (HexCodec)
42
45
  if extracted_value := re.search(r'file": "(.*)",', istek.text):
43
46
  escaped_hex = extracted_value[1]
44
47
  decoded_url = HexCodec.decode(escaped_hex)
45
- else:
46
- av_encoded = re.search(r"av\('([^']+)'\)", istek.text)
47
- if not av_encoded:
48
- raise ValueError("AV encoding not found.")
49
48
 
49
+ # Method 2: av('...') pattern
50
+ elif av_encoded := re.search(r"av\('([^']+)'\)", istek.text):
50
51
  decoded_url = self.decode_secret(av_encoded[1])
52
+
53
+ # Method 3: Packed script with dc_* function (StreamDecoder)
54
+ elif Packer.detect_packed(istek.text):
55
+ unpacked = Packer.unpack(istek.text)
56
+ decoded_url = StreamDecoder.extract_stream_url(unpacked)
57
+
58
+ if not decoded_url:
59
+ raise ValueError("No valid video URL pattern found.")
60
+
51
61
  except Exception as hata:
52
62
  raise RuntimeError(f"Extraction failed: {hata}") from hata
53
63
 
@@ -9,6 +9,12 @@ class VidHide(ExtractorBase):
9
9
  name = "VidHide"
10
10
  main_url = "https://vidhidepro.com"
11
11
 
12
+ # Birden fazla domain destekle
13
+ supported_domains = ["vidhidepro.com", "vidhide.com", "rubyvidhub.com"]
14
+
15
+ def can_handle_url(self, url: str) -> bool:
16
+ return any(domain in url for domain in self.supported_domains)
17
+
12
18
  def get_embed_url(self, url: str) -> str:
13
19
  if "/d/" in url:
14
20
  return url.replace("/d/", "/v/")
@@ -20,6 +26,9 @@ class VidHide(ExtractorBase):
20
26
  return url.replace("/f/", "/v/")
21
27
 
22
28
  async def extract(self, url: str, referer: str = None) -> ExtractResult:
29
+ # Dinamik base URL kullan
30
+ base_url = self.get_base_url(url)
31
+
23
32
  if referer:
24
33
  self.httpx.headers.update({"Referer": referer})
25
34
 
@@ -27,7 +36,7 @@ class VidHide(ExtractorBase):
27
36
  "Sec-Fetch-Dest" : "empty",
28
37
  "Sec-Fetch-Mode" : "cors",
29
38
  "Sec-Fetch-Site" : "cross-site",
30
- "Origin" : self.main_url,
39
+ "Origin" : base_url,
31
40
  })
32
41
 
33
42
  embed_url = self.get_embed_url(url)
@@ -66,7 +75,7 @@ class VidHide(ExtractorBase):
66
75
  return ExtractResult(
67
76
  name = self.name,
68
77
  url = self.fix_url(m3u8_url),
69
- referer = f"{self.main_url}/",
78
+ referer = f"{base_url}/",
70
79
  user_agent = self.httpx.headers.get("User-Agent", ""),
71
80
  subtitles = []
72
81
  )
@@ -2,6 +2,7 @@
2
2
 
3
3
  from KekikStream.Core import PluginBase, MainPageResult, SearchResult, MovieInfo, ExtractResult
4
4
  from parsel import Selector
5
+ import re
5
6
 
6
7
  class JetFilmizle(PluginBase):
7
8
  name = "JetFilmizle"
@@ -16,7 +17,25 @@ class JetFilmizle(PluginBase):
16
17
  f"{main_url}/editorun-secimi/page/" : "Editörün Seçimi",
17
18
  f"{main_url}/turk-film-izle/page/" : "Türk Filmleri",
18
19
  f"{main_url}/cizgi-filmler-izle/page/" : "Çizgi Filmler",
19
- f"{main_url}/kategoriler/yesilcam-filmleri-izlee/page/" : "Yeşilçam Filmleri"
20
+ f"{main_url}/kategoriler/yesilcam-filmleri-izlee/page/" : "Yeşilçam Filmleri",
21
+ f"{main_url}/film-turu/aile-filmleri-izle/page/" : "Aile Filmleri",
22
+ f"{main_url}/film-turu/aksiyon-filmleri/page/" : "Aksiyon Filmleri",
23
+ f"{main_url}/film-turu/animasyon-filmler-izle/page/" : "Animasyon Filmleri",
24
+ f"{main_url}/film-turu/bilim-kurgu-filmler/page/" : "Bilim Kurgu Filmleri",
25
+ f"{main_url}/film-turu/dram-filmleri-izle/page/" : "Dram Filmleri",
26
+ f"{main_url}/film-turu/fantastik-filmleri-izle/page/" : "Fantastik Filmler",
27
+ f"{main_url}/film-turu/gerilim-filmleri/page/" : "Gerilim Filmleri",
28
+ f"{main_url}/film-turu/gizem-filmleri/page/" : "Gizem Filmleri",
29
+ f"{main_url}/film-turu/komedi-film-full-izle/page/" : "Komedi Filmleri",
30
+ f"{main_url}/film-turu/korku-filmleri-izle/page/" : "Korku Filmleri",
31
+ f"{main_url}/film-turu/macera-filmleri/page/" : "Macera Filmleri",
32
+ f"{main_url}/film-turu/muzikal/page/" : "Müzikal Filmler",
33
+ f"{main_url}/film-turu/polisiye/page/" : "Polisiye Filmler",
34
+ f"{main_url}/film-turu/romantik-film-izle/page/" : "Romantik Filmler",
35
+ f"{main_url}/film-turu/savas-filmi-izle/page/" : "Savaş Filmleri",
36
+ f"{main_url}/film-turu/spor/page/" : "Spor Filmleri",
37
+ f"{main_url}/film-turu/suc-filmleri/page/" : "Suç Filmleri",
38
+ f"{main_url}/film-turu/tarihi-filmler/page/" : "Tarihi Filmleri",
20
39
  }
21
40
 
22
41
  async def get_main_page(self, page: int, url: str, category: str) -> list[MainPageResult]:
@@ -20,6 +20,23 @@ class SezonlukDizi(PluginBase):
20
20
  f"{main_url}/diziler.asp?siralama_tipi=id&kat=4&s=" : "Animasyonlar",
21
21
  f"{main_url}/diziler.asp?siralama_tipi=id&kat=5&s=" : "Animeler",
22
22
  f"{main_url}/diziler.asp?siralama_tipi=id&kat=6&s=" : "Belgeseller",
23
+ f"{main_url}/diziler.asp?siralama_tipi=id&tur=aile&s=" : "Aile",
24
+ f"{main_url}/diziler.asp?siralama_tipi=id&tur=aksiyon&s=" : "Aksiyon",
25
+ f"{main_url}/diziler.asp?siralama_tipi=id&tur=bilimkurgu&s=" : "Bilim Kurgu",
26
+ f"{main_url}/diziler.asp?siralama_tipi=id&tur=biyografik&s=" : "Biyografi",
27
+ f"{main_url}/diziler.asp?siralama_tipi=id&tur=dram&s=" : "Dram",
28
+ f"{main_url}/diziler.asp?siralama_tipi=id&tur=fantastik&s=" : "Fantastik",
29
+ f"{main_url}/diziler.asp?siralama_tipi=id&tur=gerilim&s=" : "Gerilim",
30
+ f"{main_url}/diziler.asp?siralama_tipi=id&tur=gizem&s=" : "Gizem",
31
+ f"{main_url}/diziler.asp?siralama_tipi=id&tur=korku&s=" : "Korku",
32
+ f"{main_url}/diziler.asp?siralama_tipi=id&tur=komedi&s=" : "Komedi",
33
+ f"{main_url}/diziler.asp?siralama_tipi=id&tur=macera&s=" : "Macera",
34
+ f"{main_url}/diziler.asp?siralama_tipi=id&tur=muzikal&s=" : "Müzikal",
35
+ f"{main_url}/diziler.asp?siralama_tipi=id&tur=suc&s=" : "Suç",
36
+ f"{main_url}/diziler.asp?siralama_tipi=id&tur=romantik&s=" : "Romantik",
37
+ f"{main_url}/diziler.asp?siralama_tipi=id&tur=savas&s=" : "Savaş",
38
+ f"{main_url}/diziler.asp?siralama_tipi=id&tur=tarihi&s=" : "Tarihi",
39
+ f"{main_url}/diziler.asp?siralama_tipi=id&tur=western&s=" : "Western"
23
40
  }
24
41
 
25
42
  async def get_main_page(self, page: int, url: str, category: str) -> list[MainPageResult]:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: KekikStream
3
- Version: 2.1.7
3
+ Version: 2.2.2
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
@@ -294,6 +294,7 @@ Projeyi geliştirmek için katkılarınızı bekliyoruz!
294
294
  - [keyiflerolsun/seyirTurk-Parser](https://github.com/keyiflerolsun/seyirTurk-Parser)
295
295
  - [feroxx/Kekik-cloudstream](https://github.com/feroxx/Kekik-cloudstream)
296
296
  - [kerimmkirac/cs-kerim](https://github.com/kerimmkirac/cs-kerim)
297
+ - [Phisher98/Extractors](https://github.com/phisher98/cloudstream-extensions-phisher/blob/master/StreamPlay/src/main/kotlin/com/Phisher98/Extractors.kt)
297
298
 
298
299
  ## 🌐 Telif Hakkı ve Lisans
299
300
 
@@ -21,7 +21,9 @@ KekikStream/Extractors/ContentX.py,sha256=x0j67e1OAw4L1m7ejUTyiIxqr1EhvpjaA_0U-s
21
21
  KekikStream/Extractors/DonilasPlay.py,sha256=Lr60pEht96SMlXICYWo9J5dOwV4ty8fetBCCqJ3ARUY,3221
22
22
  KekikStream/Extractors/DzenRu.py,sha256=X0Rhm1-W4YjQwVrJs8YFqVcCxMaZi8rsKiLhK_ZsYlU,1185
23
23
  KekikStream/Extractors/ExPlay.py,sha256=EJNVKAbaIxlbOsCx7J9aLfNHKOFoqSLZZUw7W4QYeH0,1827
24
+ KekikStream/Extractors/Filemoon.py,sha256=l0AVyRrYA2DTuSkYoy6Jh02_w53TeBRyROkY9koiees,2684
24
25
  KekikStream/Extractors/HDPlayerSystem.py,sha256=EgnFzx5Q4PkuwAtuff5SYU9k59B-CyOdySl7lbCZ9hM,1312
26
+ KekikStream/Extractors/JFVid.py,sha256=_6A0zmYrWZxIfkCCKAaNxMRLjU-_0Z0hCxCNSApcknk,1350
25
27
  KekikStream/Extractors/JetTv.py,sha256=aA3WeOvR-tszac-WSwunZZb1NRy25TQH8vxY3TDscRI,1596
26
28
  KekikStream/Extractors/MailRu.py,sha256=xQVCWwYqNoG5T43VAW1_m0v4e80FbO-1pNPKkwhTccU,1218
27
29
  KekikStream/Extractors/MixPlayHD.py,sha256=POV_yq3KoZ6S6EqFsKYULEBz92NdUa2BpYKNo0eNQH8,1552
@@ -31,7 +33,7 @@ KekikStream/Extractors/Odnoklassniki.py,sha256=YfFRCL3Ag5N4zDzK9ZLOr3HVQcsETFQpf
31
33
  KekikStream/Extractors/PeaceMakerst.py,sha256=pEgJb3KDfEPAUjbuvrYbUlxIciKgED-Vd0arrRO3QCk,2317
32
34
  KekikStream/Extractors/PixelDrain.py,sha256=Uk2pPvtBzaKtRXu1iNO8FLHd0EAuIOIzI1H_n02tg-U,964
33
35
  KekikStream/Extractors/PlayerFilmIzle.py,sha256=kH-O_RtQvG4iRLGKi-sFn1ST14DrxxoAa5iRT2PsdXc,2503
34
- KekikStream/Extractors/RapidVid.py,sha256=FgAZfgtnKE57KRiRIFw-6_ZES0Trp5QriNbRTfSBGQs,3139
36
+ KekikStream/Extractors/RapidVid.py,sha256=t_8ZUp5DCTIaohc5aW4s9HEQQ1A2lU5bTMX84lctmtY,3529
35
37
  KekikStream/Extractors/SetPlay.py,sha256=6XuNXoNFM1h3KOCkTxeZmcAl8QTdqzVN_pp_dEIKF8A,2235
36
38
  KekikStream/Extractors/SetPrime.py,sha256=ob09y-Sm91YR7rIRzikhZiMHX6D4Djm5QzFTg6KbO4k,1536
37
39
  KekikStream/Extractors/SibNet.py,sha256=zJTkzlr34ufKCWzKKCgJrzhb2o-fpjTjFdi38gv6N6g,849
@@ -41,7 +43,7 @@ KekikStream/Extractors/TauVideo.py,sha256=2ai9BwwM6qlCgxK7E0B642LtOF5y4hEb9tQ2aD
41
43
  KekikStream/Extractors/TurboImgz.py,sha256=nnWnP1K4JZbMj6S-YuXxej31UZtF4JcboSW4n7A4A5c,824
42
44
  KekikStream/Extractors/TurkeyPlayer.py,sha256=FX_H3vzXjAD7IjK11bjJVVw_VdPQ4n6YQLfjQ6E3t7o,1247
43
45
  KekikStream/Extractors/VCTPlay.py,sha256=1BCl2_vVIrwvG56LCzl2KE5g2CUaMAhzImOZMdZpZCQ,1377
44
- KekikStream/Extractors/VidHide.py,sha256=TVoS9CMV1WSE83vPC4FFxsNE71n-_DtVJm66_1Wt8pU,2538
46
+ KekikStream/Extractors/VidHide.py,sha256=UIAPFLbGDPRjcJVuDmaVbFN5r0ZyJoW4CRn1INH8mJs,2837
45
47
  KekikStream/Extractors/VidMoly.py,sha256=QLRRGH1uHFTREl5Oq3V8WIkVpqaZuuygmHaW1ulj1Lg,4774
46
48
  KekikStream/Extractors/VidMoxy.py,sha256=LT7wTKBtuuagXwfGjWZwQF2NQGuChurZJ-I6gM0Jcek,1771
47
49
  KekikStream/Extractors/VidPapi.py,sha256=g9ohdL9VJrxy4N7xerbIRz3ZxjsXFHlJWy0NaZ31hFY,3259
@@ -59,22 +61,22 @@ KekikStream/Plugins/FilmModu.py,sha256=HVawdKHuqcFb3PQ-93uwGlwv1dNhkM2kpStBlTJJX
59
61
  KekikStream/Plugins/FullHDFilm.py,sha256=fimK5MqPYjmog859lfuEuJeg8AGylYyDm36Ak3X3Msg,9768
60
62
  KekikStream/Plugins/FullHDFilmizlesene.py,sha256=_-HaoNvPVzITB_aK3jOkSSAOA50SYFNdnjHH4JGCmOc,6078
61
63
  KekikStream/Plugins/HDFilmCehennemi.py,sha256=I-dwkerkwfzcaSQA9XzIGh2LeRywBGydX0D0k6FmoOc,13029
62
- KekikStream/Plugins/JetFilmizle.py,sha256=nhTOU4333Bg-au0gE9xHs74UiyjSZOKHygOlr2BkBx0,6410
64
+ KekikStream/Plugins/JetFilmizle.py,sha256=njmaX7Rhi0bewZvK_NO9PTs86uB-8zxYcuwrYthA2aw,7956
63
65
  KekikStream/Plugins/KultFilmler.py,sha256=ODnQu2_qLKx68dpT16MFUiIXYQlkQSDU0x15o91LWU8,9097
64
66
  KekikStream/Plugins/RecTV.py,sha256=Nj4AdeetPMzvZ-VKUdUGhBC1SiFSBRYRebODgE2UeI8,7228
65
67
  KekikStream/Plugins/RoketDizi.py,sha256=7cP6935unhrn_yDt0hsLoW3nboX3WUD0P2DqqRny3_M,8568
66
68
  KekikStream/Plugins/SelcukFlix.py,sha256=WKMsZpVVdHn_zW69xxhAuIP7OhAPbPFxFRWzGzHBgaE,13601
67
69
  KekikStream/Plugins/SetFilmIzle.py,sha256=EcoHSacJO9bvzA9lZZzDZAwAhXfaDstI4M4C3YOwvEU,10113
68
- KekikStream/Plugins/SezonlukDizi.py,sha256=rSxXcJoCqr9wDfIW9xyfAk0Ud73pf-cEmJuJ31M9MKw,7071
70
+ KekikStream/Plugins/SezonlukDizi.py,sha256=7N4S8ikA4IzHszD5WaXAUESAVfHDKSnMQeX4iQFP3KY,8457
69
71
  KekikStream/Plugins/SineWix.py,sha256=z0r90lggAugEWE1g9vg8gZsInBObUZPnVFQwq7GYmJs,7052
70
72
  KekikStream/Plugins/Sinefy.py,sha256=Ogw0-qjROz8T0EkV1jwbOvz0WM4FN9D24bNrJmi314k,9998
71
73
  KekikStream/Plugins/SinemaCX.py,sha256=aujqCWPGZHcRqKcMFlZYEwMonj0C_UQ_J4ZqCyF59pU,7492
72
74
  KekikStream/Plugins/Sinezy.py,sha256=lFOfbMwxzP6IkhPZ_C3ZWGrgwThSk58pYQAD61rCJnM,6128
73
75
  KekikStream/Plugins/SuperFilmGeldi.py,sha256=dqU1IJHcTPU9zlnA9rSKsX0ehpBYSgDuz6eSlCCop8k,6044
74
76
  KekikStream/Plugins/UgurFilm.py,sha256=TlMDy3tSfkEUy_ziIdCkgnfmoRtVdXEv8m4kjKeAWrE,4696
75
- kekikstream-2.1.7.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
76
- kekikstream-2.1.7.dist-info/METADATA,sha256=-rH6IXawYy_VoHlNrY5YZh4ounZYSKX7o952j4nq97w,10254
77
- kekikstream-2.1.7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
78
- kekikstream-2.1.7.dist-info/entry_points.txt,sha256=dFwdiTx8djyehI0Gsz-rZwjAfZzUzoBSrmzRu9ubjJc,50
79
- kekikstream-2.1.7.dist-info/top_level.txt,sha256=DNmGJDXl27Drdfobrak8KYLmocW_uznVYFJOzcjUgmY,12
80
- kekikstream-2.1.7.dist-info/RECORD,,
77
+ kekikstream-2.2.2.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
78
+ kekikstream-2.2.2.dist-info/METADATA,sha256=FnPEIjgDNwByMlEYW2flhStgJXsl7NMRoRlOf1mkQ74,10407
79
+ kekikstream-2.2.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
80
+ kekikstream-2.2.2.dist-info/entry_points.txt,sha256=dFwdiTx8djyehI0Gsz-rZwjAfZzUzoBSrmzRu9ubjJc,50
81
+ kekikstream-2.2.2.dist-info/top_level.txt,sha256=DNmGJDXl27Drdfobrak8KYLmocW_uznVYFJOzcjUgmY,12
82
+ kekikstream-2.2.2.dist-info/RECORD,,