KekikStream 1.8.6__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.6
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,84 +61,42 @@ 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
 
99
- ---
100
-
101
- ## 🏗️ Mimari
102
-
103
- ```mermaid
104
- graph TB
105
- CLI[🖥️ CLI Interface]
106
- Manager[🔌 Plugin Manager]
107
-
108
- subgraph Plugins
109
- P1[📺 Dizilla]
110
- P2[🎬 HDFilmCehennemi]
111
- P3[🍿 Dizipal]
112
- PN[... 20+ Plugin]
113
- end
114
-
115
- subgraph Extractors
116
- E1[🔗 Vidmoly]
117
- E2[🔗 Filemoon]
118
- E3[🔗 Sibnet]
119
- EN[... Extractors]
120
- end
121
-
122
- subgraph Players
123
- VLC[🎥 VLC]
124
- MPV[🎥 MPV]
125
- MX[🎥 MX Player]
126
- end
127
-
128
- CLI --> Manager
129
- Manager --> P1
130
- Manager --> P2
131
- Manager --> P3
132
- Manager --> PN
133
-
134
- P1 --> E1
135
- P2 --> E2
136
- P3 --> E3
137
- PN --> EN
138
-
139
- E1 --> VLC
140
- E1 --> MPV
141
- E1 --> MX
95
+ **Kütüphane (örnek arama):**
96
+ ```python
97
+ from KekikStream import Manager
98
+ results = Manager().search("vikings")
99
+ print(results[0].title)
142
100
  ```
143
101
 
144
102
  ---
@@ -147,12 +105,9 @@ graph TB
147
105
 
148
106
  ### 🔌 Plugin Sistemi
149
107
 
150
- KekikStream modüler bir plugin mimarisi kullanır. Her medya kaynağı bağımsız bir plugin'dir.
108
+ KekikStream modüler bir plugin mimarisi kullanır; her medya kaynağı bağımsız bir plugin'dir.
151
109
 
152
- **Mevcut Pluginler:**
153
- - Dizilla, HDFilmCehennemi, Dizipal, Dizifon
154
- - RoketDizi, Sinefy, Moviesseed, FullHDFilmizlesene
155
- - HDBestMovies, SuperFilmGeldi, Sinezy ve daha fazlası...
110
+ **Mevcut Pluginler (örnek):** Dizilla, HDFilmCehennemi, Dizipal, Dizifon, RoketDizi, Sinefy, Moviesseed, FullHDFilmizlesene, HDBestMovies, SuperFilmGeldi, Sinezy ve daha fazlası.
156
111
 
157
112
  **Plugin Geliştirme:**
158
113
  ```python
@@ -170,19 +125,15 @@ class MyPlugin(PluginBase):
170
125
  }
171
126
 
172
127
  async def get_main_page(self, page: int, url: str, category: str) -> list[MainPageResult]:
173
- # Ana sayfa implementasyonu
174
128
  return results
175
129
 
176
130
  async def search(self, query: str) -> list[SearchResult]:
177
- # Arama implementasyonu
178
131
  return results
179
132
 
180
133
  async def load_item(self, url: str) -> MovieInfo | SeriesInfo:
181
- # İçerik detayları
182
134
  return details
183
135
 
184
136
  async def load_links(self, url: str) -> list[dict]:
185
- # Video bağlantıları
186
137
  return links
187
138
  ```
188
139
 
@@ -194,15 +145,77 @@ class MyPlugin(PluginBase):
194
145
  | **MPV** | Desktop | Custom headers, subtitles |
195
146
  | **MX Player** | Android | ADB üzerinden |
196
147
 
197
- > **Not:** Özel durumlar için (Google Drive, vb.) arka planda otomatik olarak yt-dlp kullanılabilir.
148
+ > Özel durumlar için (Google Drive vb.) arka planda otomatik olarak yt-dlp devreye girer.
198
149
 
199
150
  ### 🔗 Extractor Sistemi
200
151
 
201
- Video barındırma sitelerinden direkt streaming linkleri çıkarır:
152
+ Vidmoly, Filemoon, Sibnet, Sendvid, Voe, Doodstream, Streamtape, Upstream, Dailymotion, JWPlayer ve birçok kaynaktan direkt streaming linki çıkarır.
153
+
154
+ ---
155
+
156
+ ## 🏗️ Mimari
202
157
 
203
- - Vidmoly, Filemoon, Sibnet, Sendvid
204
- - Voe, Doodstream, Streamtape, Upstream
205
- - Dailymotion, JWPlayer ve daha fazlası...
158
+ ```mermaid
159
+ graph TB
160
+ CLI[🖥️ CLI Interface]
161
+ Manager[🔌 Plugin Manager]
162
+
163
+ subgraph Plugins
164
+ P1[📺 Dizilla]
165
+ P2[🎬 HDFilmCehennemi]
166
+ P3[🍿 Dizipal]
167
+ PN[... 20+ Plugin]
168
+ end
169
+
170
+ subgraph Extractors
171
+ E1[🔗 Vidmoly]
172
+ E2[🔗 Filemoon]
173
+ E3[🔗 Sibnet]
174
+ EN[... Extractors]
175
+ end
176
+
177
+ subgraph Players
178
+ VLC[🎥 VLC]
179
+ MPV[🎥 MPV]
180
+ MX[🎥 MX Player]
181
+ end
182
+
183
+ CLI --> Manager
184
+ Manager --> P1
185
+ Manager --> P2
186
+ Manager --> P3
187
+ Manager --> PN
188
+
189
+ %% Her plugin otomatik olarak ihtiyaç duyduğu extractor'ı kullanır
190
+ P1 -.-> E1
191
+ P1 -.-> E2
192
+ P1 -.-> E3
193
+
194
+ P2 -.-> E1
195
+ P2 -.-> E2
196
+ P2 -.-> E3
197
+
198
+ P3 -.-> E1
199
+ P3 -.-> E2
200
+ P3 -.-> E3
201
+
202
+ PN -.-> EN
203
+
204
+ E1 --> VLC
205
+ E2 --> VLC
206
+ E3 --> VLC
207
+ EN --> VLC
208
+
209
+ E1 --> MPV
210
+ E2 --> MPV
211
+ E3 --> MPV
212
+ EN --> MPV
213
+
214
+ E1 --> MX
215
+ E2 --> MX
216
+ E3 --> MX
217
+ EN --> MX
218
+ ```
206
219
 
207
220
  ---
208
221
 
@@ -224,12 +237,10 @@ KekikStream/
224
237
 
225
238
  ### Yeni Plugin Ekleme
226
239
 
227
- 1. `KekikStream/Plugins/` altına yeni dosya oluşturun
228
- 2. `PluginBase` sınıfından türetin
229
- 3. Gerekli metodları implemente edin (`get_main_page`, `search`, `load_item`, `load_links`)
230
- 4. Plugin'i test edin
231
-
232
- **Ö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`).
233
244
 
234
245
  ---
235
246
 
@@ -249,12 +260,10 @@ KekikStream/
249
260
 
250
261
  Projeyi geliştirmek için katkılarınızı bekliyoruz!
251
262
 
252
- ### Nasıl Katkıda Bulunulur?
253
-
254
- 1. **Yeni Plugin Ekleyin:** Türkçe medya sitesi desteği ekleyin
255
- 2. **Bug Raporu:** GitHub Issues kullanın
256
- 3. **Feature Request:** Yeni özellik önerileri
257
- 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
258
267
 
259
268
  ### 🎁 Teşekkürler
260
269
 
@@ -262,14 +271,13 @@ Projeyi geliştirmek için katkılarınızı bekliyoruz!
262
271
 
263
272
  ### 💻 Genişletme Referansları
264
273
 
265
- - [keyiflerolsun/Kekik-cloudstream](https://github.com/keyiflerolsun/Kekik-cloudstream)
274
+ - [keyiflerolsun/Kekik-cloudstream](https://github.com/keyiflerolsun/Kekik-cloudstream)
266
275
  - [keyiflerolsun/seyirTurk-Parser](https://github.com/keyiflerolsun/seyirTurk-Parser)
267
276
 
268
277
  ## 🌐 Telif Hakkı ve Lisans
269
278
 
270
- * *Copyright (C) 2024 by* [keyiflerolsun](https://github.com/keyiflerolsun) ❤️️
271
- * [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..*
272
-
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..*
273
281
 
274
282
  ---
275
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.6.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
81
- kekikstream-1.8.6.dist-info/METADATA,sha256=VDxbn9Or_dumDhoTHnCkJXudclZIrcOR4y5qMvuHWvY,8933
82
- kekikstream-1.8.6.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
83
- kekikstream-1.8.6.dist-info/entry_points.txt,sha256=dFwdiTx8djyehI0Gsz-rZwjAfZzUzoBSrmzRu9ubjJc,50
84
- kekikstream-1.8.6.dist-info/top_level.txt,sha256=DNmGJDXl27Drdfobrak8KYLmocW_uznVYFJOzcjUgmY,12
85
- kekikstream-1.8.6.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,,