KekikStream 0.0.1__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/__init__.py +3 -0
- KekikStream/Core/ExtractorBase.py +18 -0
- KekikStream/Core/ExtractorLoader.py +61 -0
- KekikStream/Core/ExtractorModels.py +17 -0
- KekikStream/Core/MediaHandler.py +58 -0
- KekikStream/Core/PluginBase.py +42 -0
- KekikStream/Core/PluginLoader.py +63 -0
- KekikStream/Core/PluginModels.py +32 -0
- KekikStream/Core/__init__.py +9 -0
- KekikStream/Extractors/CloseLoad.py +30 -0
- KekikStream/Extractors/MailRu.py +40 -0
- KekikStream/Managers/ExtractorManager.py +27 -0
- KekikStream/Managers/MediaManager.py +19 -0
- KekikStream/Managers/PluginManager.py +18 -0
- KekikStream/Managers/UIManager.py +32 -0
- KekikStream/Managers/__init__.py +6 -0
- KekikStream/Plugins/FilmMakinesi.py +65 -0
- KekikStream/Plugins/UgurFilm.py +75 -0
- KekikStream/__init__.py +114 -0
- KekikStream/__main__.py +6 -0
- KekikStream/requirements.txt +9 -0
- KekikStream-0.0.1.dist-info/LICENSE +674 -0
- KekikStream-0.0.1.dist-info/METADATA +66 -0
- KekikStream-0.0.1.dist-info/RECORD +27 -0
- KekikStream-0.0.1.dist-info/WHEEL +5 -0
- KekikStream-0.0.1.dist-info/entry_points.txt +2 -0
- KekikStream-0.0.1.dist-info/top_level.txt +1 -0
KekikStream/__init__.py
ADDED
@@ -0,0 +1,114 @@
|
|
1
|
+
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
2
|
+
|
3
|
+
from .CLI import konsol, cikis_yap, hata_yakala
|
4
|
+
from .Managers import PluginManager, ExtractorManager, UIManager, MediaManager
|
5
|
+
from .Core import PluginBase, ExtractorBase
|
6
|
+
from asyncio import run
|
7
|
+
|
8
|
+
class KekikStream:
|
9
|
+
def __init__(self):
|
10
|
+
self.plugin_manager = PluginManager()
|
11
|
+
self.extractor_manager = ExtractorManager()
|
12
|
+
self.ui_manager = UIManager()
|
13
|
+
self.media_manager = MediaManager()
|
14
|
+
self.current_plugin:PluginBase = None
|
15
|
+
|
16
|
+
async def run(self):
|
17
|
+
self.ui_manager.clear_console()
|
18
|
+
konsol.rule("[bold cyan]KekikStream Başlatılıyor[/bold cyan]")
|
19
|
+
if not self.plugin_manager.get_plugin_names():
|
20
|
+
konsol.print("[bold red]Hiçbir eklenti bulunamadı![/bold red]")
|
21
|
+
return
|
22
|
+
|
23
|
+
try:
|
24
|
+
await self.select_plugin()
|
25
|
+
finally:
|
26
|
+
await self.plugin_manager.close_plugins()
|
27
|
+
|
28
|
+
async def select_plugin(self):
|
29
|
+
plugin_name = await self.ui_manager.select_from_list(
|
30
|
+
message = "Bir eklenti seçin:",
|
31
|
+
choices = self.plugin_manager.get_plugin_names()
|
32
|
+
)
|
33
|
+
|
34
|
+
self.current_plugin = self.plugin_manager.select_plugin(plugin_name)
|
35
|
+
|
36
|
+
await self.search()
|
37
|
+
|
38
|
+
async def search(self):
|
39
|
+
self.ui_manager.clear_console()
|
40
|
+
konsol.rule(f"[bold cyan]{self.current_plugin.name} Eklentisinde Arama Yapın[/bold cyan]")
|
41
|
+
|
42
|
+
query = await self.ui_manager.prompt_text("Arama sorgusu girin:")
|
43
|
+
results = await self.current_plugin.search(query)
|
44
|
+
|
45
|
+
if not results:
|
46
|
+
konsol.print("[bold red]Arama sonucu bulunamadı![/bold red]")
|
47
|
+
return
|
48
|
+
|
49
|
+
await self.select_result(results)
|
50
|
+
|
51
|
+
async def select_result(self, results):
|
52
|
+
selected_url = await self.ui_manager.select_from_list(
|
53
|
+
message = "Bir içerik seçin:",
|
54
|
+
choices = [{"name": res.title, "value": res.url} for res in results]
|
55
|
+
)
|
56
|
+
|
57
|
+
await self.show_details(selected_url)
|
58
|
+
|
59
|
+
async def show_details(self, url):
|
60
|
+
media_info = await self.current_plugin.load_item(url)
|
61
|
+
|
62
|
+
self.media_manager.set_title(f"{self.current_plugin.name} | {media_info.title}")
|
63
|
+
|
64
|
+
self.ui_manager.display_media_info(self.current_plugin.name, media_info)
|
65
|
+
|
66
|
+
links = await self.current_plugin.load_links(url)
|
67
|
+
await self.show_options(links)
|
68
|
+
|
69
|
+
async def show_options(self, links):
|
70
|
+
mapping = self.extractor_manager.map_links_to_extractors(links)
|
71
|
+
action = await self.ui_manager.select_from_list(
|
72
|
+
message = "Ne yapmak istersiniz?",
|
73
|
+
choices = ["İzle", "Geri Git", "Ana Menü"]
|
74
|
+
)
|
75
|
+
|
76
|
+
match action:
|
77
|
+
case "İzle":
|
78
|
+
selected_link = await self.ui_manager.select_from_list(
|
79
|
+
message = "Bir bağlantı seçin:",
|
80
|
+
choices = [{"name": extractor_name, "value": link} for link, extractor_name in mapping.items()]
|
81
|
+
)
|
82
|
+
if selected_link:
|
83
|
+
await self.play_media(selected_link)
|
84
|
+
|
85
|
+
case "Geri Git":
|
86
|
+
await self.search()
|
87
|
+
|
88
|
+
case _:
|
89
|
+
await self.run()
|
90
|
+
|
91
|
+
async def play_media(self, selected_link):
|
92
|
+
extractor:ExtractorBase = self.extractor_manager.find_extractor(selected_link)
|
93
|
+
if not extractor:
|
94
|
+
konsol.print("[bold red]Uygun Extractor bulunamadı.[/bold red]")
|
95
|
+
return
|
96
|
+
|
97
|
+
extract_data = await extractor.extract(selected_link, referer=self.current_plugin.main_url)
|
98
|
+
if extract_data.headers.get("Cookie"):
|
99
|
+
self.media_manager.set_headers({"Cookie": extract_data.headers.get("Cookie")})
|
100
|
+
|
101
|
+
self.media_manager.set_title(f"{self.media_manager.get_title()} | {extract_data.name}")
|
102
|
+
self.media_manager.set_headers({"Referer": extract_data.referer})
|
103
|
+
self.media_manager.play_media(extract_data)
|
104
|
+
|
105
|
+
|
106
|
+
def basla():
|
107
|
+
try:
|
108
|
+
app = KekikStream()
|
109
|
+
run(app.run())
|
110
|
+
cikis_yap(False)
|
111
|
+
except KeyboardInterrupt:
|
112
|
+
cikis_yap(True)
|
113
|
+
except Exception as hata:
|
114
|
+
hata_yakala(hata)
|
KekikStream/__main__.py
ADDED