KekikStream 1.4.4__py3-none-any.whl → 2.0.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.
- KekikStream/CLI/pypi_kontrol.py +6 -6
- KekikStream/Core/Extractor/ExtractorBase.py +13 -12
- KekikStream/Core/Extractor/ExtractorLoader.py +25 -17
- KekikStream/Core/Extractor/ExtractorManager.py +53 -9
- KekikStream/Core/Extractor/ExtractorModels.py +5 -7
- KekikStream/Core/Extractor/YTDLPCache.py +35 -0
- KekikStream/Core/Media/MediaHandler.py +52 -31
- KekikStream/Core/Media/MediaManager.py +0 -3
- KekikStream/Core/Plugin/PluginBase.py +47 -21
- KekikStream/Core/Plugin/PluginLoader.py +11 -7
- KekikStream/Core/Plugin/PluginModels.py +25 -25
- KekikStream/Core/__init__.py +1 -0
- KekikStream/Extractors/CloseLoad.py +6 -26
- KekikStream/Extractors/ContentX_.py +40 -0
- KekikStream/Extractors/DzenRu.py +38 -0
- KekikStream/Extractors/ExPlay.py +53 -0
- KekikStream/Extractors/FirePlayer.py +60 -0
- KekikStream/Extractors/HDPlayerSystem.py +41 -0
- KekikStream/Extractors/JetTv.py +45 -0
- KekikStream/Extractors/MailRu.py +2 -4
- KekikStream/Extractors/MixTiger.py +57 -0
- KekikStream/Extractors/MolyStream.py +25 -7
- KekikStream/Extractors/Odnoklassniki.py +16 -11
- KekikStream/Extractors/{OkRuHTTP.py → Odnoklassniki_.py} +5 -1
- KekikStream/Extractors/{HDStreamAble.py → PeaceMakerst_.py} +1 -1
- KekikStream/Extractors/PixelDrain.py +0 -1
- KekikStream/Extractors/PlayerFilmIzle.py +62 -0
- KekikStream/Extractors/RapidVid.py +30 -13
- KekikStream/Extractors/RapidVid_.py +7 -0
- KekikStream/Extractors/SetPlay.py +57 -0
- KekikStream/Extractors/SetPrime.py +45 -0
- KekikStream/Extractors/SibNet.py +0 -1
- KekikStream/Extractors/TurkeyPlayer.py +34 -0
- KekikStream/Extractors/VidHide.py +72 -0
- KekikStream/Extractors/VidMoly.py +20 -19
- KekikStream/Extractors/{VidMolyMe.py → VidMoly_.py} +1 -1
- KekikStream/Extractors/VidMoxy.py +0 -1
- KekikStream/Extractors/VidPapi.py +89 -0
- KekikStream/Extractors/YTDLP.py +177 -0
- KekikStream/Extractors/YildizKisaFilm.py +41 -0
- KekikStream/Plugins/DiziBox.py +28 -16
- KekikStream/Plugins/DiziPal.py +246 -0
- KekikStream/Plugins/DiziYou.py +58 -31
- KekikStream/Plugins/Dizilla.py +97 -68
- KekikStream/Plugins/FilmBip.py +145 -0
- KekikStream/Plugins/FilmMakinesi.py +61 -52
- KekikStream/Plugins/FilmModu.py +138 -0
- KekikStream/Plugins/FullHDFilm.py +164 -0
- KekikStream/Plugins/FullHDFilmizlesene.py +38 -37
- KekikStream/Plugins/HDFilmCehennemi.py +44 -54
- KekikStream/Plugins/JetFilmizle.py +68 -42
- KekikStream/Plugins/KultFilmler.py +219 -0
- KekikStream/Plugins/RecTV.py +41 -37
- KekikStream/Plugins/RoketDizi.py +232 -0
- KekikStream/Plugins/SelcukFlix.py +309 -0
- KekikStream/Plugins/SezonlukDizi.py +16 -14
- KekikStream/Plugins/SineWix.py +39 -30
- KekikStream/Plugins/Sinefy.py +238 -0
- KekikStream/Plugins/SinemaCX.py +157 -0
- KekikStream/Plugins/Sinezy.py +146 -0
- KekikStream/Plugins/SuperFilmGeldi.py +121 -0
- KekikStream/Plugins/UgurFilm.py +10 -10
- KekikStream/__init__.py +296 -319
- KekikStream/requirements.txt +3 -4
- kekikstream-2.0.2.dist-info/METADATA +309 -0
- kekikstream-2.0.2.dist-info/RECORD +82 -0
- {kekikstream-1.4.4.dist-info → kekikstream-2.0.2.dist-info}/WHEEL +1 -1
- KekikStream/Extractors/FourCX.py +0 -7
- KekikStream/Extractors/FourPichive.py +0 -7
- KekikStream/Extractors/FourPlayRu.py +0 -7
- KekikStream/Extractors/Hotlinger.py +0 -7
- KekikStream/Extractors/OkRuSSL.py +0 -7
- KekikStream/Extractors/Pichive.py +0 -7
- KekikStream/Extractors/PlayRu.py +0 -7
- KekikStream/Helpers/Unpack.py +0 -75
- KekikStream/Plugins/Shorten.py +0 -225
- kekikstream-1.4.4.dist-info/METADATA +0 -108
- kekikstream-1.4.4.dist-info/RECORD +0 -63
- {kekikstream-1.4.4.dist-info → kekikstream-2.0.2.dist-info}/entry_points.txt +0 -0
- {kekikstream-1.4.4.dist-info → kekikstream-2.0.2.dist-info/licenses}/LICENSE +0 -0
- {kekikstream-1.4.4.dist-info → kekikstream-2.0.2.dist-info}/top_level.txt +0 -0
KekikStream/requirements.txt
CHANGED
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: KekikStream
|
|
3
|
+
Version: 2.0.2
|
|
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
|
+
Home-page: https://github.com/keyiflerolsun/KekikStream
|
|
6
|
+
Author: keyiflerolsun
|
|
7
|
+
Author-email: keyiflerolsun@gmail.com
|
|
8
|
+
License: GPLv3+
|
|
9
|
+
Keywords: KekikStream,KekikAkademi,keyiflerolsun
|
|
10
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
11
|
+
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
|
|
12
|
+
Classifier: Programming Language :: Python :: 3
|
|
13
|
+
Requires-Python: >=3.11
|
|
14
|
+
Description-Content-Type: text/markdown
|
|
15
|
+
License-File: LICENSE
|
|
16
|
+
Requires-Dist: setuptools
|
|
17
|
+
Requires-Dist: wheel
|
|
18
|
+
Requires-Dist: Kekik
|
|
19
|
+
Requires-Dist: httpx
|
|
20
|
+
Requires-Dist: cloudscraper
|
|
21
|
+
Requires-Dist: parsel
|
|
22
|
+
Requires-Dist: pydantic
|
|
23
|
+
Requires-Dist: InquirerPy
|
|
24
|
+
Requires-Dist: yt-dlp
|
|
25
|
+
Dynamic: author
|
|
26
|
+
Dynamic: author-email
|
|
27
|
+
Dynamic: classifier
|
|
28
|
+
Dynamic: description
|
|
29
|
+
Dynamic: description-content-type
|
|
30
|
+
Dynamic: home-page
|
|
31
|
+
Dynamic: keywords
|
|
32
|
+
Dynamic: license
|
|
33
|
+
Dynamic: license-file
|
|
34
|
+
Dynamic: requires-dist
|
|
35
|
+
Dynamic: requires-python
|
|
36
|
+
Dynamic: summary
|
|
37
|
+
|
|
38
|
+
# <img src="https://github.com/keyiflerolsun/KekikStream/raw/master/.github/icons/KekikStream.png?raw=True" height="32" align="center"> KekikStream
|
|
39
|
+
|
|
40
|
+
[](#)
|
|
41
|
+
[](#)
|
|
42
|
+
<a href="https://KekikAkademi.org/Kahve" target="_blank"><img src="https://img.shields.io/badge/☕️-Kahve Ismarla-ffdd00" title="☕️ Kahve Ismarla" style="padding-left:5px;"></a>
|
|
43
|
+
|
|
44
|
+
[](https://pypi.org/project/KekikStream)
|
|
45
|
+
[](https://pypi.org/project/KekikStream)
|
|
46
|
+
[](https://pypi.org/project/KekikStream)
|
|
47
|
+
|
|
48
|
+
[](#)
|
|
49
|
+
[](#)
|
|
50
|
+
[](#)
|
|
51
|
+
|
|
52
|
+
[](https://github.com/keyiflerolsun/KekikStream/actions/workflows/pypiYukle.yml)
|
|
53
|
+
|
|
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
|
+
|
|
57
|
+
[](https://github.com/user-attachments/assets/63d31bb0-0b69-40b4-84aa-66623f2a253f)
|
|
58
|
+
|
|
59
|
+
[](https://www.python.org/)
|
|
60
|
+
[](https://GitHub.com/keyiflerolsun/)
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## 🚦 Ne Sunar?
|
|
65
|
+
|
|
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
|
+
|
|
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
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## 🚀 Hızlı Başlangıç
|
|
77
|
+
|
|
78
|
+
> Gereksinimler: Python 3.11+, sistemde VLC veya MPV kurulu olmalı (Android için MX Player + ADB).
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
# Kurulum
|
|
82
|
+
pip install KekikStream
|
|
83
|
+
|
|
84
|
+
# Güncelleme
|
|
85
|
+
pip install -U KekikStream
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Temel Kullanım
|
|
89
|
+
|
|
90
|
+
**CLI:**
|
|
91
|
+
```bash
|
|
92
|
+
KekikStream
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## ✨ Özellikler
|
|
98
|
+
|
|
99
|
+
### 🔌 Plugin Sistemi
|
|
100
|
+
|
|
101
|
+
KekikStream modüler bir plugin mimarisi kullanır; her medya kaynağı bağımsız bir plugin'dir.
|
|
102
|
+
|
|
103
|
+
**Mevcut Pluginler (örnek):** Dizilla, HDFilmCehennemi, Dizipal, Dizifon, RoketDizi, Sinefy, Moviesseed, FullHDFilmizlesene, HDBestMovies, SuperFilmGeldi, Sinezy ve daha fazlası.
|
|
104
|
+
|
|
105
|
+
**Plugin Geliştirme:**
|
|
106
|
+
```python
|
|
107
|
+
from KekikStream.Core import PluginBase, MainPageResult, SearchResult, MovieInfo, SeriesInfo
|
|
108
|
+
|
|
109
|
+
class MyPlugin(PluginBase):
|
|
110
|
+
name = "MyPlugin"
|
|
111
|
+
language = "en"
|
|
112
|
+
main_url = "https://example.com"
|
|
113
|
+
favicon = f"https://www.google.com/s2/favicons?domain={main_url}&sz=64"
|
|
114
|
+
description = "MyPlugin description"
|
|
115
|
+
|
|
116
|
+
main_page = {
|
|
117
|
+
f"{main_url}/category/" : "Category Name"
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
async def get_main_page(self, page: int, url: str, category: str) -> list[MainPageResult]:
|
|
121
|
+
return results
|
|
122
|
+
|
|
123
|
+
async def search(self, query: str) -> list[SearchResult]:
|
|
124
|
+
return results
|
|
125
|
+
|
|
126
|
+
async def load_item(self, url: str) -> MovieInfo | SeriesInfo:
|
|
127
|
+
return details
|
|
128
|
+
|
|
129
|
+
async def load_links(self, url: str) -> list[dict]:
|
|
130
|
+
return links
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### 🎬 Oynatıcı Desteği
|
|
134
|
+
|
|
135
|
+
| Oynatıcı | Platform | Özellikler |
|
|
136
|
+
|---------------|----------|---------------------------|
|
|
137
|
+
| **MPV** | Desktop | Custom headers, subtitles |
|
|
138
|
+
| **VLC** | Desktop | Custom headers, subtitles |
|
|
139
|
+
| **MX Player** | Android | ADB üzerinden |
|
|
140
|
+
|
|
141
|
+
> Özel durumlar için (Google Drive vb.) arka planda otomatik olarak yt-dlp devreye girer.
|
|
142
|
+
|
|
143
|
+
### 🔗 Extractor Sistemi
|
|
144
|
+
|
|
145
|
+
Vidmoly, Filemoon, Sibnet, Sendvid, Voe, Doodstream, Streamtape, Upstream, Dailymotion, JWPlayer ve birçok kaynaktan direkt streaming linki çıkarır.
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## 🏗️ Mimari
|
|
150
|
+
|
|
151
|
+
```mermaid
|
|
152
|
+
graph TB
|
|
153
|
+
CLI[🖥️ CLI Interface]
|
|
154
|
+
Manager[🔌 Plugin Manager]
|
|
155
|
+
|
|
156
|
+
subgraph Plugins
|
|
157
|
+
P1[📺 Dizilla]
|
|
158
|
+
P2[🎬 HDFilmCehennemi]
|
|
159
|
+
P3[🍿 Dizipal]
|
|
160
|
+
PN[... 20+ Plugin]
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
subgraph Extractors
|
|
164
|
+
E1[🔗 Vidmoly]
|
|
165
|
+
E2[🔗 Filemoon]
|
|
166
|
+
E3[🔗 Sibnet]
|
|
167
|
+
EN[... Extractors]
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
subgraph Players
|
|
171
|
+
MPV[🎥 MPV]
|
|
172
|
+
VLC[🎥 VLC]
|
|
173
|
+
MX[🎥 MX Player]
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
CLI --> Manager
|
|
177
|
+
Manager --> P1
|
|
178
|
+
Manager --> P2
|
|
179
|
+
Manager --> P3
|
|
180
|
+
Manager --> PN
|
|
181
|
+
|
|
182
|
+
%% Her plugin otomatik olarak ihtiyaç duyduğu extractor'ı kullanır
|
|
183
|
+
P1 -.-> E1
|
|
184
|
+
P1 -.-> E2
|
|
185
|
+
P1 -.-> E3
|
|
186
|
+
|
|
187
|
+
P2 -.-> E1
|
|
188
|
+
P2 -.-> E2
|
|
189
|
+
P2 -.-> E3
|
|
190
|
+
|
|
191
|
+
P3 -.-> E1
|
|
192
|
+
P3 -.-> E2
|
|
193
|
+
P3 -.-> E3
|
|
194
|
+
|
|
195
|
+
PN -.-> EN
|
|
196
|
+
|
|
197
|
+
E1 --> VLC
|
|
198
|
+
E2 --> VLC
|
|
199
|
+
E3 --> VLC
|
|
200
|
+
EN --> VLC
|
|
201
|
+
|
|
202
|
+
E1 --> MPV
|
|
203
|
+
E2 --> MPV
|
|
204
|
+
E3 --> MPV
|
|
205
|
+
EN --> MPV
|
|
206
|
+
|
|
207
|
+
E1 --> MX
|
|
208
|
+
E2 --> MX
|
|
209
|
+
E3 --> MX
|
|
210
|
+
EN --> MX
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
## 🛠️ Geliştirme
|
|
216
|
+
|
|
217
|
+
### Proje Yapısı
|
|
218
|
+
|
|
219
|
+
```
|
|
220
|
+
KekikStream/
|
|
221
|
+
├── KekikStream/
|
|
222
|
+
│ ├── Core/ # Temel sınıflar
|
|
223
|
+
│ ├── Libs/ # Yardımcı kütüphaneler
|
|
224
|
+
│ ├── Plugins/ # Medya kaynak pluginleri
|
|
225
|
+
│ ├── Extractors/ # Video extractorları
|
|
226
|
+
│ └── __init__.py # CLI entry point
|
|
227
|
+
├── Tests/ # Örnek kullanım
|
|
228
|
+
└── requirements.txt
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
### Yeni Plugin Ekleme
|
|
232
|
+
|
|
233
|
+
1. `KekikStream/Plugins/` altına yeni dosya oluşturun.
|
|
234
|
+
2. `PluginBase` sınıfından türetin.
|
|
235
|
+
3. `get_main_page`, `search`, `load_item`, `load_links` metodlarını implemente edin.
|
|
236
|
+
4. Plugin'i test edin (örnek: `Tests/Single.py`).
|
|
237
|
+
|
|
238
|
+
### 🔧 Geliştirme Modu
|
|
239
|
+
|
|
240
|
+
KekikStream, eklenti geliştiricileri için otomatik bir **geliştirme modu** sunar:
|
|
241
|
+
|
|
242
|
+
**Plugin Geliştirme:**
|
|
243
|
+
- Çalışma dizininde `Plugins/` klasörü oluşturup içine plugin dosyası eklerseniz, **sadece bu local plugin'ler** yüklenir
|
|
244
|
+
- Global plugin'ler (sisteme kurulu olanlar) otomatik olarak atlanır
|
|
245
|
+
- Bu sayede test sırasında diğer plugin'lerle karışma olmaz
|
|
246
|
+
|
|
247
|
+
**Extractor Geliştirme:**
|
|
248
|
+
- Çalışma dizininde `Extractors/` klasörü oluşturup içine extractor dosyası eklerseniz, **sadece bu local extractor'lar** yüklenir
|
|
249
|
+
- Global extractor'lar otomatik olarak atlanır
|
|
250
|
+
- Kendi extractor'ınızı izole bir ortamda test edebilirsiniz
|
|
251
|
+
|
|
252
|
+
**Örnek:**
|
|
253
|
+
```bash
|
|
254
|
+
# Çalışma dizininizde
|
|
255
|
+
mkdir Plugins
|
|
256
|
+
touch Plugins/MyTestPlugin.py # Plugin'inizi yazın
|
|
257
|
+
|
|
258
|
+
# KekikStream'i çalıştırın - sadece MyTestPlugin yüklenecek
|
|
259
|
+
KekikStream
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
> 💡 **Not:** Yerel dizinde herhangi bir Plugin/Extractor dosyası bulunmazsa, sistem normal şekilde global olanları yükler.
|
|
263
|
+
|
|
264
|
+
---
|
|
265
|
+
|
|
266
|
+
## 📊 Performans
|
|
267
|
+
|
|
268
|
+
| Metrik | Değer |
|
|
269
|
+
|----------------------|------------------|
|
|
270
|
+
| Plugin Sayısı | 20+ |
|
|
271
|
+
| Extractor Sayısı | 40+ |
|
|
272
|
+
| Desteklenen Platform | Desktop, Android |
|
|
273
|
+
| Async Arama | ✅ |
|
|
274
|
+
| Cache Desteği | ✅ |
|
|
275
|
+
|
|
276
|
+
---
|
|
277
|
+
|
|
278
|
+
## 🤝 Katkıda Bulunma
|
|
279
|
+
|
|
280
|
+
Projeyi geliştirmek için katkılarınızı bekliyoruz!
|
|
281
|
+
|
|
282
|
+
1. Yeni plugin ekleyin
|
|
283
|
+
2. Bug raporu açın
|
|
284
|
+
3. Feature request gönderin
|
|
285
|
+
4. Dokümantasyon iyileştirin
|
|
286
|
+
|
|
287
|
+
### 🎁 Teşekkürler
|
|
288
|
+
|
|
289
|
+
- [DeoDorqnt387/aniwatch-tr](https://github.com/DeoDorqnt387/aniwatch-tr)
|
|
290
|
+
|
|
291
|
+
### 💻 Genişletme Referansları
|
|
292
|
+
|
|
293
|
+
- [keyiflerolsun/Kekik-cloudstream](https://github.com/keyiflerolsun/Kekik-cloudstream)
|
|
294
|
+
- [keyiflerolsun/seyirTurk-Parser](https://github.com/keyiflerolsun/seyirTurk-Parser)
|
|
295
|
+
|
|
296
|
+
## 🌐 Telif Hakkı ve Lisans
|
|
297
|
+
|
|
298
|
+
*Copyright (C) 2024 by* [keyiflerolsun](https://github.com/keyiflerolsun) ❤️️
|
|
299
|
+
[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..*
|
|
300
|
+
|
|
301
|
+
---
|
|
302
|
+
|
|
303
|
+
<p align="center">
|
|
304
|
+
Bu proje <a href="https://github.com/keyiflerolsun">@keyiflerolsun</a> tarafından <a href="https://t.me/KekikAkademi">@KekikAkademi</a> için geliştirilmiştir.
|
|
305
|
+
</p>
|
|
306
|
+
|
|
307
|
+
<p align="center">
|
|
308
|
+
<sub>⭐ Beğendiyseniz yıldız vermeyi unutmayın!</sub>
|
|
309
|
+
</p>
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
KekikStream/__init__.py,sha256=JcSKsLRyJM5ZPNHq4DLSaj4FzOjxSp8M8JuM3YN8Ye4,13456
|
|
2
|
+
KekikStream/__main__.py,sha256=B81dQoeGEb-T5Sycs3eNAmW7unvx0Mef0syCjs4nPds,137
|
|
3
|
+
KekikStream/requirements.txt,sha256=0fO-7byqgLMr4NyJO7fQBFOnLv0zcAeqk7tLhHXqonk,76
|
|
4
|
+
KekikStream/CLI/__init__.py,sha256=U6oLq_O7u5y2eHhBnmfhZNns_EqHHJXJmzl8jvZFUNY,230
|
|
5
|
+
KekikStream/CLI/pypi_kontrol.py,sha256=q6fNs6EKJDc5VuUFig9DBzLzNPp_kMD1vOVgLElcii8,1487
|
|
6
|
+
KekikStream/Core/__init__.py,sha256=Ise27_Hqe1YeqTcSNnf3HqynhbySEVC-pNP2uKa2GOo,771
|
|
7
|
+
KekikStream/Core/Extractor/ExtractorBase.py,sha256=_9l0VIZpFHBdzVLI_hp1RQRf4CmsxrTt-FIKEaF1Z04,1824
|
|
8
|
+
KekikStream/Core/Extractor/ExtractorLoader.py,sha256=GPGCmgFpDBywR8CsNw43-ddseZhSKTjAUETp1Ohbi6E,4796
|
|
9
|
+
KekikStream/Core/Extractor/ExtractorManager.py,sha256=VYkj4CCE5Puqsr6PCeN8i_OS0hfYKI4NScj98BLO39o,2644
|
|
10
|
+
KekikStream/Core/Extractor/ExtractorModels.py,sha256=Qj_gbIeGRewaZXNfYkTi4FFRRq6XBOc0HS0tXGDwajI,445
|
|
11
|
+
KekikStream/Core/Extractor/YTDLPCache.py,sha256=sRg5kwFxkRXA_8iRwsV29E51g9qQJvg8dWUnzfr7EwA,984
|
|
12
|
+
KekikStream/Core/Media/MediaHandler.py,sha256=MEn3spPAThVloN3WcoCwWhpoyMA7tAZvcwYjmjJsX3U,7678
|
|
13
|
+
KekikStream/Core/Media/MediaManager.py,sha256=AaUq2D7JSJIphjoAj2fjLOJjswm7Qf5hjYCbBdrbnDU,438
|
|
14
|
+
KekikStream/Core/Plugin/PluginBase.py,sha256=xR1J6unUDpUNe_fHRtZSryEbAPdf-qdT3LpMsjT_kBk,4126
|
|
15
|
+
KekikStream/Core/Plugin/PluginLoader.py,sha256=GcDqN1u3nJeoGKH_oDFHCpwteJlLCxHNbmPrC5L-hZE,3692
|
|
16
|
+
KekikStream/Core/Plugin/PluginManager.py,sha256=CZVg1eegi8vfMfccx0DRV0Box8kXz-aoULTQLgbPbvM,893
|
|
17
|
+
KekikStream/Core/Plugin/PluginModels.py,sha256=Yvx-6Fkn8QCIcuqAkFbCP5EJcq3XBkK_P8S0tRNhS6E,2476
|
|
18
|
+
KekikStream/Core/UI/UIManager.py,sha256=T4V_kdTTWa-UDamgLSKa__dWJuzcvRK9NuwBlzU9Bzc,1693
|
|
19
|
+
KekikStream/Extractors/CloseLoad.py,sha256=rc1lYy32ThB4ApC1hZdqVQ3cAVHvRGHOMdjomWeDgaQ,884
|
|
20
|
+
KekikStream/Extractors/ContentX.py,sha256=u1sDdM79MNx9OdPTPcAA0OQDS7537IO8aJlffxhMi8c,2976
|
|
21
|
+
KekikStream/Extractors/ContentX_.py,sha256=OGFRq-GVjFqz7ISL9UPLonmjzPS2ycb0En0PI7gVKtk,1016
|
|
22
|
+
KekikStream/Extractors/DzenRu.py,sha256=X0Rhm1-W4YjQwVrJs8YFqVcCxMaZi8rsKiLhK_ZsYlU,1185
|
|
23
|
+
KekikStream/Extractors/ExPlay.py,sha256=EJNVKAbaIxlbOsCx7J9aLfNHKOFoqSLZZUw7W4QYeH0,1827
|
|
24
|
+
KekikStream/Extractors/FirePlayer.py,sha256=HlJjFgii0fGZK7cgwpoZAIoajabl7IQX6ZrAQT1fBIw,2188
|
|
25
|
+
KekikStream/Extractors/HDPlayerSystem.py,sha256=EgnFzx5Q4PkuwAtuff5SYU9k59B-CyOdySl7lbCZ9hM,1312
|
|
26
|
+
KekikStream/Extractors/JetTv.py,sha256=aA3WeOvR-tszac-WSwunZZb1NRy25TQH8vxY3TDscRI,1596
|
|
27
|
+
KekikStream/Extractors/MailRu.py,sha256=xQVCWwYqNoG5T43VAW1_m0v4e80FbO-1pNPKkwhTccU,1218
|
|
28
|
+
KekikStream/Extractors/MixPlayHD.py,sha256=POV_yq3KoZ6S6EqFsKYULEBz92NdUa2BpYKNo0eNQH8,1552
|
|
29
|
+
KekikStream/Extractors/MixTiger.py,sha256=mMEYhhr5-u6GgIrLESeFTRdwDykgSXKJO4KtkMML1bw,2124
|
|
30
|
+
KekikStream/Extractors/MolyStream.py,sha256=IeeBw9tJJrL5QQ-t2Yp-a-6lnDc3Y00UNiaN6m-o-7c,1160
|
|
31
|
+
KekikStream/Extractors/Odnoklassniki.py,sha256=EQAuCdr69vN11ZBE5uThuXqlR8NVWanROWYkubo22mo,3809
|
|
32
|
+
KekikStream/Extractors/Odnoklassniki_.py,sha256=AbcJ65Pq1zA2wQGXZNgNBToweOniFYR3jkWXFXJJpfg,316
|
|
33
|
+
KekikStream/Extractors/PeaceMakerst.py,sha256=ZKk454eNZpeamht61UH9yMYe00_zGb3MSyujfDlbVDc,2096
|
|
34
|
+
KekikStream/Extractors/PeaceMakerst_.py,sha256=-PdSR8yFy6MEc6EodXvHksj8O_j6Xu8yceoSjM2pGYg,246
|
|
35
|
+
KekikStream/Extractors/PixelDrain.py,sha256=Uk2pPvtBzaKtRXu1iNO8FLHd0EAuIOIzI1H_n02tg-U,964
|
|
36
|
+
KekikStream/Extractors/PlayerFilmIzle.py,sha256=vDumIya3gWN8h1to5XCzBWePa6gdNU2DVTK3OrPr04U,2425
|
|
37
|
+
KekikStream/Extractors/RapidVid.py,sha256=TxNnLUmYaAHi-rFkoLu4eQULzkUSvQnfoEZAjyzQFns,2917
|
|
38
|
+
KekikStream/Extractors/RapidVid_.py,sha256=siYK1oDCASzV8MhhDbGh5qlSDtZLi4EHNlO0HwdgeNU,233
|
|
39
|
+
KekikStream/Extractors/SetPlay.py,sha256=FsbLlYFXp7_28-ta6XAoqDQAEGYTVZOZayebkY1mWe8,1906
|
|
40
|
+
KekikStream/Extractors/SetPrime.py,sha256=ob09y-Sm91YR7rIRzikhZiMHX6D4Djm5QzFTg6KbO4k,1536
|
|
41
|
+
KekikStream/Extractors/SibNet.py,sha256=zJTkzlr34ufKCWzKKCgJrzhb2o-fpjTjFdi38gv6N6g,849
|
|
42
|
+
KekikStream/Extractors/Sobreatsesuyp.py,sha256=qlSQHUHjTjBoY0nsuZQWAjnfswbPORkBg6rUuP7SagA,2000
|
|
43
|
+
KekikStream/Extractors/TRsTX.py,sha256=mbSRGnQt26a73SbqwtY9rpiYFwgRgVbvA6bkGb_PvP8,2152
|
|
44
|
+
KekikStream/Extractors/TauVideo.py,sha256=2ai9BwwM6qlCgxK7E0B642LtOF5y4hEb9tQ2aDpbMtc,1112
|
|
45
|
+
KekikStream/Extractors/TurboImgz.py,sha256=nnWnP1K4JZbMj6S-YuXxej31UZtF4JcboSW4n7A4A5c,824
|
|
46
|
+
KekikStream/Extractors/TurkeyPlayer.py,sha256=FX_H3vzXjAD7IjK11bjJVVw_VdPQ4n6YQLfjQ6E3t7o,1247
|
|
47
|
+
KekikStream/Extractors/VidHide.py,sha256=TVoS9CMV1WSE83vPC4FFxsNE71n-_DtVJm66_1Wt8pU,2538
|
|
48
|
+
KekikStream/Extractors/VidMoly.py,sha256=bxzIymYHrms4gBdK2jfsoug2tjq-PuicOxeR2NjcAjw,3654
|
|
49
|
+
KekikStream/Extractors/VidMoly_.py,sha256=737BzqogzknVhSebZgVDh70gsEgNo9s2mafySrDzr6o,219
|
|
50
|
+
KekikStream/Extractors/VidMoxy.py,sha256=LT7wTKBtuuagXwfGjWZwQF2NQGuChurZJ-I6gM0Jcek,1771
|
|
51
|
+
KekikStream/Extractors/VidPapi.py,sha256=g9ohdL9VJrxy4N7xerbIRz3ZxjsXFHlJWy0NaZ31hFY,3259
|
|
52
|
+
KekikStream/Extractors/VideoSeyred.py,sha256=M6QPZ_isX9vM_7LPo-2I_8Cf1vB9awHw8vvzBODtoiQ,1977
|
|
53
|
+
KekikStream/Extractors/YTDLP.py,sha256=F3QM3tobZd_BFcrO4Wz-BEozjSidmJA9RyWH9CnNBnk,6493
|
|
54
|
+
KekikStream/Extractors/YildizKisaFilm.py,sha256=R_JlrOVeMiDlXYcuTdItnKvidyx8_u3B14fSrxew2aE,1316
|
|
55
|
+
KekikStream/Plugins/DiziBox.py,sha256=sxM7ckKeKwMrMkRNUAvh5wE9wdOuVda6Ag_zAdwSvi8,9935
|
|
56
|
+
KekikStream/Plugins/DiziPal.py,sha256=MBONjermWBm3sN-8ZSILnfXI2F_V2kH65gpTNOuL9dI,10198
|
|
57
|
+
KekikStream/Plugins/DiziYou.py,sha256=xE0INtCLOZDo73sWQoYT6Su8T66hGK9rBD-gXnk8MiU,9016
|
|
58
|
+
KekikStream/Plugins/Dizilla.py,sha256=gVLborMFjYr3w_KrB53lmB1W8lTzEAySHjv4gvOZp1A,11542
|
|
59
|
+
KekikStream/Plugins/FilmBip.py,sha256=Tfx2dUc1Qs7ZQoJtsBtjOJXCKmTe56m74lNhuUYYU14,6182
|
|
60
|
+
KekikStream/Plugins/FilmMakinesi.py,sha256=lYys9qyoIxDFBWaf7TIv9NrdmtGu_GLU1VJWGp6xL9A,5280
|
|
61
|
+
KekikStream/Plugins/FilmModu.py,sha256=b27hchMoYZwG3I-kM1sveW7rHKOF5OuepdjPgKIehEM,6706
|
|
62
|
+
KekikStream/Plugins/FullHDFilm.py,sha256=kkb-JtWf23uiEzP9f_uds0tROYiKOyxcX0D-jNtQFi0,7005
|
|
63
|
+
KekikStream/Plugins/FullHDFilmizlesene.py,sha256=FAacwtXo72DIl_1bHWgHPIxqmqBJAVPtNQ3yIZPYjlU,6152
|
|
64
|
+
KekikStream/Plugins/HDFilmCehennemi.py,sha256=D2VvgNvCcHfjkitzSfA19OFp-mI0sgUm6OSVej0ZgTY,9544
|
|
65
|
+
KekikStream/Plugins/JetFilmizle.py,sha256=GU47RGHzVmnJxdHDD1zWQDu2qCCWQ3vFOs_eRR_YY14,6503
|
|
66
|
+
KekikStream/Plugins/KultFilmler.py,sha256=VZET3RUoOVYKE-C2YbkMW8oNcxz6zE2pR7a3z-B4nD4,8987
|
|
67
|
+
KekikStream/Plugins/RecTV.py,sha256=dF3Ogf7KE_zpfLQRjVcEJQMuWtBtHo6iB73_ECQEJ58,7544
|
|
68
|
+
KekikStream/Plugins/RoketDizi.py,sha256=h0g0Wi72TG4et7TS7ANro9LLlCiR_W0CJdkWCUzprE8,9027
|
|
69
|
+
KekikStream/Plugins/SelcukFlix.py,sha256=WYVtGMxngpqrXk7PX_B4ya6Pji7dOjQsXoukk30f2d0,12744
|
|
70
|
+
KekikStream/Plugins/SezonlukDizi.py,sha256=dT2xPPkdaYV43qsL4Le_5Yel8eoPkHtnXIOXqz-Ya-c,6326
|
|
71
|
+
KekikStream/Plugins/SineWix.py,sha256=xdTeg8GHUpyZsY6EQ5I1ZIT4-lB_qwBwvHQVmdMPpEI,7364
|
|
72
|
+
KekikStream/Plugins/Sinefy.py,sha256=jeziEG92EyePCejTdeKkNtMxg0-nkhrofazwNX12Y7c,9902
|
|
73
|
+
KekikStream/Plugins/SinemaCX.py,sha256=dEoZJJLnTgayBeCbGoR1qSUjrnTeRx5ZLck_dSPDL4c,7177
|
|
74
|
+
KekikStream/Plugins/Sinezy.py,sha256=gdszlee5QpUka0qMzGMbBoXwJCtZbe5hlA5o9FJQI1o,6226
|
|
75
|
+
KekikStream/Plugins/SuperFilmGeldi.py,sha256=Ohm21BPsJH_S1tx5i2APEgAOD25k2NiwRP7rSgAKvRs,5289
|
|
76
|
+
KekikStream/Plugins/UgurFilm.py,sha256=eKGzmSi8k_QbXnYPWXZRdmCxxc32zZh4rynmdxCbm1o,4832
|
|
77
|
+
kekikstream-2.0.2.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
|
78
|
+
kekikstream-2.0.2.dist-info/METADATA,sha256=l-84GB-DwSCR5euQv5kh0YhzP-BTvnj4gL2Z3e50ssk,10090
|
|
79
|
+
kekikstream-2.0.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
80
|
+
kekikstream-2.0.2.dist-info/entry_points.txt,sha256=dFwdiTx8djyehI0Gsz-rZwjAfZzUzoBSrmzRu9ubjJc,50
|
|
81
|
+
kekikstream-2.0.2.dist-info/top_level.txt,sha256=DNmGJDXl27Drdfobrak8KYLmocW_uznVYFJOzcjUgmY,12
|
|
82
|
+
kekikstream-2.0.2.dist-info/RECORD,,
|
KekikStream/Extractors/FourCX.py
DELETED
KekikStream/Extractors/PlayRu.py
DELETED
KekikStream/Helpers/Unpack.py
DELETED
|
@@ -1,75 +0,0 @@
|
|
|
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)
|