KekikStream 1.4.0__py3-none-any.whl → 1.4.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/Plugins/RecTV.py +1 -1
- {kekikstream-1.4.0.dist-info → kekikstream-1.4.2.dist-info}/METADATA +1 -6
- {kekikstream-1.4.0.dist-info → kekikstream-1.4.2.dist-info}/RECORD +7 -33
- {kekikstream-1.4.0.dist-info → kekikstream-1.4.2.dist-info}/entry_points.txt +0 -1
- kekikstream-1.4.2.dist-info/top_level.txt +1 -0
- KekikStreamAPI/AYAR.yml +0 -8
- KekikStreamAPI/CLI/__init__.py +0 -3
- KekikStreamAPI/Core/Modules/_IP_Log.py +0 -27
- KekikStreamAPI/Core/Modules/_hata.py +0 -12
- KekikStreamAPI/Core/Modules/_istek.py +0 -131
- KekikStreamAPI/Core/Motor.py +0 -13
- KekikStreamAPI/Core/__init__.py +0 -24
- KekikStreamAPI/Public/API/v1/Libs/__init__.py +0 -7
- KekikStreamAPI/Public/API/v1/Routers/__init__.py +0 -25
- KekikStreamAPI/Public/API/v1/Routers/extract.py +0 -26
- KekikStreamAPI/Public/API/v1/Routers/get_main_page.py +0 -33
- KekikStreamAPI/Public/API/v1/Routers/get_plugin.py +0 -39
- KekikStreamAPI/Public/API/v1/Routers/get_plugin_names.py +0 -13
- KekikStreamAPI/Public/API/v1/Routers/load_item.py +0 -34
- KekikStreamAPI/Public/API/v1/Routers/load_links.py +0 -41
- KekikStreamAPI/Public/API/v1/Routers/search.py +0 -31
- KekikStreamAPI/Public/Home/Routers/__init__.py +0 -9
- KekikStreamAPI/Public/Home/Routers/ana_sayfa.py +0 -14
- KekikStreamAPI/Public/Home/Static/CSS/stil.css +0 -85
- KekikStreamAPI/Public/Home/Static/JS/bakalim.js +0 -1
- KekikStreamAPI/Public/Home/Static/favicon.ico +0 -0
- KekikStreamAPI/Public/Home/Templates/_html_taban.html +0 -50
- KekikStreamAPI/Public/Home/Templates/index.html +0 -33
- KekikStreamAPI/README.md +0 -9
- KekikStreamAPI/Settings/__init__.py +0 -11
- KekikStreamAPI/__init__.py +0 -18
- kekikstream-1.4.0.dist-info/top_level.txt +0 -2
- {kekikstream-1.4.0.dist-info → kekikstream-1.4.2.dist-info}/LICENSE +0 -0
- {kekikstream-1.4.0.dist-info → kekikstream-1.4.2.dist-info}/WHEEL +0 -0
KekikStream/Plugins/RecTV.py
CHANGED
@@ -8,7 +8,7 @@ import re
|
|
8
8
|
class RecTV(PluginBase):
|
9
9
|
name = "RecTV"
|
10
10
|
language = "tr"
|
11
|
-
main_url = "https://
|
11
|
+
main_url = "https://z.prectv36.sbs"
|
12
12
|
favicon = f"https://www.google.com/s2/favicons?domain={main_url}&sz=64"
|
13
13
|
description = "RecTv APK, Türkiye’deki en popüler Çevrimiçi Medya Akış platformlarından biridir. Filmlerin, Canlı Sporların, Web Dizilerinin ve çok daha fazlasının keyfini ücretsiz çıkarın."
|
14
14
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: KekikStream
|
3
|
-
Version: 1.4.
|
3
|
+
Version: 1.4.2
|
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
|
@@ -22,11 +22,6 @@ Requires-Dist: parsel
|
|
22
22
|
Requires-Dist: pydantic
|
23
23
|
Requires-Dist: InquirerPy
|
24
24
|
Requires-Dist: yt-dlp
|
25
|
-
Requires-Dist: fastapi
|
26
|
-
Requires-Dist: Jinja2
|
27
|
-
Requires-Dist: uvicorn
|
28
|
-
Requires-Dist: user_agents
|
29
|
-
Requires-Dist: PyYAML
|
30
25
|
Dynamic: author
|
31
26
|
Dynamic: author-email
|
32
27
|
Dynamic: classifier
|
@@ -50,40 +50,14 @@ KekikStream/Plugins/FilmMakinesi.py,sha256=J4v35Ln3RehWPai3I-9nWrasRLx3hN3IgrWVp
|
|
50
50
|
KekikStream/Plugins/FullHDFilmizlesene.py,sha256=AO9Il0PE77JUvg1AN4Vxl95pTrCBbOjclqFGWuzo7cY,6271
|
51
51
|
KekikStream/Plugins/HDFilmCehennemi.py,sha256=w-sGlRb60PMHO75ZlreP1fpjeA048VzNJIiXEV1oFe4,9908
|
52
52
|
KekikStream/Plugins/JetFilmizle.py,sha256=Hi_yzjUyTQryx-4kTfxNdNSqqQcwodc_JJULOTKTrBA,5483
|
53
|
-
KekikStream/Plugins/RecTV.py,sha256=
|
53
|
+
KekikStream/Plugins/RecTV.py,sha256=Rnl4sYRfgMSfXzOHURHDTJdJlgVxtSiupx0ez8vieTM,7247
|
54
54
|
KekikStream/Plugins/SezonlukDizi.py,sha256=IvmOB6qCEHBy41BS4KFBjsTegmzEF6l-2l_CvamYrW8,6099
|
55
55
|
KekikStream/Plugins/Shorten.py,sha256=dDYt89WX-CcDhJAAV2A4zaD4xcZa8aN6-YcAcseyVo4,8948
|
56
56
|
KekikStream/Plugins/SineWix.py,sha256=cFqwn8B4M-WJWJlMuCrvv0JyKPv953iDqCLbGyy8Xu0,7145
|
57
57
|
KekikStream/Plugins/UgurFilm.py,sha256=tChGgiAeQeVUqHqrVXDz_eMIyghOHqKuHJb0pCQqs1M,4724
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
KekikStreamAPI/Core/Modules/_IP_Log.py,sha256=NwbAQTOEwsuKhZmjHzPXax7g6EL4Q1Q81ZadbVm8DXI,918
|
65
|
-
KekikStreamAPI/Core/Modules/_hata.py,sha256=puMONN0Aa9wIjLhAmTqLHXa4sn8pKwROUdhmVnS8JxI,627
|
66
|
-
KekikStreamAPI/Core/Modules/_istek.py,sha256=UQqKiNpe49LepBv_M7obB66IPtF-DJrGE0-4Va0wr-8,4700
|
67
|
-
KekikStreamAPI/Public/API/v1/Libs/__init__.py,sha256=y0iEyUs5OUvBzMXDnfCqJMFG67OOtt13NhnuVX5Zngo,286
|
68
|
-
KekikStreamAPI/Public/API/v1/Routers/__init__.py,sha256=bZRpDwIXweGR9BcCUObMe6T9cy9NV0M_vYmiB7ACchM,738
|
69
|
-
KekikStreamAPI/Public/API/v1/Routers/extract.py,sha256=ZSbJ3nlPZaL4HzZkvqiga8bsnH8xgHUSlLiVZ_iPiWs,1092
|
70
|
-
KekikStreamAPI/Public/API/v1/Routers/get_main_page.py,sha256=l8lrZUQQQLg_k8mOkD8fry8E3PrnGL2QcXuAx0g_v8A,1538
|
71
|
-
KekikStreamAPI/Public/API/v1/Routers/get_plugin.py,sha256=Pq2qfZEh1Syy_YZ2VeB2MR1Mj0LAnJdudCmZtK3qcN8,1407
|
72
|
-
KekikStreamAPI/Public/API/v1/Routers/get_plugin_names.py,sha256=KH6X2Kb-TU2YtztRSdguIuFwllGtSpmwCfZ9q73rMOQ,493
|
73
|
-
KekikStreamAPI/Public/API/v1/Routers/load_item.py,sha256=5v4G7JuIJKSgKxXEFzZ5c7ICWNtlATGRoPo2IVt4eBY,1350
|
74
|
-
KekikStreamAPI/Public/API/v1/Routers/load_links.py,sha256=FZ7EMGuAsV8N0p8KbNTX4hbBTtCqSTHVoi8ugiDl_RY,1705
|
75
|
-
KekikStreamAPI/Public/API/v1/Routers/search.py,sha256=OH4ANqsQV_srwDtXF9E6gbccu-V1PfAUULnbC3tod6I,1178
|
76
|
-
KekikStreamAPI/Public/Home/Routers/__init__.py,sha256=KFRUmzYedYdboxfiw-cwDvpUMm1EGOp9SeLinWip4aU,287
|
77
|
-
KekikStreamAPI/Public/Home/Routers/ana_sayfa.py,sha256=SkcHijyC8zQvOsAGrZssNFqoVGm_U7kBBQ9KEXT3GDI,507
|
78
|
-
KekikStreamAPI/Public/Home/Static/favicon.ico,sha256=b34L2enj9j-jIb82m80I-LBFWg9tN2vKo3tNkb9ynmc,15086
|
79
|
-
KekikStreamAPI/Public/Home/Static/CSS/stil.css,sha256=BuNAg-apDVQnV77oq9qaKgoCAHP_Hdtf3_jzVKy6cnw,1480
|
80
|
-
KekikStreamAPI/Public/Home/Static/JS/bakalim.js,sha256=1EkIAxNeX1irQIJ0hTwlXCpHN5yn8ujhU66JpvW7860,78
|
81
|
-
KekikStreamAPI/Public/Home/Templates/_html_taban.html,sha256=dW0Z4tTU2Fm07nz7u4o2TFFxOmCWmRq4CqMsdnpbneE,2600
|
82
|
-
KekikStreamAPI/Public/Home/Templates/index.html,sha256=BqI3MfuiNnWjQxksaviYZUeMwrOh3uuvYCRPnewysJg,1307
|
83
|
-
KekikStreamAPI/Settings/__init__.py,sha256=nmxsb7qwBuXEjG2PC5b8Jl9UOj_mAUVt98rfWnBl25I,365
|
84
|
-
kekikstream-1.4.0.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
85
|
-
kekikstream-1.4.0.dist-info/METADATA,sha256=Kf617CXGR4jdKZ_B8p3aCD-Pn9OzVa0Jj5sVfqe4au4,5090
|
86
|
-
kekikstream-1.4.0.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
|
87
|
-
kekikstream-1.4.0.dist-info/entry_points.txt,sha256=UpmG0Vp32rFbTsV22loNZugX3cfO5Scdr7j_eyWOr4E,88
|
88
|
-
kekikstream-1.4.0.dist-info/top_level.txt,sha256=VHi7CEC3z7vCAdeRLxLn00sb-xosSvSFsT0TJRZVDw4,27
|
89
|
-
kekikstream-1.4.0.dist-info/RECORD,,
|
58
|
+
kekikstream-1.4.2.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
59
|
+
kekikstream-1.4.2.dist-info/METADATA,sha256=KekQOD3PNSlsxCmUgUSRk1CTmWT8yRRDmIg234NclPg,4973
|
60
|
+
kekikstream-1.4.2.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
|
61
|
+
kekikstream-1.4.2.dist-info/entry_points.txt,sha256=dFwdiTx8djyehI0Gsz-rZwjAfZzUzoBSrmzRu9ubjJc,50
|
62
|
+
kekikstream-1.4.2.dist-info/top_level.txt,sha256=DNmGJDXl27Drdfobrak8KYLmocW_uznVYFJOzcjUgmY,12
|
63
|
+
kekikstream-1.4.2.dist-info/RECORD,,
|
@@ -0,0 +1 @@
|
|
1
|
+
KekikStream
|
KekikStreamAPI/AYAR.yml
DELETED
KekikStreamAPI/CLI/__init__.py
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
2
|
-
|
3
|
-
from httpx import AsyncClient
|
4
|
-
from Core import kekik_cache
|
5
|
-
from Settings import CACHE_TIME
|
6
|
-
|
7
|
-
@kekik_cache(ttl=CACHE_TIME)
|
8
|
-
async def ip_log(hedef_ip:str) -> dict[str, str]:
|
9
|
-
try:
|
10
|
-
oturum = AsyncClient(timeout=3)
|
11
|
-
|
12
|
-
istek = await oturum.get(f"http://ip-api.com/json/{hedef_ip}")
|
13
|
-
veri = istek.json()
|
14
|
-
|
15
|
-
if veri["status"] != "fail":
|
16
|
-
return {
|
17
|
-
"ulke" : veri["country"] or "",
|
18
|
-
"il" : veri["regionName"] or "",
|
19
|
-
"ilce" : veri["city"] or "",
|
20
|
-
"isp" : veri["isp"] or "",
|
21
|
-
"sirket" : veri["org"] or "",
|
22
|
-
"host" : veri["as"] or ""
|
23
|
-
}
|
24
|
-
else:
|
25
|
-
return {"hata": "Veri Bulunamadı.."}
|
26
|
-
except Exception as hata:
|
27
|
-
return {"hata": f"{type(hata).__name__} » {hata}"}
|
@@ -1,12 +0,0 @@
|
|
1
|
-
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
2
|
-
|
3
|
-
from Core import KekikStreamAPI, Request, RedirectResponse, JSONResponse, FileResponse
|
4
|
-
from starlette.exceptions import HTTPException as StarletteHTTPException
|
5
|
-
|
6
|
-
@KekikStreamAPI.exception_handler(StarletteHTTPException)
|
7
|
-
async def custom_http_exception_handler(request:Request, exc):
|
8
|
-
return RedirectResponse("/") if exc.status_code != 410 else JSONResponse(status_code=exc.status_code, content={"detail": exc.detail})
|
9
|
-
|
10
|
-
@KekikStreamAPI.get("/favicon.ico")
|
11
|
-
def get_favicon():
|
12
|
-
return FileResponse("Public/Home/Static/favicon.ico")
|
@@ -1,131 +0,0 @@
|
|
1
|
-
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
2
|
-
|
3
|
-
from CLI import konsol
|
4
|
-
from Core import KekikStreamAPI, Request, JSONResponse
|
5
|
-
from time import time
|
6
|
-
from user_agents import parse
|
7
|
-
from ._IP_Log import ip_log
|
8
|
-
import asyncio
|
9
|
-
|
10
|
-
@KekikStreamAPI.middleware("http")
|
11
|
-
async def istekten_once_sonra(request: Request, call_next):
|
12
|
-
baslangic_zamani = time()
|
13
|
-
|
14
|
-
if request.method == "GET":
|
15
|
-
request.state.req_veri = dict(request.query_params) if request.query_params else None
|
16
|
-
else:
|
17
|
-
try:
|
18
|
-
request.state.req_veri = await request.json()
|
19
|
-
except Exception:
|
20
|
-
form_data = await request.form()
|
21
|
-
request.state.req_veri = dict(form_data.items())
|
22
|
-
|
23
|
-
try:
|
24
|
-
ua_header = request.headers.get("User-Agent")
|
25
|
-
parsed_ua = parse(ua_header)
|
26
|
-
cihaz = ua_header if str(parsed_ua).split("/")[2].strip() == "Other" else parsed_ua
|
27
|
-
except Exception:
|
28
|
-
cihaz = request.headers.get("User-Agent")
|
29
|
-
|
30
|
-
log_ip = request.headers.get("X-Forwarded-For") or request.client.host
|
31
|
-
ip_w_cf = (
|
32
|
-
f"{request.headers.get('Cf-Connecting-Ip')} [yellow]| CF: ({log_ip})[/]"
|
33
|
-
if request.headers.get("Cf-Connecting-Ip")
|
34
|
-
else log_ip
|
35
|
-
)
|
36
|
-
|
37
|
-
log_veri = {
|
38
|
-
"id" : request.headers.get("X-Request-ID") or "",
|
39
|
-
"method" : request.method,
|
40
|
-
"url" : str(request.url).rstrip("?").split("?")[0],
|
41
|
-
"veri" : request.state.req_veri,
|
42
|
-
"kod" : None,
|
43
|
-
"sure" : None,
|
44
|
-
"ip" : log_ip,
|
45
|
-
"cihaz" : cihaz,
|
46
|
-
"host" : request.url.hostname,
|
47
|
-
}
|
48
|
-
|
49
|
-
try:
|
50
|
-
# async with asyncio.timeout(7.5):
|
51
|
-
response = await asyncio.wait_for(call_next(request), timeout=7.5)
|
52
|
-
if response:
|
53
|
-
log_veri["kod"] = response.status_code
|
54
|
-
else:
|
55
|
-
log_veri["kod"] = 502
|
56
|
-
response = JSONResponse(status_code=log_veri["kod"], content={"ups": "Yanit Gelmedi.."})
|
57
|
-
except asyncio.TimeoutError:
|
58
|
-
log_veri["kod"] = 504
|
59
|
-
response = JSONResponse(status_code=log_veri["kod"], content={"ups": "Zaman Aşımı.."})
|
60
|
-
|
61
|
-
for skip_path in ("/favicon.ico", "/static", "/webfonts"):
|
62
|
-
if skip_path in request.url.path:
|
63
|
-
return response
|
64
|
-
|
65
|
-
log_veri["sure"] = round(time() - baslangic_zamani, 2)
|
66
|
-
await log_salla(log_veri, request)
|
67
|
-
|
68
|
-
return response
|
69
|
-
|
70
|
-
async def log_salla(log_veri: dict, request: Request):
|
71
|
-
log_url = (
|
72
|
-
log_veri['url'].replace(request.url.scheme, request.headers.get("X-Forwarded-Proto"))
|
73
|
-
if request.headers.get("X-Forwarded-Proto")
|
74
|
-
else log_veri['url']
|
75
|
-
)
|
76
|
-
|
77
|
-
LABEL_WIDTH = 5
|
78
|
-
durum_label = f"[green]{'durum':<{LABEL_WIDTH}}:[/]"
|
79
|
-
ip_label = f"[green]{'ip':<{LABEL_WIDTH}}:[/]"
|
80
|
-
konum_label = f"[green]{'konum':<{LABEL_WIDTH}}:[/]"
|
81
|
-
cihaz_label = f"[green]{'cihaz':<{LABEL_WIDTH}}:[/]"
|
82
|
-
|
83
|
-
log_lines = []
|
84
|
-
|
85
|
-
log_lines.append(f"[bold blue]»[/] [bold turquoise2]{log_url}[/]")
|
86
|
-
|
87
|
-
if log_veri["veri"]:
|
88
|
-
log_lines.append(f"[bold magenta]»[/] [bold cyan]{log_veri['veri']}[/]")
|
89
|
-
|
90
|
-
durum_line = (
|
91
|
-
f" {durum_label} [bold green]{log_veri['method']}[/]"
|
92
|
-
f" [blue]-[/] [bold bright_yellow]{log_veri['kod']}[/]"
|
93
|
-
f" [blue]-[/] [bold yellow2]{log_veri['sure']} sn[/]"
|
94
|
-
)
|
95
|
-
log_lines.append(durum_line)
|
96
|
-
|
97
|
-
if log_veri["id"]:
|
98
|
-
ip_line = (
|
99
|
-
f" {ip_label} [bold bright_blue]{log_veri['id']}[/]"
|
100
|
-
f"[bold green]@[/][bold red]{log_veri['ip']}[/]"
|
101
|
-
)
|
102
|
-
else:
|
103
|
-
ip_line = f" {ip_label} [bold red]{log_veri['ip']}[/]"
|
104
|
-
log_lines.append(ip_line)
|
105
|
-
|
106
|
-
ip_detay = await ip_log(log_veri["ip"].split()[0].replace(",", ""))
|
107
|
-
if ("hata" not in ip_detay) and ip_detay.get("ulke"):
|
108
|
-
il = ip_detay["il"].replace(" Province", "")
|
109
|
-
ilce = ip_detay["ilce"]
|
110
|
-
|
111
|
-
host_str = " ".join(ip_detay["host"].split()[1:4])
|
112
|
-
|
113
|
-
if il != ilce:
|
114
|
-
konum_line = (
|
115
|
-
f" {konum_label} [bold chartreuse3]{ip_detay['ulke']}[/]"
|
116
|
-
f" [blue]|[/] [bold chartreuse3]{il}[/]"
|
117
|
-
f" [blue]|[/] [bold chartreuse3]{ilce}[/]"
|
118
|
-
f" [blue]|[/] [bold chartreuse3]{host_str}[/]"
|
119
|
-
)
|
120
|
-
else:
|
121
|
-
konum_line = (
|
122
|
-
f" {konum_label} [bold chartreuse3]{ip_detay['ulke']}[/]"
|
123
|
-
f" [blue]|[/] [bold chartreuse3]{il}[/]"
|
124
|
-
f" [blue]|[/] [bold chartreuse3]{host_str}[/]"
|
125
|
-
)
|
126
|
-
log_lines.append(konum_line)
|
127
|
-
|
128
|
-
log_lines.append(f" {cihaz_label} [magenta]{log_veri['cihaz']}[/]")
|
129
|
-
|
130
|
-
final_log = "\n".join(log_lines)
|
131
|
-
konsol.log(final_log + "\n")
|
KekikStreamAPI/Core/Motor.py
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
2
|
-
|
3
|
-
from CLI import konsol
|
4
|
-
from Settings import AYAR, HOST, PORT, WORKERS
|
5
|
-
from sys import version_info
|
6
|
-
import uvicorn
|
7
|
-
|
8
|
-
def basla():
|
9
|
-
surum = f"{version_info[0]}.{version_info[1]}"
|
10
|
-
konsol.print(f"\n[bold gold1]{AYAR['PROJE']}[/] [yellow]:bird:[/] [turquoise2]Python {surum}[/] [bold yellow2]uvicorn[/]", width=70, justify="center")
|
11
|
-
konsol.print(f"[red]{HOST}[light_coral]:[/]{PORT}[pale_green1] başlatılmıştır...[/]\n", width=70, justify="center")
|
12
|
-
|
13
|
-
uvicorn.run("Core:KekikStreamAPI", host=HOST, port=PORT, forwarded_allow_ips="*", workers=WORKERS, log_level="error")
|
KekikStreamAPI/Core/__init__.py
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
2
|
-
|
3
|
-
from fastapi import FastAPI, Request, Response, HTTPException
|
4
|
-
from fastapi.staticfiles import StaticFiles
|
5
|
-
from fastapi.responses import JSONResponse, HTMLResponse, RedirectResponse, PlainTextResponse, FileResponse
|
6
|
-
from Kekik.cache import kekik_cache
|
7
|
-
|
8
|
-
KekikStreamAPI = FastAPI(
|
9
|
-
title = "KekikStreamAPI",
|
10
|
-
openapi_url = None,
|
11
|
-
docs_url = None,
|
12
|
-
redoc_url = None
|
13
|
-
)
|
14
|
-
|
15
|
-
# ! ----------------------------------------» Routers
|
16
|
-
|
17
|
-
from Core.Modules import _istek, _hata
|
18
|
-
from Public.Home.Routers import home_router
|
19
|
-
from Public.API.v1.Routers import api_v1_router
|
20
|
-
|
21
|
-
KekikStreamAPI.include_router(home_router, prefix="")
|
22
|
-
KekikStreamAPI.mount("/static/home", StaticFiles(directory="Public/Home/Static"), name="static_home")
|
23
|
-
|
24
|
-
KekikStreamAPI.include_router(api_v1_router, prefix="/api/v1")
|
@@ -1,7 +0,0 @@
|
|
1
|
-
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
2
|
-
|
3
|
-
from KekikStream.Core import PluginManager, ExtractorManager, MediaManager, MovieInfo, SeriesInfo
|
4
|
-
|
5
|
-
plugin_manager = PluginManager()
|
6
|
-
extractor_manager = ExtractorManager()
|
7
|
-
media_manager = MediaManager()
|
@@ -1,25 +0,0 @@
|
|
1
|
-
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
2
|
-
|
3
|
-
from fastapi import APIRouter
|
4
|
-
from Core import Request, kekik_cache
|
5
|
-
from Settings import CACHE_TIME
|
6
|
-
|
7
|
-
api_v1_router = APIRouter()
|
8
|
-
api_v1_global_message = {
|
9
|
-
"with" : "https://github.com/keyiflerolsun/KekikStream"
|
10
|
-
}
|
11
|
-
|
12
|
-
@api_v1_router.get("")
|
13
|
-
@kekik_cache(ttl=CACHE_TIME, is_fastapi=True)
|
14
|
-
async def get_api_v1_router(request: Request):
|
15
|
-
return api_v1_global_message
|
16
|
-
|
17
|
-
|
18
|
-
# ! ----------------------------------------» Routers
|
19
|
-
from .get_plugin_names import *
|
20
|
-
from .get_plugin import *
|
21
|
-
from .get_main_page import *
|
22
|
-
from .search import *
|
23
|
-
from .load_item import *
|
24
|
-
from .load_links import *
|
25
|
-
from .extract import *
|
@@ -1,26 +0,0 @@
|
|
1
|
-
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
2
|
-
|
3
|
-
from . import api_v1_router, api_v1_global_message
|
4
|
-
from Core import Request, JSONResponse, kekik_cache
|
5
|
-
from ..Libs import extractor_manager
|
6
|
-
from Settings import CACHE_TIME
|
7
|
-
|
8
|
-
@api_v1_router.get("/extract")
|
9
|
-
@kekik_cache(ttl=CACHE_TIME, is_fastapi=True)
|
10
|
-
async def extract(request:Request):
|
11
|
-
istek = request.state.req_veri
|
12
|
-
if not istek:
|
13
|
-
return JSONResponse(status_code=410, content={"hata": f"{request.url.path}?_encoded_url=&_encoded_referer="})
|
14
|
-
|
15
|
-
_encoded_url = istek.get("encoded_url")
|
16
|
-
_encoded_referer = istek.get("encoded_referer")
|
17
|
-
if not _encoded_url:
|
18
|
-
return JSONResponse(status_code=410, content={"hata": f"{request.url.path}?_encoded_url=&_encoded_referer="})
|
19
|
-
|
20
|
-
extractor = extractor_manager.find_extractor(_encoded_url)
|
21
|
-
if not extractor:
|
22
|
-
return JSONResponse(status_code=404, content={"hata": "Extractor bulunamadı."})
|
23
|
-
|
24
|
-
result = await extractor.extract(_encoded_url, _encoded_referer)
|
25
|
-
|
26
|
-
return {**api_v1_global_message, "result": result}
|
@@ -1,33 +0,0 @@
|
|
1
|
-
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
2
|
-
|
3
|
-
from . import api_v1_router, api_v1_global_message
|
4
|
-
from Core import Request, JSONResponse, kekik_cache
|
5
|
-
from ..Libs import plugin_manager
|
6
|
-
from Settings import CACHE_TIME
|
7
|
-
|
8
|
-
from random import choice
|
9
|
-
from urllib.parse import quote_plus
|
10
|
-
|
11
|
-
@api_v1_router.get("/get_main_page")
|
12
|
-
@kekik_cache(ttl=CACHE_TIME, is_fastapi=True)
|
13
|
-
async def get_main_page(request:Request):
|
14
|
-
istek = request.state.req_veri
|
15
|
-
plugin_names = plugin_manager.get_plugin_names()
|
16
|
-
if not istek:
|
17
|
-
return JSONResponse(status_code=410, content={"hata": f"{request.url.path}?plugin={choice(plugin_names)}&page=1&encoded_url=&encoded_category="})
|
18
|
-
|
19
|
-
_plugin = istek.get("plugin")
|
20
|
-
_plugin = _plugin if _plugin in plugin_names else None
|
21
|
-
_page = istek.get("page")
|
22
|
-
_page = int(_page) if _page.isdigit() else None
|
23
|
-
_encoded_url = istek.get("encoded_url")
|
24
|
-
_encoded_category = istek.get("encoded_category")
|
25
|
-
if not _plugin or not _page or not _encoded_url or not _encoded_category:
|
26
|
-
return JSONResponse(status_code=410, content={"hata": f"{request.url.path}?plugin={_plugin or choice(plugin_names)}&page=1&encoded_url=&encoded_category="})
|
27
|
-
|
28
|
-
plugin = plugin_manager.select_plugin(_plugin)
|
29
|
-
result = await plugin.get_main_page(_page, _encoded_url, _encoded_category)
|
30
|
-
for icerik in result:
|
31
|
-
icerik.url = quote_plus(icerik.url)
|
32
|
-
|
33
|
-
return {**api_v1_global_message, "result": result}
|
@@ -1,39 +0,0 @@
|
|
1
|
-
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
2
|
-
|
3
|
-
from . import api_v1_router, api_v1_global_message
|
4
|
-
from Core import Request, JSONResponse, kekik_cache
|
5
|
-
from ..Libs import plugin_manager
|
6
|
-
from Settings import CACHE_TIME
|
7
|
-
|
8
|
-
from random import choice
|
9
|
-
from urllib.parse import quote_plus
|
10
|
-
|
11
|
-
@api_v1_router.get("/get_plugin")
|
12
|
-
@kekik_cache(ttl=CACHE_TIME, is_fastapi=True)
|
13
|
-
async def get_plugin(request:Request):
|
14
|
-
istek = request.state.req_veri
|
15
|
-
plugin_names = plugin_manager.get_plugin_names()
|
16
|
-
if not istek:
|
17
|
-
return JSONResponse(status_code=410, content={"hata": f"{request.url.path}?plugin={choice(plugin_names)}"})
|
18
|
-
|
19
|
-
_plugin = istek.get("plugin")
|
20
|
-
_plugin = _plugin if _plugin in plugin_names else None
|
21
|
-
if not _plugin:
|
22
|
-
return JSONResponse(status_code=410, content={"hata": f"{request.url.path}?plugin={_plugin or choice(plugin_names)}"})
|
23
|
-
|
24
|
-
plugin = plugin_manager.select_plugin(_plugin)
|
25
|
-
|
26
|
-
main_page = {}
|
27
|
-
for url, category in plugin.main_page.items():
|
28
|
-
main_page[quote_plus(url)] = quote_plus(category)
|
29
|
-
|
30
|
-
result = {
|
31
|
-
"name" : plugin.name,
|
32
|
-
"language" : plugin.language,
|
33
|
-
"main_url" : plugin.main_url,
|
34
|
-
"favicon" : plugin.favicon,
|
35
|
-
"description" : plugin.description,
|
36
|
-
"main_page" : main_page
|
37
|
-
}
|
38
|
-
|
39
|
-
return {**api_v1_global_message, "result": result}
|
@@ -1,13 +0,0 @@
|
|
1
|
-
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
2
|
-
|
3
|
-
from . import api_v1_router, api_v1_global_message
|
4
|
-
from Core import Request, kekik_cache
|
5
|
-
from ..Libs import plugin_manager
|
6
|
-
from Settings import CACHE_TIME
|
7
|
-
|
8
|
-
@api_v1_router.get("/get_plugin_names")
|
9
|
-
@kekik_cache(ttl=CACHE_TIME, is_fastapi=True)
|
10
|
-
async def get_plugin_names(request: Request):
|
11
|
-
plugin_names = plugin_manager.get_plugin_names()
|
12
|
-
|
13
|
-
return {**api_v1_global_message, "result": plugin_names}
|
@@ -1,34 +0,0 @@
|
|
1
|
-
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
2
|
-
|
3
|
-
from . import api_v1_router, api_v1_global_message
|
4
|
-
from Core import Request, JSONResponse, kekik_cache
|
5
|
-
from ..Libs import plugin_manager, SeriesInfo
|
6
|
-
from Settings import CACHE_TIME
|
7
|
-
|
8
|
-
from random import choice
|
9
|
-
from urllib.parse import quote_plus
|
10
|
-
|
11
|
-
@api_v1_router.get("/load_item")
|
12
|
-
@kekik_cache(ttl=CACHE_TIME, is_fastapi=True)
|
13
|
-
async def load_item(request:Request):
|
14
|
-
istek = request.state.req_veri
|
15
|
-
plugin_names = plugin_manager.get_plugin_names()
|
16
|
-
if not istek:
|
17
|
-
return JSONResponse(status_code=410, content={"hata": f"{request.url.path}?plugin={choice(plugin_names)}&encoded_url="})
|
18
|
-
|
19
|
-
_plugin = istek.get("plugin")
|
20
|
-
_plugin = _plugin if _plugin in plugin_names else None
|
21
|
-
_encoded_url = istek.get("encoded_url")
|
22
|
-
if not _plugin or not _encoded_url:
|
23
|
-
return JSONResponse(status_code=410, content={"hata": f"{request.url.path}?plugin={_plugin or choice(plugin_names)}&encoded_url="})
|
24
|
-
|
25
|
-
plugin = plugin_manager.select_plugin(_plugin)
|
26
|
-
result = await plugin.load_item(_encoded_url)
|
27
|
-
|
28
|
-
result.url = quote_plus(result.url)
|
29
|
-
|
30
|
-
if isinstance(result, SeriesInfo):
|
31
|
-
for episode in result.episodes:
|
32
|
-
episode.url = quote_plus(episode.url)
|
33
|
-
|
34
|
-
return {**api_v1_global_message, "result": result}
|
@@ -1,41 +0,0 @@
|
|
1
|
-
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
2
|
-
|
3
|
-
from . import api_v1_router, api_v1_global_message
|
4
|
-
from Core import Request, JSONResponse, kekik_cache
|
5
|
-
from ..Libs import plugin_manager
|
6
|
-
from Settings import CACHE_TIME
|
7
|
-
|
8
|
-
from random import choice
|
9
|
-
from urllib.parse import quote_plus
|
10
|
-
|
11
|
-
@api_v1_router.get("/load_links")
|
12
|
-
@kekik_cache(ttl=CACHE_TIME, is_fastapi=True)
|
13
|
-
async def load_links(request:Request):
|
14
|
-
istek = request.state.req_veri
|
15
|
-
plugin_names = plugin_manager.get_plugin_names()
|
16
|
-
if not istek:
|
17
|
-
return JSONResponse(status_code=410, content={"hata": f"{request.url.path}?plugin={choice(plugin_names)}&encoded_url="})
|
18
|
-
|
19
|
-
_plugin = istek.get("plugin")
|
20
|
-
_plugin = _plugin if _plugin in plugin_names else None
|
21
|
-
_encoded_url = istek.get("encoded_url")
|
22
|
-
if not _plugin or not _encoded_url:
|
23
|
-
return JSONResponse(status_code=410, content={"hata": f"{request.url.path}?plugin={_plugin or choice(plugin_names)}&encoded_url="})
|
24
|
-
|
25
|
-
plugin = plugin_manager.select_plugin(_plugin)
|
26
|
-
links = await plugin.load_links(_encoded_url)
|
27
|
-
|
28
|
-
if hasattr(plugin, "play") and callable(getattr(plugin, "play", None)):
|
29
|
-
result = []
|
30
|
-
for link in links:
|
31
|
-
data = plugin._data.get(link, {})
|
32
|
-
result.append({
|
33
|
-
"name" : data.get("name"),
|
34
|
-
"url" : link,
|
35
|
-
"referer" : data.get("referer"),
|
36
|
-
"subtitles" : data.get("subtitles")
|
37
|
-
})
|
38
|
-
|
39
|
-
return {**api_v1_global_message, "must_extract": False, "result": result}
|
40
|
-
|
41
|
-
return {**api_v1_global_message, "must_extract": True, "result": [quote_plus(link) for link in links]}
|
@@ -1,31 +0,0 @@
|
|
1
|
-
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
2
|
-
|
3
|
-
from . import api_v1_router, api_v1_global_message
|
4
|
-
from Core import Request, JSONResponse, kekik_cache
|
5
|
-
from ..Libs import plugin_manager
|
6
|
-
from Settings import CACHE_TIME
|
7
|
-
|
8
|
-
from random import choice
|
9
|
-
from urllib.parse import quote_plus
|
10
|
-
|
11
|
-
@api_v1_router.get("/search")
|
12
|
-
@kekik_cache(ttl=CACHE_TIME, is_fastapi=True)
|
13
|
-
async def search(request:Request):
|
14
|
-
istek = request.state.req_veri
|
15
|
-
plugin_names = plugin_manager.get_plugin_names()
|
16
|
-
if not istek:
|
17
|
-
return JSONResponse(status_code=410, content={"hata": f"{request.url.path}?plugin={choice(plugin_names)}&query="})
|
18
|
-
|
19
|
-
_plugin = istek.get("plugin")
|
20
|
-
_plugin = _plugin if _plugin in plugin_names else None
|
21
|
-
_query = istek.get("query")
|
22
|
-
if not _plugin or not _query:
|
23
|
-
return JSONResponse(status_code=410, content={"hata": f"{request.url.path}?plugin={_plugin or choice(plugin_names)}&query="})
|
24
|
-
|
25
|
-
plugin = plugin_manager.select_plugin(_plugin)
|
26
|
-
result = await plugin.search(_query)
|
27
|
-
|
28
|
-
for elem in result:
|
29
|
-
elem.url = quote_plus(elem.url)
|
30
|
-
|
31
|
-
return {**api_v1_global_message, "result": result}
|
@@ -1,9 +0,0 @@
|
|
1
|
-
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
2
|
-
|
3
|
-
from fastapi import APIRouter
|
4
|
-
from fastapi.templating import Jinja2Templates
|
5
|
-
|
6
|
-
home_router = APIRouter()
|
7
|
-
home_template = Jinja2Templates(directory="Public/Home/Templates")
|
8
|
-
|
9
|
-
from .ana_sayfa import *
|
@@ -1,14 +0,0 @@
|
|
1
|
-
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
2
|
-
|
3
|
-
from Core import Request, HTMLResponse
|
4
|
-
from . import home_router, home_template
|
5
|
-
|
6
|
-
@home_router.get("/", response_class=HTMLResponse)
|
7
|
-
async def ana_sayfa(request: Request):
|
8
|
-
context = {
|
9
|
-
"request" : request,
|
10
|
-
"baslik" : "keyiflerolsun - Ömer Faruk Sancak | KekikAkademi",
|
11
|
-
"aciklama" : "siz hayal edin, biz geliştirelim.. 🕊"
|
12
|
-
}
|
13
|
-
|
14
|
-
return home_template.TemplateResponse("index.html", context)
|
@@ -1,85 +0,0 @@
|
|
1
|
-
/* Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır. */
|
2
|
-
|
3
|
-
@import "https://fonts.googleapis.com/css2?family=Mulish:wght@300;400;500;600;700;800;900&display=swap";
|
4
|
-
|
5
|
-
* {
|
6
|
-
padding: 0;
|
7
|
-
margin: 0;
|
8
|
-
list-style: none;
|
9
|
-
border: 0;
|
10
|
-
outline: none;
|
11
|
-
text-decoration: none !important;
|
12
|
-
box-sizing: border-box;
|
13
|
-
-webkit-font-smoothing: antialiased
|
14
|
-
}
|
15
|
-
|
16
|
-
html, body {
|
17
|
-
color: #EF7F1A;
|
18
|
-
height: 100%
|
19
|
-
}
|
20
|
-
|
21
|
-
body {
|
22
|
-
background-color: #2B2A29;
|
23
|
-
display: flex;
|
24
|
-
flex-direction: column;
|
25
|
-
align-items: center;
|
26
|
-
justify-content: center
|
27
|
-
}
|
28
|
-
|
29
|
-
h2 {
|
30
|
-
font-family: "Mulish", sans-serif;
|
31
|
-
color:#d3d3d3;
|
32
|
-
}
|
33
|
-
|
34
|
-
h3 {
|
35
|
-
text-align: center;
|
36
|
-
color: #d3d3d3 ;
|
37
|
-
font-size: 50px;
|
38
|
-
font-weight: 900;
|
39
|
-
margin-bottom: 30px
|
40
|
-
}
|
41
|
-
|
42
|
-
h3 a {
|
43
|
-
color: #EF7F1A;
|
44
|
-
}
|
45
|
-
|
46
|
-
h3 a:hover {
|
47
|
-
color: #0087A3;
|
48
|
-
}
|
49
|
-
|
50
|
-
@media only screen and (max-width: 600px) {
|
51
|
-
body {
|
52
|
-
text-align: center;
|
53
|
-
flex-wrap: wrap;
|
54
|
-
}
|
55
|
-
|
56
|
-
form h3 {
|
57
|
-
font-size: 33px !important;
|
58
|
-
}
|
59
|
-
}
|
60
|
-
|
61
|
-
.hover {
|
62
|
-
text-decoration: none !important;
|
63
|
-
color: #d3d3d3;
|
64
|
-
transition: color 1s;
|
65
|
-
}
|
66
|
-
|
67
|
-
.hover:hover {
|
68
|
-
color: #2B2A29;
|
69
|
-
background: #EF7F1A;
|
70
|
-
text-decoration: none !important;
|
71
|
-
border: 0.5px solid #EF7F1A;
|
72
|
-
}
|
73
|
-
|
74
|
-
.links-footer {
|
75
|
-
padding: 4px;
|
76
|
-
border: 0.5px solid #d3d3d3;
|
77
|
-
border-width: 1px;
|
78
|
-
width: 40px;
|
79
|
-
display: inline-block;
|
80
|
-
border-radius: 10px;
|
81
|
-
font-size: 20px;
|
82
|
-
text-align: center;
|
83
|
-
margin: 10px;
|
84
|
-
margin-top: 50px;
|
85
|
-
}
|
@@ -1 +0,0 @@
|
|
1
|
-
// Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
Binary file
|
@@ -1,50 +0,0 @@
|
|
1
|
-
<!doctype html>
|
2
|
-
<html lang="tr" data-bs-theme="dark">
|
3
|
-
|
4
|
-
<head>
|
5
|
-
<!-- ? Meta -->
|
6
|
-
<meta charset="UTF-8">
|
7
|
-
<meta http-equiv="Content-Language" content="tr">
|
8
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
9
|
-
|
10
|
-
<title>{{ baslik }}</title>
|
11
|
-
<meta name="description" content="{{ aciklama }}">
|
12
|
-
<meta name="keywords" content="keyiflerolsun, Ömer Faruk Sancak, KekikAkademi, Kekik Akademi">
|
13
|
-
<meta name="author" content="keyiflerolsun">
|
14
|
-
|
15
|
-
<!-- ? Bootstrap CSS - Font Awesome -->
|
16
|
-
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/css/bootstrap.min.css">
|
17
|
-
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css">
|
18
|
-
|
19
|
-
<!-- ? Statik CSS -->
|
20
|
-
<link rel="stylesheet" href="{{ url_for('static_home', path='CSS/stil.css') }}">
|
21
|
-
|
22
|
-
<!-- ? Favicon -->
|
23
|
-
<link rel="shortcut icon" href="{{ url_for('static_home', path='favicon.ico') }}" type="image/x-icon"/>
|
24
|
-
</head>
|
25
|
-
|
26
|
-
<body class="d-flex align-items-center min-vh-100">
|
27
|
-
|
28
|
-
{% block icerik %}
|
29
|
-
{% endblock %}
|
30
|
-
|
31
|
-
|
32
|
-
<!-- ! Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
33
|
-
* ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⠀⠀⠀⡀⠀⠀⠀
|
34
|
-
* ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⣷⣤⣾⡇⠀⠀⠀
|
35
|
-
* ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣈⡛⣿⡟⠁⢀⣀⠀
|
36
|
-
* ⠀⠀⠀⢰⡄⠀⠀⠀⠀⠀⢸⣿⡀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠻⠿⠾⣷⣾⠿⠃⠀
|
37
|
-
* ⠀⠀⠀⠈⣿⣦⡀⠀⠀⠀⣿⣿⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⠀⠀
|
38
|
-
* ⠀⠀⠀⠀⣿⣿⣿⣦⡀⠀⣿⣿⣿⣧⡀⠀⠀⠀⠀⢀⣤⣤⣤⣀⡀⠛⠀⠀⠀⠀
|
39
|
-
* ⠀⠀⠀⠀⠘⣿⣿⣿⣿⣶⣄⠙⠻⠿⣷⡀⠀⠀⢀⣿⣿⣿⣿⣿⡿⠶⠀⠀⠀⠀
|
40
|
-
* ⠀⠀⠀⠀⠀⠘⣿⣿⣿⣿⣿⣿⣶⣦⣤⣤⣤⣤⣾⣿⣿⡏⠉⠀⣤⠄⠀⠀⠀⠀
|
41
|
-
* ⠀⠀⠀⠀⠀⠀⠈⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠉⠀⠀⠀⠀⠀
|
42
|
-
* ⠀⠀⠀⠀⠀⠀⠀⠀⠙⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
43
|
-
* ⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
44
|
-
* ⠀⣼⣷⣶⣶⣶⣶⣶⣾⣿⣿⣿⣿⣿⣿⣿⡿⠟⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
45
|
-
* ⠀⢻⣿⣿⣿⣿⣿⠿⠟⠛⠛⠛⠋⠉⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
46
|
-
* ⠀⠘⢿⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
47
|
-
* ⠀⠀⠀⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
48
|
-
! -->
|
49
|
-
</body>
|
50
|
-
</html>
|
@@ -1,33 +0,0 @@
|
|
1
|
-
{% extends "_html_taban.html" %}
|
2
|
-
{% block icerik %}
|
3
|
-
|
4
|
-
<h2>keyiflerolsun | Ömer Faruk Sancak</h2>
|
5
|
-
<h3><a href="https://t.me/KekikAkademi" target="_blank">KekikAkademi</a></h3>
|
6
|
-
|
7
|
-
<div style="text-align: center;">
|
8
|
-
<a href="https://github.com/keyiflerolsun" target="_blank" class="hover , links-footer">
|
9
|
-
<i class="fab fa-github"></i>
|
10
|
-
</a>
|
11
|
-
<a href="https://linkedin.com/in/keyiflerolsun" target="_blank" class="hover , links-footer">
|
12
|
-
<i class="fab fa-linkedin"></i>
|
13
|
-
</a>
|
14
|
-
<a href="https://t.me/keyiflerolsunDev" target="_blank" class="hover , links-footer">
|
15
|
-
<i class="fab fa-telegram"></i>
|
16
|
-
</a>
|
17
|
-
<a href="https://wa.me/908503093493" target="_blank" class="hover , links-footer">
|
18
|
-
<i class="fab fa-whatsapp"></i>
|
19
|
-
</a>
|
20
|
-
<a href="https://buymeacoffee.com/keyiflerolsun" target="_blank" class="hover , links-footer">
|
21
|
-
<i class="fas fa-coffee"></i>
|
22
|
-
</a>
|
23
|
-
</div>
|
24
|
-
|
25
|
-
|
26
|
-
<!-- ? jQuery ve Bootstrap Bundle (Popper içerir) -->
|
27
|
-
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.4/dist/jquery.min.js"></script>
|
28
|
-
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/js/bootstrap.bundle.min.js"></script>
|
29
|
-
|
30
|
-
<!-- ? Statik JS -->
|
31
|
-
<script src="{{ url_for('static_home', path='JS/bakalim.js') }}"></script>
|
32
|
-
|
33
|
-
{% endblock %}
|
KekikStreamAPI/README.md
DELETED
@@ -1,11 +0,0 @@
|
|
1
|
-
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
2
|
-
|
3
|
-
from yaml import load, FullLoader
|
4
|
-
|
5
|
-
with open("AYAR.yml", "r", encoding="utf-8") as yaml_dosyasi:
|
6
|
-
AYAR = load(yaml_dosyasi, Loader=FullLoader)
|
7
|
-
|
8
|
-
HOST = AYAR["APP"]["HOST"]
|
9
|
-
PORT = AYAR["APP"]["PORT"]
|
10
|
-
WORKERS = AYAR["APP"]["WORKERS"]
|
11
|
-
CACHE_TIME = AYAR["APP"]["CACHE"] * 60
|
KekikStreamAPI/__init__.py
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
2
|
-
|
3
|
-
from pathlib import Path
|
4
|
-
import os, sys
|
5
|
-
|
6
|
-
proje_dizin = Path(__file__).resolve().parent
|
7
|
-
os.chdir(proje_dizin)
|
8
|
-
sys.path.append(str(proje_dizin))
|
9
|
-
|
10
|
-
from CLI import cikis_yap, hata_yakala
|
11
|
-
from Core import Motor
|
12
|
-
|
13
|
-
def basla():
|
14
|
-
try:
|
15
|
-
Motor.basla()
|
16
|
-
cikis_yap(False)
|
17
|
-
except Exception as hata:
|
18
|
-
hata_yakala(hata)
|
File without changes
|
File without changes
|