KekikStream 1.8.7__py3-none-any.whl → 1.8.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,13 +2,62 @@
2
2
 
3
3
  from ...CLI import konsol
4
4
  from ..Extractor.ExtractorModels import ExtractResult
5
- import subprocess, os
5
+ import subprocess, os, yt_dlp
6
6
 
7
7
  class MediaHandler:
8
8
  def __init__(self, title: str = "KekikStream"):
9
9
  self.title = title
10
10
  self.headers = {}
11
11
 
12
+ def should_use_ytdlp(self, url: str, user_agent: str) -> bool:
13
+ """
14
+ yt-dlp gereken durumları profesyonel şekilde tespit et
15
+
16
+ yt-dlp'nin native Python API'sini simulate mode ile kullanarak
17
+ güvenilir ve performanslı tespit yapar.
18
+
19
+ Args:
20
+ url: Video URL'si
21
+ user_agent: User-Agent string'i
22
+
23
+ Returns:
24
+ bool: yt-dlp kullanılması gerekiyorsa True
25
+ """
26
+ # 1. User-Agent bazlı kontrol (mevcut davranışı koru - RecTV, MolyStream için)
27
+ ytdlp_user_agents = [
28
+ "googleusercontent",
29
+ "Mozilla/5.0 (X11; Linux x86_64; rv:101.0) Gecko/20100101 Firefox/101.0"
30
+ ]
31
+
32
+ if user_agent in ytdlp_user_agents:
33
+ konsol.log("[cyan][ℹ] User-Agent bazlı yt-dlp tespiti[/cyan]")
34
+ return True
35
+
36
+ # 2. yt-dlp'nin native Python API'sini kullan (simulate mode)
37
+ try:
38
+ ydl_opts = {
39
+ "simulate" : True, # Download yok, sadece tespit
40
+ "quiet" : True, # Log kirliliği yok
41
+ "no_warnings" : True, # Uyarı mesajları yok
42
+ "extract_flat" : True # Minimal işlem
43
+ }
44
+
45
+ with yt_dlp.YoutubeDL(ydl_opts) as ydl:
46
+ # URL'yi işleyebiliyor mu kontrol et
47
+ info = ydl.extract_info(url, download=False, process=False)
48
+
49
+ # Generic extractor ise atla
50
+ if info and info.get("extractor_key") != "Generic":
51
+ konsol.log(f"[cyan][ℹ] yt-dlp extractor: {info.get('extractor_key', 'Unknown')}[/cyan]")
52
+ return True
53
+
54
+ return False
55
+
56
+ except Exception as e:
57
+ # yt-dlp işleyemezse False döndür
58
+ konsol.log(f"[yellow][⚠] yt-dlp kontrol hatası: {e}[/yellow]")
59
+ return False
60
+
12
61
  def play_media(self, extract_data: ExtractResult):
13
62
  # user-agent ekle (varsayılan veya extract_data'dan)
14
63
  user_agent = extract_data.user_agent or "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5)"
@@ -18,19 +67,38 @@ class MediaHandler:
18
67
  if extract_data.referer:
19
68
  self.headers["referer"] = extract_data.referer
20
69
 
21
- # Google Drive gibi özel durumlar için yt-dlp kullan
22
- if user_agent in ["googleusercontent", "Mozilla/5.0 (X11; Linux x86_64; rv:101.0) Gecko/20100101 Firefox/101.0"]:
23
- return self.play_with_ytdlp(extract_data)
24
-
25
- # İşletim sistemine göre oynatıcı seç
70
+ # İşletim sistemine göre oynatıcı seç (Android durumu)
26
71
  if subprocess.check_output(['uname', '-o']).strip() == b'Android':
27
72
  return self.play_with_android_mxplayer(extract_data)
28
73
 
29
- # Alt yazılar varsa mpv kullan
30
- if extract_data.subtitles:
31
- return self.play_with_mpv(extract_data)
74
+ # Akıllı yt-dlp tespiti
75
+ if self.should_use_ytdlp(extract_data.url, user_agent):
76
+ konsol.log("[green][✓] yt-dlp kullanılacak[/green]")
77
+ success = self.play_with_ytdlp(extract_data)
78
+ if success:
79
+ return True
80
+ konsol.log("[yellow][⚠] yt-dlp başarısız, standart oynatıcılar deneniyor...[/yellow]")
81
+
82
+ # Oynatıcı öncelik sırası (fallback zincirleme)
83
+ players = [
84
+ ("MPV", self.play_with_mpv),
85
+ ("VLC", self.play_with_vlc),
86
+ ("yt-dlp", self.play_with_ytdlp)
87
+ ]
88
+
89
+ # Fallback zincirleme
90
+ for player_name, player_func in players:
91
+ try:
92
+ result = player_func(extract_data)
93
+ if result or result is None: # None = MPV (exception yok)
94
+ konsol.log(f"[green][✓] {player_name} ile başarılı[/green]")
95
+ return True
96
+ except Exception as e:
97
+ konsol.log(f"[yellow][⚠] {player_name} hatası: {e}[/yellow]")
98
+ continue
32
99
 
33
- return self.play_with_vlc(extract_data) or self.play_with_mpv(extract_data)
100
+ konsol.print("[red][✗] Hiçbir oynatıcı çalışmadı![/red]")
101
+ return False
34
102
 
35
103
  def play_with_vlc(self, extract_data: ExtractResult):
36
104
  konsol.log(f"[yellow][»] VLC ile Oynatılıyor : {extract_data.url}")
@@ -88,12 +156,15 @@ class MediaHandler:
88
156
  with open(os.devnull, "w") as devnull:
89
157
  subprocess.run(mpv_command, stdout=devnull, stderr=devnull, check=True)
90
158
 
159
+ return True
91
160
  except subprocess.CalledProcessError as hata:
92
161
  konsol.print(f"[red]mpv oynatma hatası: {hata}[/red]")
93
162
  konsol.print({"title": self.title, "url": extract_data.url, "headers": self.headers})
163
+ return False
94
164
  except FileNotFoundError:
95
165
  konsol.print("[red]mpv bulunamadı! mpv kurulu olduğundan emin olun.[/red]")
96
166
  konsol.print({"title": self.title, "url": extract_data.url, "headers": self.headers})
167
+ return False
97
168
 
98
169
  def play_with_ytdlp(self, extract_data: ExtractResult):
99
170
  konsol.log(f"[yellow][»] yt-dlp ile Oynatılıyor : {extract_data.url}")
@@ -121,12 +192,15 @@ class MediaHandler:
121
192
  with subprocess.Popen(ytdlp_command, stdout=subprocess.PIPE) as ytdlp_proc:
122
193
  subprocess.run(mpv_command, stdin=ytdlp_proc.stdout, check=True)
123
194
 
195
+ return True
124
196
  except subprocess.CalledProcessError as hata:
125
197
  konsol.print(f"[red]Oynatma hatası: {hata}[/red]")
126
198
  konsol.print({"title": self.title, "url": extract_data.url, "headers": self.headers})
199
+ return False
127
200
  except FileNotFoundError:
128
201
  konsol.print("[red]yt-dlp veya mpv bulunamadı! Kurulumlarından emin olun.[/red]")
129
202
  konsol.print({"title": self.title, "url": extract_data.url, "headers": self.headers})
203
+ return False
130
204
 
131
205
  def play_with_android_mxplayer(self, extract_data: ExtractResult):
132
206
  konsol.log(f"[yellow][»] MxPlayer ile Oynatılıyor : {extract_data.url}")
@@ -151,11 +225,12 @@ class MediaHandler:
151
225
  with open(os.devnull, "w") as devnull:
152
226
  subprocess.run(android_command, stdout=devnull, stderr=devnull, check=True)
153
227
 
154
- return
155
-
228
+ return True
156
229
  except subprocess.CalledProcessError as hata:
157
230
  konsol.print(f"[red]{paket} oynatma hatası: {hata}[/red]")
158
231
  konsol.print({"title": self.title, "url": extract_data.url, "headers": self.headers})
232
+ return False
159
233
  except FileNotFoundError:
160
234
  konsol.print(f"Paket: {paket}, Hata: MX Player kurulu değil")
161
235
  konsol.print({"title": self.title, "url": extract_data.url, "headers": self.headers})
236
+ return False
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: KekikStream
3
- Version: 1.8.7
3
+ Version: 1.8.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
@@ -51,8 +51,8 @@ Dynamic: summary
51
51
 
52
52
  [![PyPI Yükle](https://github.com/keyiflerolsun/KekikStream/actions/workflows/pypiYukle.yml/badge.svg)](https://github.com/keyiflerolsun/KekikStream/actions/workflows/pypiYukle.yml)
53
53
 
54
- **Modüler ve Genişletilebilir Medya Streaming Kütüphanesi**
55
- Terminal üzerinden medya içeriği arayın, VLC/MPV ile doğrudan izleyin! 🚀
54
+ **Modüler ve genişletilebilir medya streaming kütüphanesi**
55
+ Terminal üzerinden içerik arayın, VLC/MPV ile doğrudan izleyin veya kendi API’nizi kurun. 🚀
56
56
 
57
57
  [![Video](https://github.com/user-attachments/assets/63d31bb0-0b69-40b4-84aa-66623f2a253f)](https://github.com/user-attachments/assets/63d31bb0-0b69-40b4-84aa-66623f2a253f)
58
58
 
@@ -61,41 +61,96 @@ Terminal üzerinden medya içeriği arayın, VLC/MPV ile doğrudan izleyin! 🚀
61
61
 
62
62
  ---
63
63
 
64
- ## 🌟 Genel Bakış
64
+ ## 🚦 Ne Sunar?
65
65
 
66
- **KekikStream**, Türkçe medya kaynaklarından içerik aramanızı ve popüler medya oynatıcılar ile izlemenizi sağlayan Python kütüphanesidir.
66
+ KekikStream, Türkçe medya kaynaklarını tek CLI arayüzünde toplayarak hızlı arama ve oynatma sunar. Plugin mimarisi sayesinde yeni kaynaklar eklemek ve [KekikStreamAPI](https://github.com/keyiflerolsun/KekikStreamAPI) ile web/API üzerinden yayın yapmak kolaydır.
67
67
 
68
- ### Temel Özellikler
69
-
70
- - 🎥 **Çoklu Kaynak Desteği** - Onlarca Türkçe medya sitesi desteği
71
- - 🔌 **Plugin Mimarisi** - Kolayca yeni kaynaklar ekleyin
72
- - 🎬 **Çoklu Oynatıcı** - VLC, MPV, MX Player desteği
73
- - 🖥️ **CLI & Kütüphane** - Terminal veya kod içinde kullanın
74
- - 🌐 **API ve Web UI Desteği** - [KekikStreamAPI](https://github.com/keyiflerolsun/KekikStreamAPI) ile ağ üzerinden erişim
68
+ - 🎥 Çoklu kaynak desteği: Onlarca Türkçe medya sitesi
69
+ - 🔌 Plugin mimarisi: Yeni kaynak eklemek dakikalar sürer
70
+ - 🎬 Çoklu oynatıcı: VLC, MPV, MX Player
71
+ - 🖥️ CLI & kütüphane: Terminalde veya kod içinde kullanın
72
+ - 🌐 API/Web UI: KekikStreamAPI üzerinden uzak erişim
75
73
 
76
74
  ---
77
75
 
78
76
  ## 🚀 Hızlı Başlangıç
79
77
 
80
- ### Kurulum
78
+ > Gereksinimler: Python 3.11+, sistemde VLC veya MPV kurulu olmalı (Android için MX Player + ADB).
81
79
 
82
80
  ```bash
83
- # Yüklemek
81
+ # Kurulum
84
82
  pip install KekikStream
85
83
 
86
- # Güncellemek
84
+ # Güncelleme
87
85
  pip install -U KekikStream
88
86
  ```
89
87
 
90
- > **Gereksinimler:** Sisteminizde VLC veya MPV yüklü olmalıdır.
91
-
92
88
  ### Temel Kullanım
93
89
 
94
- **Terminal:**
90
+ **CLI:**
95
91
  ```bash
96
92
  KekikStream
97
93
  ```
98
94
 
95
+ **Kütüphane (örnek arama):**
96
+ ```python
97
+ from KekikStream import Manager
98
+ results = Manager().search("vikings")
99
+ print(results[0].title)
100
+ ```
101
+
102
+ ---
103
+
104
+ ## ✨ Özellikler
105
+
106
+ ### 🔌 Plugin Sistemi
107
+
108
+ KekikStream modüler bir plugin mimarisi kullanır; her medya kaynağı bağımsız bir plugin'dir.
109
+
110
+ **Mevcut Pluginler (örnek):** Dizilla, HDFilmCehennemi, Dizipal, Dizifon, RoketDizi, Sinefy, Moviesseed, FullHDFilmizlesene, HDBestMovies, SuperFilmGeldi, Sinezy ve daha fazlası.
111
+
112
+ **Plugin Geliştirme:**
113
+ ```python
114
+ from KekikStream.Core import PluginBase, MainPageResult, SearchResult, MovieInfo, SeriesInfo
115
+
116
+ class MyPlugin(PluginBase):
117
+ name = "MyPlugin"
118
+ language = "en"
119
+ main_url = "https://example.com"
120
+ favicon = f"https://www.google.com/s2/favicons?domain={main_url}&sz=64"
121
+ description = "MyPlugin description"
122
+
123
+ main_page = {
124
+ f"{main_url}/category/" : "Category Name"
125
+ }
126
+
127
+ async def get_main_page(self, page: int, url: str, category: str) -> list[MainPageResult]:
128
+ return results
129
+
130
+ async def search(self, query: str) -> list[SearchResult]:
131
+ return results
132
+
133
+ async def load_item(self, url: str) -> MovieInfo | SeriesInfo:
134
+ return details
135
+
136
+ async def load_links(self, url: str) -> list[dict]:
137
+ return links
138
+ ```
139
+
140
+ ### 🎬 Oynatıcı Desteği
141
+
142
+ | Oynatıcı | Platform | Özellikler |
143
+ |----------|----------|------------|
144
+ | **VLC** | Desktop | Custom headers, subtitles, varsayılan |
145
+ | **MPV** | Desktop | Custom headers, subtitles |
146
+ | **MX Player** | Android | ADB üzerinden |
147
+
148
+ > Özel durumlar için (Google Drive vb.) arka planda otomatik olarak yt-dlp devreye girer.
149
+
150
+ ### 🔗 Extractor Sistemi
151
+
152
+ Vidmoly, Filemoon, Sibnet, Sendvid, Voe, Doodstream, Streamtape, Upstream, Dailymotion, JWPlayer ve birçok kaynaktan direkt streaming linki çıkarır.
153
+
99
154
  ---
100
155
 
101
156
  ## 🏗️ Mimari
@@ -164,69 +219,6 @@ graph TB
164
219
 
165
220
  ---
166
221
 
167
- ## ✨ Özellikler
168
-
169
- ### 🔌 Plugin Sistemi
170
-
171
- KekikStream modüler bir plugin mimarisi kullanır. Her medya kaynağı bağımsız bir plugin'dir.
172
-
173
- **Mevcut Pluginler:**
174
- - Dizilla, HDFilmCehennemi, Dizipal, Dizifon
175
- - RoketDizi, Sinefy, Moviesseed, FullHDFilmizlesene
176
- - HDBestMovies, SuperFilmGeldi, Sinezy ve daha fazlası...
177
-
178
- **Plugin Geliştirme:**
179
- ```python
180
- from KekikStream.Core import PluginBase, MainPageResult, SearchResult, MovieInfo, SeriesInfo
181
-
182
- class MyPlugin(PluginBase):
183
- name = "MyPlugin"
184
- language = "en"
185
- main_url = "https://example.com"
186
- favicon = f"https://www.google.com/s2/favicons?domain={main_url}&sz=64"
187
- description = "MyPlugin description"
188
-
189
- main_page = {
190
- f"{main_url}/category/" : "Category Name"
191
- }
192
-
193
- async def get_main_page(self, page: int, url: str, category: str) -> list[MainPageResult]:
194
- # Ana sayfa implementasyonu
195
- return results
196
-
197
- async def search(self, query: str) -> list[SearchResult]:
198
- # Arama implementasyonu
199
- return results
200
-
201
- async def load_item(self, url: str) -> MovieInfo | SeriesInfo:
202
- # İçerik detayları
203
- return details
204
-
205
- async def load_links(self, url: str) -> list[dict]:
206
- # Video bağlantıları
207
- return links
208
- ```
209
-
210
- ### 🎬 Oynatıcı Desteği
211
-
212
- | Oynatıcı | Platform | Özellikler |
213
- |----------|----------|------------|
214
- | **VLC** | Desktop | Custom headers, subtitles, varsayılan |
215
- | **MPV** | Desktop | Custom headers, subtitles |
216
- | **MX Player** | Android | ADB üzerinden |
217
-
218
- > **Not:** Özel durumlar için (Google Drive, vb.) arka planda otomatik olarak yt-dlp kullanılabilir.
219
-
220
- ### 🔗 Extractor Sistemi
221
-
222
- Video barındırma sitelerinden direkt streaming linkleri çıkarır:
223
-
224
- - Vidmoly, Filemoon, Sibnet, Sendvid
225
- - Voe, Doodstream, Streamtape, Upstream
226
- - Dailymotion, JWPlayer ve daha fazlası...
227
-
228
- ---
229
-
230
222
  ## 🛠️ Geliştirme
231
223
 
232
224
  ### Proje Yapısı
@@ -245,12 +237,10 @@ KekikStream/
245
237
 
246
238
  ### Yeni Plugin Ekleme
247
239
 
248
- 1. `KekikStream/Plugins/` altına yeni dosya oluşturun
249
- 2. `PluginBase` sınıfından türetin
250
- 3. Gerekli metodları implemente edin (`get_main_page`, `search`, `load_item`, `load_links`)
251
- 4. Plugin'i test edin
252
-
253
- **Örnek:** [Tests/Single.py](https://github.com/keyiflerolsun/KekikStream/blob/master/Tests/Single.py)
240
+ 1. `KekikStream/Plugins/` altına yeni dosya oluşturun.
241
+ 2. `PluginBase` sınıfından türetin.
242
+ 3. `get_main_page`, `search`, `load_item`, `load_links` metodlarını implemente edin.
243
+ 4. Plugin'i test edin (örnek: `Tests/Single.py`).
254
244
 
255
245
  ---
256
246
 
@@ -270,12 +260,10 @@ KekikStream/
270
260
 
271
261
  Projeyi geliştirmek için katkılarınızı bekliyoruz!
272
262
 
273
- ### Nasıl Katkıda Bulunulur?
274
-
275
- 1. **Yeni Plugin Ekleyin:** Türkçe medya sitesi desteği ekleyin
276
- 2. **Bug Raporu:** GitHub Issues kullanın
277
- 3. **Feature Request:** Yeni özellik önerileri
278
- 4. **Dokümantasyon:** README ve kod dokümantasyonu iyileştirmeleri
263
+ 1. Yeni plugin ekleyin
264
+ 2. Bug raporu açın
265
+ 3. Feature request gönderin
266
+ 4. Dokümantasyon iyileştirin
279
267
 
280
268
  ### 🎁 Teşekkürler
281
269
 
@@ -283,14 +271,13 @@ Projeyi geliştirmek için katkılarınızı bekliyoruz!
283
271
 
284
272
  ### 💻 Genişletme Referansları
285
273
 
286
- - [keyiflerolsun/Kekik-cloudstream](https://github.com/keyiflerolsun/Kekik-cloudstream)
274
+ - [keyiflerolsun/Kekik-cloudstream](https://github.com/keyiflerolsun/Kekik-cloudstream)
287
275
  - [keyiflerolsun/seyirTurk-Parser](https://github.com/keyiflerolsun/seyirTurk-Parser)
288
276
 
289
277
  ## 🌐 Telif Hakkı ve Lisans
290
278
 
291
- * *Copyright (C) 2024 by* [keyiflerolsun](https://github.com/keyiflerolsun) ❤️️
292
- * [GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007](https://github.com/keyiflerolsun/KekikStream/blob/master/LICENSE) *Koşullarına göre lisanslanmıştır..*
293
-
279
+ *Copyright (C) 2024 by* [keyiflerolsun](https://github.com/keyiflerolsun) ❤️️
280
+ [GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007](https://github.com/keyiflerolsun/KekikStream/blob/master/LICENSE) *Koşullarına göre lisanslanmıştır..*
294
281
 
295
282
  ---
296
283
 
@@ -8,7 +8,7 @@ KekikStream/Core/Extractor/ExtractorBase.py,sha256=Yj7CGvm2ZKxlvuUkZu0X1Pl0JMH25
8
8
  KekikStream/Core/Extractor/ExtractorLoader.py,sha256=7uxUXTAuF65KKkmbI6iRiCiUhx-IqrronB7ixhchcTU,4289
9
9
  KekikStream/Core/Extractor/ExtractorManager.py,sha256=4L1H3jiTnf0kTq4W6uS7n95bBYHlKJ8_hh0og8z4erQ,1244
10
10
  KekikStream/Core/Extractor/ExtractorModels.py,sha256=Qj_gbIeGRewaZXNfYkTi4FFRRq6XBOc0HS0tXGDwajI,445
11
- KekikStream/Core/Media/MediaHandler.py,sha256=taLA3rXsN_VfNn7nIc_OZKaaif8kuEZznhH_EaOiQQk,6874
11
+ KekikStream/Core/Media/MediaHandler.py,sha256=9TVF0zuoj_1jSVOoU-juD6n_XsjnjiHg1IFJrpg1m8k,9705
12
12
  KekikStream/Core/Media/MediaManager.py,sha256=AaUq2D7JSJIphjoAj2fjLOJjswm7Qf5hjYCbBdrbnDU,438
13
13
  KekikStream/Core/Plugin/PluginBase.py,sha256=uzJb8DqJfXOteteSBhG9QWUrFgb4JTByV_GbODz-9gs,3872
14
14
  KekikStream/Core/Plugin/PluginLoader.py,sha256=yZxMug-OcJ5RBm4fQkoquKrZxcBU7Pvt4IcY-d0WU8g,3393
@@ -77,9 +77,9 @@ KekikStream/Plugins/SinemaCX.py,sha256=DUvYa7J4a2D5ivLO_sQiaStoV5FDxmz8onJyFwAid
77
77
  KekikStream/Plugins/Sinezy.py,sha256=EttAZogKoKMP8RP_X1fSfi8vVxA2RWizwgnLkmnhERQ,5675
78
78
  KekikStream/Plugins/SuperFilmGeldi.py,sha256=Ohm21BPsJH_S1tx5i2APEgAOD25k2NiwRP7rSgAKvRs,5289
79
79
  KekikStream/Plugins/UgurFilm.py,sha256=eKGzmSi8k_QbXnYPWXZRdmCxxc32zZh4rynmdxCbm1o,4832
80
- kekikstream-1.8.7.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
81
- kekikstream-1.8.7.dist-info/METADATA,sha256=OzA3YpqYXhJinW_vQHOL7FOI1I_2tQp-VlyK0rJqYgw,9259
82
- kekikstream-1.8.7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
83
- kekikstream-1.8.7.dist-info/entry_points.txt,sha256=dFwdiTx8djyehI0Gsz-rZwjAfZzUzoBSrmzRu9ubjJc,50
84
- kekikstream-1.8.7.dist-info/top_level.txt,sha256=DNmGJDXl27Drdfobrak8KYLmocW_uznVYFJOzcjUgmY,12
85
- kekikstream-1.8.7.dist-info/RECORD,,
80
+ kekikstream-1.8.9.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
81
+ kekikstream-1.8.9.dist-info/METADATA,sha256=biuumq6cqyGbTCNqBqMbXN0npvJGYrdZK8DokgOOxeQ,9035
82
+ kekikstream-1.8.9.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
83
+ kekikstream-1.8.9.dist-info/entry_points.txt,sha256=dFwdiTx8djyehI0Gsz-rZwjAfZzUzoBSrmzRu9ubjJc,50
84
+ kekikstream-1.8.9.dist-info/top_level.txt,sha256=DNmGJDXl27Drdfobrak8KYLmocW_uznVYFJOzcjUgmY,12
85
+ kekikstream-1.8.9.dist-info/RECORD,,