KekikStream 1.3.5__py3-none-any.whl → 1.3.7__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.
Files changed (42) hide show
  1. KekikStream/Plugins/DiziYou.py +1 -1
  2. KekikStreamAPI/.github/FUNDING.yml +5 -0
  3. KekikStreamAPI/.gitignore +166 -0
  4. KekikStreamAPI/AYAR.yml +8 -0
  5. KekikStreamAPI/CLI/__init__.py +3 -0
  6. KekikStreamAPI/Core/Modules/_IP_Log.py +27 -0
  7. KekikStreamAPI/Core/Modules/_hata.py +12 -0
  8. KekikStreamAPI/Core/Modules/_istek.py +131 -0
  9. KekikStreamAPI/Core/Motor.py +13 -0
  10. KekikStreamAPI/Core/__init__.py +24 -0
  11. KekikStreamAPI/Dockerfile +34 -0
  12. KekikStreamAPI/Public/API/v1/Libs/__init__.py +7 -0
  13. KekikStreamAPI/Public/API/v1/Routers/__init__.py +25 -0
  14. KekikStreamAPI/Public/API/v1/Routers/extract.py +26 -0
  15. KekikStreamAPI/Public/API/v1/Routers/get_main_page.py +33 -0
  16. KekikStreamAPI/Public/API/v1/Routers/get_plugin.py +39 -0
  17. KekikStreamAPI/Public/API/v1/Routers/get_plugin_names.py +13 -0
  18. KekikStreamAPI/Public/API/v1/Routers/load_item.py +34 -0
  19. KekikStreamAPI/Public/API/v1/Routers/load_links.py +41 -0
  20. KekikStreamAPI/Public/API/v1/Routers/search.py +31 -0
  21. KekikStreamAPI/Public/Home/Routers/__init__.py +9 -0
  22. KekikStreamAPI/Public/Home/Routers/ana_sayfa.py +14 -0
  23. KekikStreamAPI/Public/Home/Static/CSS/stil.css +85 -0
  24. KekikStreamAPI/Public/Home/Static/JS/bakalim.js +1 -0
  25. KekikStreamAPI/Public/Home/Static/favicon.ico +0 -0
  26. KekikStreamAPI/Public/Home/Templates/_html_taban.html +50 -0
  27. KekikStreamAPI/Public/Home/Templates/index.html +33 -0
  28. KekikStreamAPI/README.md +13 -0
  29. KekikStreamAPI/Settings/__init__.py +11 -0
  30. KekikStreamAPI/Tests/Multi.py +64 -0
  31. KekikStreamAPI/Tests/Single.py +62 -0
  32. KekikStreamAPI/basla.py +18 -0
  33. KekikStreamAPI/docker-compose.yml +20 -0
  34. KekikStreamAPI/requirements.txt +11 -0
  35. kekikstream-1.3.7.dist-info/LICENSE +674 -0
  36. {kekikstream-1.3.5.dist-info → kekikstream-1.3.7.dist-info}/METADATA +7 -1
  37. {kekikstream-1.3.5.dist-info → kekikstream-1.3.7.dist-info}/RECORD +41 -7
  38. {kekikstream-1.3.5.dist-info → kekikstream-1.3.7.dist-info}/entry_points.txt +1 -0
  39. kekikstream-1.3.7.dist-info/top_level.txt +2 -0
  40. kekikstream-1.3.5.dist-info/top_level.txt +0 -1
  41. {kekikstream-1.3.5.dist-info → KekikStreamAPI}/LICENSE +0 -0
  42. {kekikstream-1.3.5.dist-info → kekikstream-1.3.7.dist-info}/WHEEL +0 -0
@@ -0,0 +1,31 @@
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}
@@ -0,0 +1,9 @@
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 *
@@ -0,0 +1,14 @@
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)
@@ -0,0 +1,85 @@
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
+ }
@@ -0,0 +1 @@
1
+ // Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
@@ -0,0 +1,50 @@
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>
@@ -0,0 +1,33 @@
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 %}
@@ -0,0 +1,13 @@
1
+ # KekikStreamAPI
2
+
3
+ > http://127.0.0.1:3310/api/v1
4
+
5
+ | Endpoint | Method | Parametreler | Açıklama | Örnek Kullanım |
6
+ |---------------------|--------|--------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------|
7
+ | `/get_plugin_names` | GET | - | Tüm eklenti isimlerini getirir. | `/get_plugin_names` |
8
+ | `/get_plugin` | GET | `plugin`: Eklenti adı | Eklenti bilgilerini getirir (ana URL, favicon, açıklama, kategoriler). | `/get_plugin?plugin=Dizilla` |
9
+ | `/search` | GET | `plugin`: Eklenti adı<br>`query`: Arama sorgusu | Belirtilen eklenti içinde arama yapar ve sonuçları döner. | `/search?plugin=Dizilla&query=film` |
10
+ | `/get_main_page` | GET | `plugin`: Eklenti adı<br>`page`: Sayfa numarası<br>`encoded_url`: Kategori URL<br>`encoded_category`: Kategori adı | Belirtilen kategori için ana sayfa içerik listesini döner. | `/get_main_page?plugin=Dizilla&page=1&encoded_url=<kategori_url>&encoded_category=<kategori_adı>` |
11
+ | `/load_item` | GET | `plugin`: Eklenti adı<br>`encoded_url`: İçerik URL'si | Seçilen içeriğin detay bilgilerini getirir. | `/load_item?plugin=Dizilla&encoded_url=<icerik_url>` |
12
+ | `/load_links` | GET | `plugin`: Eklenti adı<br>`encoded_url`: İçerik ya da bölüm URL'si | İçeriğe ait yayın/bağlantı listesini döner. | `/load_links?plugin=Dizilla&encoded_url=<icerik_url>` |
13
+ | `/extract` | GET | `encoded_url`: Bağlantı<br>`encoded_referer`: Referer URL (genellikle eklentinin ana URL'si) | Verilen bağlantıdan oynatılabilir linki ekstrakte eder (gerekliyse). | `/extract?encoded_url=<link>&encoded_referer=<ana_url>` |
@@ -0,0 +1,11 @@
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
@@ -0,0 +1,64 @@
1
+ # Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
2
+
3
+ from Kekik.cli import konsol
4
+ from asyncio import run
5
+ from httpx import AsyncClient
6
+
7
+ async def main():
8
+ api = "http://127.0.0.1:3310/api/v1"
9
+ oturum = AsyncClient(timeout=10)
10
+
11
+ plugin_names = await oturum.get(f"{api}/get_plugin_names")
12
+ plugin_names = plugin_names.json().get("result")
13
+
14
+ for plugin_name in plugin_names:
15
+ plugin = await oturum.get(f"{api}/get_plugin?plugin={plugin_name}")
16
+ plugin = plugin.json().get("result")
17
+
18
+ konsol.log(f"[red]main_url » [purple]{plugin.get('main_url')}")
19
+ konsol.log(f"[red]favicon » [purple]{plugin.get('favicon')}")
20
+ konsol.log(f"[red]description » [purple]{plugin.get('description')}")
21
+
22
+ for url, category in plugin.get("main_page").items():
23
+ konsol.log(f"[red]Kategori » [purple]{category:<12} » {url}")
24
+ icerikler = await oturum.get(f"{api}/get_main_page?plugin={plugin_name}&page=1&encoded_url={url}&encoded_category={category}")
25
+ icerikler = icerikler.json().get("result")
26
+ if not icerikler:
27
+ continue
28
+
29
+ for icerik in icerikler:
30
+ konsol.log(icerik)
31
+
32
+ detay = await oturum.get(f"{api}/load_item?plugin={plugin_name}&encoded_url={icerik.get('url')}")
33
+ detay = detay.json().get("result")
34
+ konsol.log(detay)
35
+
36
+ if detay.get("episodes"):
37
+ konsol.log(f"[red]Dizi » [purple]{detay.get('title')}")
38
+ bolum = detay.get("episodes")[0]
39
+ icerik_url = bolum.get("url")
40
+ else:
41
+ konsol.log(f"[red]Film » [purple]{detay.get('title')}")
42
+ icerik_url = detay.get("url")
43
+
44
+ icerikler = await oturum.get(f"{api}/load_links?plugin={plugin_name}&encoded_url={icerik_url}")
45
+ icerikler = icerikler.json()
46
+
47
+ for link in icerikler.get("result"):
48
+
49
+ if not icerikler.get("must_extract"):
50
+ konsol.log(f"[red]icerik_link » [purple]{link.get('url')}")
51
+ konsol.log(link)
52
+ else:
53
+ konsol.log(f"[red]icerik_link » [purple]{link}")
54
+ sonuc = await oturum.get(f"{api}/extract?encoded_url={link}&encoded_referer={plugin.get('main_url')}")
55
+ sonuc = sonuc.json().get("result")
56
+ konsol.log(sonuc)
57
+
58
+
59
+ break
60
+ break
61
+ break
62
+
63
+ if __name__ == "__main__":
64
+ run(main())
@@ -0,0 +1,62 @@
1
+ # Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
2
+
3
+ from Kekik.cli import konsol
4
+ from asyncio import run
5
+ from httpx import AsyncClient
6
+
7
+ async def main():
8
+ api = "http://127.0.0.1:3310/api/v1"
9
+ oturum = AsyncClient(timeout=10)
10
+
11
+ plugin_name = "Dizilla"
12
+
13
+ plugin = await oturum.get(f"{api}/get_plugin?plugin={plugin_name}")
14
+ plugin = plugin.json().get("result")
15
+
16
+ konsol.log(f"[red]main_url » [purple]{plugin.get('main_url')}")
17
+ konsol.log(f"[red]favicon » [purple]{plugin.get('favicon')}")
18
+ konsol.log(f"[red]description » [purple]{plugin.get('description')}")
19
+
20
+ for url, category in plugin.get("main_page").items():
21
+ konsol.log(f"[red]Kategori » [purple]{category:<12} » {url}")
22
+ icerikler = await oturum.get(f"{api}/get_main_page?plugin={plugin_name}&page=1&encoded_url={url}&encoded_category={category}")
23
+ icerikler = icerikler.json().get("result")
24
+ if not icerikler:
25
+ continue
26
+
27
+ for icerik in icerikler:
28
+ konsol.log(icerik)
29
+
30
+ detay = await oturum.get(f"{api}/load_item?plugin={plugin_name}&encoded_url={icerik.get('url')}")
31
+ detay = detay.json().get("result")
32
+ konsol.log(detay)
33
+
34
+ if detay.get("episodes"):
35
+ konsol.log(f"[red]Dizi » [purple]{detay.get('title')}")
36
+ bolum = detay.get("episodes")[0]
37
+ icerik_url = bolum.get("url")
38
+ else:
39
+ konsol.log(f"[red]Film » [purple]{detay.get('title')}")
40
+ icerik_url = detay.get("url")
41
+
42
+ icerikler = await oturum.get(f"{api}/load_links?plugin={plugin_name}&encoded_url={icerik_url}")
43
+ icerikler = icerikler.json()
44
+
45
+ for link in icerikler.get("result"):
46
+
47
+ if not icerikler.get("must_extract"):
48
+ konsol.log(f"[red]icerik_link » [purple]{link.get('url')}")
49
+ konsol.log(link)
50
+ else:
51
+ konsol.log(f"[red]icerik_link » [purple]{link}")
52
+ sonuc = await oturum.get(f"{api}/extract?encoded_url={link}&encoded_referer={plugin.get('main_url')}")
53
+ sonuc = sonuc.json().get("result")
54
+ konsol.log(sonuc)
55
+
56
+
57
+ break
58
+ break
59
+ break
60
+
61
+ if __name__ == "__main__":
62
+ run(main())
@@ -0,0 +1,18 @@
1
+ # Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
2
+ from pathlib import Path
3
+ import os, sys
4
+
5
+ proje_dizin = Path(__file__).resolve().parent
6
+ os.chdir(proje_dizin)
7
+ sys.path.append(str(proje_dizin))
8
+
9
+ from CLI import cikis_yap, hata_yakala
10
+ from Core import Motor
11
+
12
+ # if __name__ == "__main__":
13
+ def basla():
14
+ try:
15
+ Motor.basla()
16
+ cikis_yap(False)
17
+ except Exception as hata:
18
+ hata_yakala(hata)
@@ -0,0 +1,20 @@
1
+ # Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
2
+
3
+ networks:
4
+ local:
5
+ driver: bridge
6
+
7
+ services:
8
+ KekikStreamAPI:
9
+ container_name : KekikStreamAPI
10
+ image : kekikstream:latest
11
+ tty : true
12
+ restart : always
13
+ build : .
14
+
15
+ volumes:
16
+ - .:/usr/src/KekikStreamAPI
17
+ networks:
18
+ - local
19
+ ports:
20
+ - 3310:3310
@@ -0,0 +1,11 @@
1
+ setuptools
2
+ wheel
3
+ Kekik
4
+ httpx
5
+ parsel
6
+ fastapi
7
+ uvicorn
8
+ user_agents
9
+ PyYAML
10
+ Jinja2
11
+ KekikStream