KekikStream 1.3.0__py3-none-any.whl → 1.3.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.
@@ -1,8 +1,27 @@
1
1
  # Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
2
2
 
3
- from KekikStream.Core import ExtractorBase, ExtractResult
4
- from parsel import Selector
5
- from base64 import b64decode
3
+ from KekikStream.Core import ExtractorBase, ExtractResult
4
+ from KekikStream.Helpers.Unpack import unpack
5
+ import re, base64
6
+
7
+ def get_m3u_link(data: str) -> str:
8
+ first = base64.b64decode(data)
9
+ first_reversed = first[::-1]
10
+
11
+ second = base64.b64decode(first_reversed)
12
+
13
+ parts = second.decode('utf-8').split("|")
14
+ if len(parts) < 2:
15
+ raise ValueError("Decoded data has an unexpected format.")
16
+
17
+ return parts[1]
18
+
19
+ def extract_data(raw_script: str) -> str:
20
+ pattern = re.compile(r'return result\}var .*?=.*?\("(.*?)"\)')
21
+ if match := pattern.search(raw_script):
22
+ return match[1]
23
+ else:
24
+ raise Exception("data not found")
6
25
 
7
26
  class CloseLoadExtractor(ExtractorBase):
8
27
  name = "CloseLoad"
@@ -15,12 +34,9 @@ class CloseLoadExtractor(ExtractorBase):
15
34
  istek = await self.httpx.get(url)
16
35
  istek.raise_for_status()
17
36
 
18
- secici = Selector(istek.text)
19
- atob = secici.re(r"aHR0[0-9a-zA-Z+/=]*")
20
- if not atob:
21
- raise ValueError("Base64 kodu bulunamadı.")
22
-
23
- m3u_link = b64decode(f"{atob[0]}===").decode("utf-8")
37
+ eval_func = re.compile(r'\s*(eval\(function[\s\S].*)\s*').findall(istek.text)[0]
38
+ m3u_link = get_m3u_link(extract_data(unpack(eval_func)))
39
+ print(m3u_link)
24
40
 
25
41
  await self.close()
26
42
  return ExtractResult(
@@ -0,0 +1,75 @@
1
+ # ! https://github.com/keyiflerolsun/Kekik-cloudstream/blob/master/FilmMakinesi/src/main/kotlin/com/keyiflerolsun/CloseLoadUnpacker.kt
2
+
3
+ import re
4
+
5
+ packed_extract_regex = re.compile(
6
+ r"\}\('(.*)',\s*(\d+),\s*(\d+),\s*'(.*?)'\.split\('\|'\)",
7
+ re.IGNORECASE | re.MULTILINE
8
+ )
9
+
10
+ unpack_replace_regex = re.compile(
11
+ r"\b\w+\b",
12
+ re.IGNORECASE | re.MULTILINE
13
+ )
14
+
15
+ class Unbaser:
16
+ ALPHABET = {
17
+ 52: "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP",
18
+ 54: "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQR",
19
+ 62: "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",
20
+ 95: " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
21
+ }
22
+
23
+ def __init__(self, base: int):
24
+ self.base = base
25
+
26
+ if base > 62:
27
+ self.selector = 95
28
+ elif base > 54:
29
+ self.selector = 62
30
+ elif base > 52:
31
+ self.selector = 54
32
+ else:
33
+ self.selector = 52
34
+
35
+ self.dict = {char: idx for idx, char in enumerate(Unbaser.ALPHABET[self.selector])}
36
+
37
+ def unbase(self, value: str) -> int:
38
+ if 2 <= self.base <= 36:
39
+ try:
40
+ return int(value, self.base)
41
+ except ValueError:
42
+ return 0
43
+ else:
44
+ result = 0
45
+
46
+ for index, c in enumerate(reversed(value)):
47
+ digit = self.dict.get(c, 0)
48
+ result += digit * (self.base ** index)
49
+
50
+ return result
51
+
52
+ def unpack(script_block: str) -> str:
53
+ match = packed_extract_regex.search(script_block)
54
+ if not match:
55
+ raise ValueError("Packed script not found")
56
+
57
+ payload, radix_str, count_str, symtab_str = match.groups()
58
+
59
+ radix = int(radix_str)
60
+ count = int(count_str)
61
+ symtab = symtab_str.split('|')
62
+
63
+ if len(symtab) != count:
64
+ raise ValueError("there is an error in the packed script")
65
+
66
+ unbaser = Unbaser(radix)
67
+
68
+ def replacer(match_obj):
69
+ word = match_obj.group(0)
70
+ index = unbaser.unbase(word)
71
+ replacement = symtab[index] if index < len(symtab) else word
72
+
73
+ return replacement or word
74
+
75
+ return unpack_replace_regex.sub(replacer, payload)
@@ -1,12 +1,48 @@
1
1
  # Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
2
2
 
3
- from KekikStream.Core import kekik_cache, PluginBase, SearchResult, SeriesInfo, Episode, Subtitle, ExtractResult
3
+ from KekikStream.Core import kekik_cache, PluginBase, MainPageResult, SearchResult, SeriesInfo, Episode, Subtitle, ExtractResult
4
4
  from parsel import Selector
5
5
  import re
6
6
 
7
7
  class DiziYou(PluginBase):
8
- name = "DiziYou"
9
- main_url = "https://www.diziyou1.com"
8
+ name = "DiziYou"
9
+ language = "tr"
10
+ main_url = "https://www.diziyou1.com"
11
+ favicon = f"https://www.google.com/s2/favicons?domain={main_url}&sz=64"
12
+ description = "Diziyou en kaliteli Türkçe dublaj ve altyazılı yabancı dizi izleme sitesidir. Güncel ve efsanevi dizileri 1080p Full HD kalitede izlemek için hemen tıkla!"
13
+
14
+ main_page = {
15
+ f"{main_url}/dizi-arsivi/page/SAYFA/?tur=Aile" : "Aile",
16
+ f"{main_url}/dizi-arsivi/page/SAYFA/?tur=Aksiyon" : "Aksiyon",
17
+ f"{main_url}/dizi-arsivi/page/SAYFA/?tur=Animasyon" : "Animasyon",
18
+ f"{main_url}/dizi-arsivi/page/SAYFA/?tur=Belgesel" : "Belgesel",
19
+ f"{main_url}/dizi-arsivi/page/SAYFA/?tur=Bilim+Kurgu" : "Bilim Kurgu",
20
+ f"{main_url}/dizi-arsivi/page/SAYFA/?tur=Dram" : "Dram",
21
+ f"{main_url}/dizi-arsivi/page/SAYFA/?tur=Fantazi" : "Fantazi",
22
+ f"{main_url}/dizi-arsivi/page/SAYFA/?tur=Gerilim" : "Gerilim",
23
+ f"{main_url}/dizi-arsivi/page/SAYFA/?tur=Gizem" : "Gizem",
24
+ f"{main_url}/dizi-arsivi/page/SAYFA/?tur=Komedi" : "Komedi",
25
+ f"{main_url}/dizi-arsivi/page/SAYFA/?tur=Korku" : "Korku",
26
+ f"{main_url}/dizi-arsivi/page/SAYFA/?tur=Macera" : "Macera",
27
+ f"{main_url}/dizi-arsivi/page/SAYFA/?tur=Sava%C5%9F" : "Savaş",
28
+ f"{main_url}/dizi-arsivi/page/SAYFA/?tur=Su%C3%A7" : "Suç",
29
+ f"{main_url}/dizi-arsivi/page/SAYFA/?tur=Vah%C5%9Fi+Bat%C4%B1" : "Vahşi Batı"
30
+ }
31
+
32
+ @kekik_cache(ttl=60*60)
33
+ async def get_main_page(self, page: int, url: str, category: str) -> list[MainPageResult]:
34
+ istek = await self.httpx.get(f"{url.replace('SAYFA', str(page))}")
35
+ secici = Selector(istek.text)
36
+
37
+ return [
38
+ MainPageResult(
39
+ category = category,
40
+ title = veri.css("div#categorytitle a::text").get(),
41
+ url = self.fix_url(veri.css("div#categorytitle a::attr(href)").get()),
42
+ poster = self.fix_url(veri.css("img::attr(src)").get()),
43
+ )
44
+ for veri in secici.css("div.single-item")
45
+ ]
10
46
 
11
47
  @kekik_cache(ttl=60*60)
12
48
  async def search(self, query: str) -> list[SearchResult]:
@@ -1,11 +1,55 @@
1
1
  # Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
2
2
 
3
- from KekikStream.Core import kekik_cache, PluginBase, SearchResult, MovieInfo
3
+ from KekikStream.Core import kekik_cache, PluginBase, MainPageResult, SearchResult, MovieInfo
4
4
  from parsel import Selector
5
5
 
6
6
  class FilmMakinesi(PluginBase):
7
- name = "FilmMakinesi"
8
- main_url = "https://filmmakinesi.de"
7
+ name = "FilmMakinesi"
8
+ language = "tr"
9
+ main_url = "https://filmmakinesi.de"
10
+ favicon = f"https://www.google.com/s2/favicons?domain={main_url}&sz=64"
11
+ description = "Film Makinesi, en yeni ve en güncel filmleri sitemizde full HD kalite farkı ile izleyebilirsiniz. HD film izle denildiğinde akla gelen en kaliteli film izleme sitesi."
12
+
13
+ main_page = {
14
+ f"{main_url}/page/" : "Son Filmler",
15
+ f"{main_url}/film-izle/olmeden-izlenmesi-gerekenler/page/" : "Ölmeden İzle",
16
+ f"{main_url}/film-izle/aksiyon-filmleri-izle/page/" : "Aksiyon",
17
+ f"{main_url}/film-izle/bilim-kurgu-filmi-izle/page/" : "Bilim Kurgu",
18
+ f"{main_url}/film-izle/macera-filmleri/page/" : "Macera",
19
+ f"{main_url}/film-izle/komedi-filmi-izle/page/" : "Komedi",
20
+ f"{main_url}/film-izle/romantik-filmler-izle/page/" : "Romantik",
21
+ f"{main_url}/film-izle/belgesel/page/" : "Belgesel",
22
+ f"{main_url}/film-izle/fantastik-filmler-izle/page/" : "Fantastik",
23
+ f"{main_url}/film-izle/polisiye-filmleri-izle/page/" : "Polisiye Suç",
24
+ f"{main_url}/film-izle/korku-filmleri-izle-hd/page/" : "Korku",
25
+ f"{main_url}/film-izle/savas/page/" : "Tarihi ve Savaş",
26
+ f"{main_url}/film-izle/gerilim-filmleri-izle/page/" : "Gerilim Heyecan",
27
+ f"{main_url}/film-izle/gizemli/page/" : "Gizem",
28
+ f"{main_url}/film-izle/aile-filmleri/page/" : "Aile",
29
+ f"{main_url}/film-izle/animasyon-filmler/page/" : "Animasyon",
30
+ f"{main_url}/film-izle/western/page/" : "Western",
31
+ f"{main_url}/film-izle/biyografi/page/" : "Biyografik",
32
+ f"{main_url}/film-izle/dram/page/" : "Dram",
33
+ f"{main_url}/film-izle/muzik/page/" : "Müzik",
34
+ f"{main_url}/film-izle/spor/page/" : "Spor"
35
+ }
36
+
37
+ @kekik_cache(ttl=60*60)
38
+ async def get_main_page(self, page: int, url: str, category: str) -> list[MainPageResult]:
39
+ istek = self.cloudscraper.get(f"{url}{page}")
40
+ secici = Selector(istek.text)
41
+
42
+ veriler = secici.css("section#film_posts article") if "/film-izle/" in url else secici.css("section#film_posts div.tooltip")
43
+
44
+ return [
45
+ MainPageResult(
46
+ category = category,
47
+ title = veri.css("h6 a::text").get(),
48
+ url = self.fix_url(veri.css("h6 a::attr(href)").get()),
49
+ poster = self.fix_url(veri.css("img::attr(data-src)").get() or veri.css("img::attr(src)").get()),
50
+ )
51
+ for veri in veriler
52
+ ]
9
53
 
10
54
  @kekik_cache(ttl=60*60)
11
55
  async def search(self, query: str) -> list[SearchResult]:
@@ -1,13 +1,60 @@
1
1
  # Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
2
2
 
3
- from KekikStream.Core import kekik_cache, PluginBase, SearchResult, MovieInfo
3
+ from KekikStream.Core import kekik_cache, PluginBase, MainPageResult, SearchResult, MovieInfo
4
4
  from parsel import Selector
5
5
  from Kekik.Sifreleme import StringCodec
6
6
  import json, re
7
7
 
8
8
  class FullHDFilmizlesene(PluginBase):
9
- name = "FullHDFilmizlesene"
10
- main_url = "https://www.fullhdfilmizlesene.de"
9
+ name = "FullHDFilmizlesene"
10
+ language = "tr"
11
+ main_url = "https://www.fullhdfilmizlesene.de"
12
+ favicon = f"https://www.google.com/s2/favicons?domain={main_url}&sz=64"
13
+ description = "Sinema zevkini evinize kadar getirdik. Türkiye'nin lider Film sitesinde, en yeni filmleri Full HD izleyin."
14
+
15
+ main_page = {
16
+ f"{main_url}/en-cok-izlenen-filmler-izle-hd/" : "En Çok izlenen Filmler",
17
+ f"{main_url}/filmizle/imdb-puani-yuksek-filmler-izle-1/" : "IMDB Puanı Yüksek Filmler",
18
+ f"{main_url}/filmizle/aile-filmleri-izle-2/" : "Aile Filmleri",
19
+ f"{main_url}/filmizle/aksiyon-filmler-izle-1/" : "Aksiyon Filmleri",
20
+ f"{main_url}/filmizle/animasyon-filmleri-izle-4/" : "Animasyon Filmleri",
21
+ f"{main_url}/filmizle/belgesel-filmleri-izle-2/" : "Belgeseller",
22
+ f"{main_url}/filmizle/bilim-kurgu-filmleri-izle-1/" : "Bilim Kurgu Filmleri",
23
+ f"{main_url}/filmizle/bluray-filmler-izle-1/" : "Blu Ray Filmler",
24
+ f"{main_url}/filmizle/cizgi-filmler-izle-1/" : "Çizgi Filmler",
25
+ f"{main_url}/filmizle/dram-filmleri-izle/" : "Dram Filmleri",
26
+ f"{main_url}/filmizle/fantastik-filmleri-izle-2/" : "Fantastik Filmler",
27
+ f"{main_url}/filmizle/gerilim-filmleri-izle-3/" : "Gerilim Filmleri",
28
+ f"{main_url}/filmizle/gizem-filmleri-izle/" : "Gizem Filmleri",
29
+ f"{main_url}/filmizle/hint-filmler-fh-hd-izle/" : "Hint Filmleri",
30
+ f"{main_url}/filmizle/komedi-filmleri-izle-2/" : "Komedi Filmleri",
31
+ f"{main_url}/filmizle/korku-filmleri-izle-2/" : "Korku Filmleri",
32
+ f"{main_url}/filmizle/macera-filmleri-izle-1/" : "Macera Filmleri",
33
+ f"{main_url}/filmizle/muzikal-filmleri-izle/" : "Müzikal Filmler",
34
+ f"{main_url}/filmizle/polisiye-filmleri-izle-1/" : "Polisiye Filmleri",
35
+ f"{main_url}/filmizle/psikolojik-filmleri-izle/" : "Psikolojik Filmler",
36
+ f"{main_url}/filmizle/romantik-filmler-izle-1/" : "Romantik Filmler",
37
+ f"{main_url}/filmizle/savas-filmleri-izle-2/" : "Savaş Filmleri",
38
+ f"{main_url}/filmizle/suc-filmleri-izle-3/" : "Suç Filmleri",
39
+ f"{main_url}/filmizle/tarih-filmleri-izle/" : "Tarih Filmleri",
40
+ f"{main_url}/filmizle/western-filmleri-izle/" : "Western Filmler",
41
+ f"{main_url}/filmizle/yerli-filmler-izle-3/" : "Yerli Filmler",
42
+ }
43
+
44
+ @kekik_cache(ttl=60*60)
45
+ async def get_main_page(self, page: int, url: str, category: str) -> list[MainPageResult]:
46
+ istek = self.cloudscraper.get(f"{url}{page}")
47
+ secici = Selector(istek.text)
48
+
49
+ return [
50
+ MainPageResult(
51
+ category = category,
52
+ title = veri.css("span.film-title::text").get(),
53
+ url = self.fix_url(veri.css("a::attr(href)").get()),
54
+ poster = self.fix_url(veri.css("img::attr(data-src)").get()),
55
+ )
56
+ for veri in secici.css("li.film")
57
+ ]
11
58
 
12
59
  @kekik_cache(ttl=60*60)
13
60
  async def search(self, query: str) -> list[SearchResult]:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: KekikStream
3
- Version: 1.3.0
3
+ Version: 1.3.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
@@ -15,7 +15,7 @@ KekikStream/Core/Plugin/PluginLoader.py,sha256=yZxMug-OcJ5RBm4fQkoquKrZxcBU7Pvt4
15
15
  KekikStream/Core/Plugin/PluginManager.py,sha256=CZVg1eegi8vfMfccx0DRV0Box8kXz-aoULTQLgbPbvM,893
16
16
  KekikStream/Core/Plugin/PluginModels.py,sha256=ZZJUXbC0G2k0DU7Wpbf0rwjn7spywpiaLIHE7kLajhk,2533
17
17
  KekikStream/Core/UI/UIManager.py,sha256=T4V_kdTTWa-UDamgLSKa__dWJuzcvRK9NuwBlzU9Bzc,1693
18
- KekikStream/Extractors/CloseLoad.py,sha256=q464dRwlNH347EcznyPvgWfMgDDgWI62cwT32HqZqpg,988
18
+ KekikStream/Extractors/CloseLoad.py,sha256=JUU4ZLfP9ahTRJwl7n2TMGyu9V8IIUJBmeN-RTywgrs,1486
19
19
  KekikStream/Extractors/ContentX.py,sha256=u1sDdM79MNx9OdPTPcAA0OQDS7537IO8aJlffxhMi8c,2976
20
20
  KekikStream/Extractors/FourCX.py,sha256=4FrMj1IZBBpN_g1P6S3A-8eUu7QFwlt4fJXzJ7vfe0Q,221
21
21
  KekikStream/Extractors/FourPichive.py,sha256=iq3BCUbih1UVF4y4BIWO--0hX5jP2nxqesNx3MGP3kQ,234
@@ -42,11 +42,12 @@ KekikStream/Extractors/VidMoly.py,sha256=O6F_82E-LeFVOgSw-ot91B1ZP8pqqt1jZ5pmkwk
42
42
  KekikStream/Extractors/VidMolyMe.py,sha256=ogLiFUJVqFbhtzQrZ1gSB9me85DiHvntjWtSvidYVS8,218
43
43
  KekikStream/Extractors/VidMoxy.py,sha256=T1iqfyOasRxoepmuWAmXeVW6E7M1O18KG3264KUSzc0,1798
44
44
  KekikStream/Extractors/VideoSeyred.py,sha256=M6QPZ_isX9vM_7LPo-2I_8Cf1vB9awHw8vvzBODtoiQ,1977
45
+ KekikStream/Helpers/Unpack.py,sha256=iS-r6k-NHlBleWsVwv_QXLaEMbJRBUXDKqVE6NkWEIk,2235
45
46
  KekikStream/Plugins/DiziBox.py,sha256=Vk7ujbMTORimFNXA7BTZkQnXs-6WBfI7iIJxFYRJaH0,9326
46
- KekikStream/Plugins/DiziYou.py,sha256=WL4IJqX7fwy5wiBo2fG0j4w60DhSfj0-_v0xXttcJBQ,5763
47
+ KekikStream/Plugins/DiziYou.py,sha256=_4ZV1T7Pco1_Hvbu9--QeDeU7xx_OfqtMWTNTAg2IY8,7995
47
48
  KekikStream/Plugins/Dizilla.py,sha256=E3HehhcnZBDVJzroRa7jlFzj3ixdx9-LT7YnWKmcX3Q,6899
48
- KekikStream/Plugins/FilmMakinesi.py,sha256=aViX27rzJ6VJEz8QpIUrCppgtHjSszY1z3J3hLN6f_U,2916
49
- KekikStream/Plugins/FullHDFilmizlesene.py,sha256=cmQ6t56OQi9DrQOYW2CDCnRSoW-utEHMqLiB1Fskod0,3138
49
+ KekikStream/Plugins/FilmMakinesi.py,sha256=J4v35Ln3RehWPai3I-9nWrasRLx3hN3IgrWVpt5b_HE,5712
50
+ KekikStream/Plugins/FullHDFilmizlesene.py,sha256=AO9Il0PE77JUvg1AN4Vxl95pTrCBbOjclqFGWuzo7cY,6271
50
51
  KekikStream/Plugins/HDFilmCehennemi.py,sha256=I932zIgfJeqcD64Lb2742n24JF84aQ7To-WVDtn5fnE,6767
51
52
  KekikStream/Plugins/JetFilmizle.py,sha256=2gXx55v3e46pcn_rNXgvLqIOe7Bg0FcZJ_UHznBfC5M,4008
52
53
  KekikStream/Plugins/RecTV.py,sha256=Ff0-YrrzkiBvKo6FelMIX5vtJw22WvXmZpiKyboX7Kg,5163
@@ -54,9 +55,9 @@ KekikStream/Plugins/SezonlukDizi.py,sha256=fNVVKYIDiZnAYNT84sEp3PuPJwn6Az12UjiCO
54
55
  KekikStream/Plugins/Shorten.py,sha256=ei3lDfGWX-pAWxASxeusKZWNHlYe-a4uNKUMo69wemk,8945
55
56
  KekikStream/Plugins/SineWix.py,sha256=XbuV8PxScbx87GuLkgHul-AdBKMDA-nCoAxr4pb2PNc,7141
56
57
  KekikStream/Plugins/UgurFilm.py,sha256=xLxUI8nx9xH18wB9dhSWEvLGdxuonRkf75BnjIOkfPY,3019
57
- kekikstream-1.3.0.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
58
- kekikstream-1.3.0.dist-info/METADATA,sha256=7b_t9V4v6eq3Vg5GGTh5hwPzi4GplkAB4bjeVQpWe3w,4508
59
- kekikstream-1.3.0.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
60
- kekikstream-1.3.0.dist-info/entry_points.txt,sha256=dFwdiTx8djyehI0Gsz-rZwjAfZzUzoBSrmzRu9ubjJc,50
61
- kekikstream-1.3.0.dist-info/top_level.txt,sha256=DNmGJDXl27Drdfobrak8KYLmocW_uznVYFJOzcjUgmY,12
62
- kekikstream-1.3.0.dist-info/RECORD,,
58
+ kekikstream-1.3.2.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
59
+ kekikstream-1.3.2.dist-info/METADATA,sha256=Z3Ki6yHqDcrKAUIpDyibxw-1m2zd6IUfxvC5kn_OY04,4508
60
+ kekikstream-1.3.2.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
61
+ kekikstream-1.3.2.dist-info/entry_points.txt,sha256=dFwdiTx8djyehI0Gsz-rZwjAfZzUzoBSrmzRu9ubjJc,50
62
+ kekikstream-1.3.2.dist-info/top_level.txt,sha256=DNmGJDXl27Drdfobrak8KYLmocW_uznVYFJOzcjUgmY,12
63
+ kekikstream-1.3.2.dist-info/RECORD,,