KekikStream 1.8.7__py3-none-any.whl → 1.8.8__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,59 @@
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
+ self._ytdlp_extractors = yt_dlp.extractor.list_extractors()
13
+
14
+ def should_use_ytdlp(self, url: str, user_agent: str) -> bool:
15
+ """
16
+ yt-dlp gereken durumları akıllıca tespit et
17
+
18
+ yt-dlp'nin kendi 1863+ extractor'ını kullanarak otomatik tespit yapar.
19
+ YouTube, Vimeo, Twitch, TikTok, Instagram vb. binlerce site için çalışır.
20
+
21
+ Args:
22
+ url: Video URL'si
23
+ user_agent: User-Agent string'i
24
+
25
+ Returns:
26
+ bool: yt-dlp kullanılması gerekiyorsa True
27
+ """
28
+ # 1. User-Agent bazlı kontrol (mevcut davranışı koru - RecTV, MolyStream için)
29
+ ytdlp_user_agents = [
30
+ "googleusercontent",
31
+ "Mozilla/5.0 (X11; Linux x86_64; rv:101.0) Gecko/20100101 Firefox/101.0"
32
+ ]
33
+
34
+ if user_agent in ytdlp_user_agents:
35
+ konsol.log("[cyan][ℹ] User-Agent bazlı yt-dlp tespiti[/cyan]")
36
+ return True
37
+
38
+ # 2. yt-dlp'nin kendi extractor tespitini kullan
39
+ try:
40
+ # Tüm extractorları kontrol et (Generic hariç)
41
+ for ie in self._ytdlp_extractors:
42
+ # Generic extractor'ı atla (her URL'ye uygundur ama özel değildir)
43
+ if ie.ie_key() == 'Generic':
44
+ continue
45
+
46
+ # Bu extractor bu URL'yi işleyebilir mi?
47
+ if ie.suitable(url):
48
+ konsol.log(f"[cyan][ℹ] yt-dlp extractor bulundu: {ie.ie_key()}[/cyan]")
49
+ return True
50
+
51
+ # Özel extractor bulunamadı
52
+ return False
53
+
54
+ except Exception as e:
55
+ konsol.log(f"[yellow][⚠] yt-dlp kontrol hatası: {e}[/yellow]")
56
+ return False
57
+
12
58
  def play_media(self, extract_data: ExtractResult):
13
59
  # user-agent ekle (varsayılan veya extract_data'dan)
14
60
  user_agent = extract_data.user_agent or "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5)"
@@ -18,19 +64,38 @@ class MediaHandler:
18
64
  if extract_data.referer:
19
65
  self.headers["referer"] = extract_data.referer
20
66
 
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ç
67
+ # İşletim sistemine göre oynatıcı seç (Android durumu)
26
68
  if subprocess.check_output(['uname', '-o']).strip() == b'Android':
27
69
  return self.play_with_android_mxplayer(extract_data)
28
70
 
29
- # Alt yazılar varsa mpv kullan
30
- if extract_data.subtitles:
31
- return self.play_with_mpv(extract_data)
71
+ # Akıllı yt-dlp tespiti
72
+ if self.should_use_ytdlp(extract_data.url, user_agent):
73
+ konsol.log("[green][✓] yt-dlp kullanılacak[/green]")
74
+ success = self.play_with_ytdlp(extract_data)
75
+ if success:
76
+ return True
77
+ konsol.log("[yellow][⚠] yt-dlp başarısız, standart oynatıcılar deneniyor...[/yellow]")
78
+
79
+ # Oynatıcı öncelik sırası (fallback zincirleme)
80
+ players = [
81
+ ("MPV", self.play_with_mpv),
82
+ ("VLC", self.play_with_vlc),
83
+ ("yt-dlp", self.play_with_ytdlp)
84
+ ]
85
+
86
+ # Fallback zincirleme
87
+ for player_name, player_func in players:
88
+ try:
89
+ result = player_func(extract_data)
90
+ if result or result is None: # None = MPV (exception yok)
91
+ konsol.log(f"[green][✓] {player_name} ile başarılı[/green]")
92
+ return True
93
+ except Exception as e:
94
+ konsol.log(f"[yellow][⚠] {player_name} hatası: {e}[/yellow]")
95
+ continue
32
96
 
33
- return self.play_with_vlc(extract_data) or self.play_with_mpv(extract_data)
97
+ konsol.print("[red][✗] Hiçbir oynatıcı çalışmadı![/red]")
98
+ return False
34
99
 
35
100
  def play_with_vlc(self, extract_data: ExtractResult):
36
101
  konsol.log(f"[yellow][»] VLC ile Oynatılıyor : {extract_data.url}")
@@ -88,12 +153,15 @@ class MediaHandler:
88
153
  with open(os.devnull, "w") as devnull:
89
154
  subprocess.run(mpv_command, stdout=devnull, stderr=devnull, check=True)
90
155
 
156
+ return True
91
157
  except subprocess.CalledProcessError as hata:
92
158
  konsol.print(f"[red]mpv oynatma hatası: {hata}[/red]")
93
159
  konsol.print({"title": self.title, "url": extract_data.url, "headers": self.headers})
160
+ return False
94
161
  except FileNotFoundError:
95
162
  konsol.print("[red]mpv bulunamadı! mpv kurulu olduğundan emin olun.[/red]")
96
163
  konsol.print({"title": self.title, "url": extract_data.url, "headers": self.headers})
164
+ return False
97
165
 
98
166
  def play_with_ytdlp(self, extract_data: ExtractResult):
99
167
  konsol.log(f"[yellow][»] yt-dlp ile Oynatılıyor : {extract_data.url}")
@@ -121,12 +189,15 @@ class MediaHandler:
121
189
  with subprocess.Popen(ytdlp_command, stdout=subprocess.PIPE) as ytdlp_proc:
122
190
  subprocess.run(mpv_command, stdin=ytdlp_proc.stdout, check=True)
123
191
 
192
+ return True
124
193
  except subprocess.CalledProcessError as hata:
125
194
  konsol.print(f"[red]Oynatma hatası: {hata}[/red]")
126
195
  konsol.print({"title": self.title, "url": extract_data.url, "headers": self.headers})
196
+ return False
127
197
  except FileNotFoundError:
128
198
  konsol.print("[red]yt-dlp veya mpv bulunamadı! Kurulumlarından emin olun.[/red]")
129
199
  konsol.print({"title": self.title, "url": extract_data.url, "headers": self.headers})
200
+ return False
130
201
 
131
202
  def play_with_android_mxplayer(self, extract_data: ExtractResult):
132
203
  konsol.log(f"[yellow][»] MxPlayer ile Oynatılıyor : {extract_data.url}")
@@ -151,11 +222,12 @@ class MediaHandler:
151
222
  with open(os.devnull, "w") as devnull:
152
223
  subprocess.run(android_command, stdout=devnull, stderr=devnull, check=True)
153
224
 
154
- return
155
-
225
+ return True
156
226
  except subprocess.CalledProcessError as hata:
157
227
  konsol.print(f"[red]{paket} oynatma hatası: {hata}[/red]")
158
228
  konsol.print({"title": self.title, "url": extract_data.url, "headers": self.headers})
229
+ return False
159
230
  except FileNotFoundError:
160
231
  konsol.print(f"Paket: {paket}, Hata: MX Player kurulu değil")
161
232
  konsol.print({"title": self.title, "url": extract_data.url, "headers": self.headers})
233
+ 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.8
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=ZVFFWeXpZxrcdDcAQdYdm-l7_0PLG1J8vU-2e3Ti00E,9546
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.8.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
81
+ kekikstream-1.8.8.dist-info/METADATA,sha256=2hr4Q7pK4ntzpb6wrrYvLoW-jg534soRIxehxJIZOk8,9035
82
+ kekikstream-1.8.8.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
83
+ kekikstream-1.8.8.dist-info/entry_points.txt,sha256=dFwdiTx8djyehI0Gsz-rZwjAfZzUzoBSrmzRu9ubjJc,50
84
+ kekikstream-1.8.8.dist-info/top_level.txt,sha256=DNmGJDXl27Drdfobrak8KYLmocW_uznVYFJOzcjUgmY,12
85
+ kekikstream-1.8.8.dist-info/RECORD,,