KekikStream 0.1.4__tar.gz → 0.1.6__tar.gz

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 (39) hide show
  1. kekikstream-0.1.6/KekikStream/Extractors/RapidVid.py +61 -0
  2. kekikstream-0.1.6/KekikStream/Extractors/TurboImgz.py +28 -0
  3. {kekikstream-0.1.4 → kekikstream-0.1.6}/KekikStream/Managers/UIManager.py +6 -5
  4. {kekikstream-0.1.4 → kekikstream-0.1.6}/KekikStream/__init__.py +2 -0
  5. {kekikstream-0.1.4 → kekikstream-0.1.6}/KekikStream.egg-info/PKG-INFO +1 -1
  6. {kekikstream-0.1.4 → kekikstream-0.1.6}/KekikStream.egg-info/SOURCES.txt +2 -0
  7. {kekikstream-0.1.4 → kekikstream-0.1.6}/PKG-INFO +1 -1
  8. {kekikstream-0.1.4 → kekikstream-0.1.6}/setup.py +1 -1
  9. {kekikstream-0.1.4 → kekikstream-0.1.6}/KekikStream/CLI/__init__.py +0 -0
  10. {kekikstream-0.1.4 → kekikstream-0.1.6}/KekikStream/CLI/check_update.py +0 -0
  11. {kekikstream-0.1.4 → kekikstream-0.1.6}/KekikStream/Core/ExtractorBase.py +0 -0
  12. {kekikstream-0.1.4 → kekikstream-0.1.6}/KekikStream/Core/ExtractorLoader.py +0 -0
  13. {kekikstream-0.1.4 → kekikstream-0.1.6}/KekikStream/Core/ExtractorModels.py +0 -0
  14. {kekikstream-0.1.4 → kekikstream-0.1.6}/KekikStream/Core/MediaHandler.py +0 -0
  15. {kekikstream-0.1.4 → kekikstream-0.1.6}/KekikStream/Core/PluginBase.py +0 -0
  16. {kekikstream-0.1.4 → kekikstream-0.1.6}/KekikStream/Core/PluginLoader.py +0 -0
  17. {kekikstream-0.1.4 → kekikstream-0.1.6}/KekikStream/Core/PluginModels.py +0 -0
  18. {kekikstream-0.1.4 → kekikstream-0.1.6}/KekikStream/Core/__init__.py +0 -0
  19. {kekikstream-0.1.4 → kekikstream-0.1.6}/KekikStream/Extractors/CloseLoad.py +0 -0
  20. {kekikstream-0.1.4 → kekikstream-0.1.6}/KekikStream/Extractors/MailRu.py +0 -0
  21. {kekikstream-0.1.4 → kekikstream-0.1.6}/KekikStream/Extractors/VidMoxy.py +0 -0
  22. {kekikstream-0.1.4 → kekikstream-0.1.6}/KekikStream/Managers/ExtractorManager.py +0 -0
  23. {kekikstream-0.1.4 → kekikstream-0.1.6}/KekikStream/Managers/MediaManager.py +0 -0
  24. {kekikstream-0.1.4 → kekikstream-0.1.6}/KekikStream/Managers/PluginManager.py +0 -0
  25. {kekikstream-0.1.4 → kekikstream-0.1.6}/KekikStream/Managers/__init__.py +0 -0
  26. {kekikstream-0.1.4 → kekikstream-0.1.6}/KekikStream/Plugins/FilmMakinesi.py +0 -0
  27. {kekikstream-0.1.4 → kekikstream-0.1.6}/KekikStream/Plugins/FullHDFilmizlesene.py +0 -0
  28. {kekikstream-0.1.4 → kekikstream-0.1.6}/KekikStream/Plugins/SineWix.py +0 -0
  29. {kekikstream-0.1.4 → kekikstream-0.1.6}/KekikStream/Plugins/UgurFilm.py +0 -0
  30. {kekikstream-0.1.4 → kekikstream-0.1.6}/KekikStream/__main__.py +0 -0
  31. {kekikstream-0.1.4 → kekikstream-0.1.6}/KekikStream/requirements.txt +0 -0
  32. {kekikstream-0.1.4 → kekikstream-0.1.6}/KekikStream.egg-info/dependency_links.txt +0 -0
  33. {kekikstream-0.1.4 → kekikstream-0.1.6}/KekikStream.egg-info/entry_points.txt +0 -0
  34. {kekikstream-0.1.4 → kekikstream-0.1.6}/KekikStream.egg-info/requires.txt +0 -0
  35. {kekikstream-0.1.4 → kekikstream-0.1.6}/KekikStream.egg-info/top_level.txt +0 -0
  36. {kekikstream-0.1.4 → kekikstream-0.1.6}/LICENSE +0 -0
  37. {kekikstream-0.1.4 → kekikstream-0.1.6}/MANIFEST.in +0 -0
  38. {kekikstream-0.1.4 → kekikstream-0.1.6}/README.md +0 -0
  39. {kekikstream-0.1.4 → kekikstream-0.1.6}/setup.cfg +0 -0
@@ -0,0 +1,61 @@
1
+ # Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
2
+
3
+ from KekikStream.Core import ExtractorBase, ExtractResult, Subtitle
4
+ from Kekik.Sifreleme import Packer, HexCodec
5
+ import re
6
+
7
+ class RapidVid(ExtractorBase):
8
+ name = "RapidVid"
9
+ main_url = "https://rapidvid.net"
10
+
11
+ async def extract(self, url, referer=None) -> ExtractResult:
12
+ if referer:
13
+ self.oturum.headers.update({"Referer": referer})
14
+
15
+ istek = await self.oturum.get(url)
16
+ istek.raise_for_status()
17
+
18
+ subtitles = []
19
+ subtitle_matches = re.findall(r'captions\",\"file\":\"([^\"]+)\",\"label\":\"([^\"]+)\"', istek.text)
20
+ seen_subtitles = set()
21
+
22
+ for sub_url, sub_lang in subtitle_matches:
23
+ if sub_url in seen_subtitles:
24
+ continue
25
+ seen_subtitles.add(sub_url)
26
+
27
+ decoded_lang = (
28
+ sub_lang.replace("\\u0131", "ı")
29
+ .replace("\\u0130", "İ")
30
+ .replace("\\u00fc", "ü")
31
+ .replace("\\u00e7", "ç")
32
+ )
33
+ subtitles.append(Subtitle(name=decoded_lang, url=sub_url.replace("\\", "")))
34
+
35
+ try:
36
+ extracted_value = re.search(r'file": "(.*)",', istek.text)
37
+ if extracted_value:
38
+ escaped_hex = extracted_value.group(1)
39
+ decoded_url = HexCodec.decode(escaped_hex)
40
+ else:
41
+ eval_jwsetup = re.search(r'\};\s*(eval\(function[\s\S]*?)var played = \d+;', istek.text)
42
+ if not eval_jwsetup:
43
+ raise ValueError("JWPlayer setup not found.")
44
+
45
+ unpacked_jwsetup = Packer.unpack(Packer.unpack(eval_jwsetup.group(1)))
46
+ extracted_value = re.search(r'file":"(.*)","label', unpacked_jwsetup)
47
+ if not extracted_value:
48
+ raise ValueError("File URL not found in unpacked JWPlayer setup.")
49
+
50
+ escaped_hex = extracted_value.group(1).replace("\\\\x", "")
51
+ decoded_url = bytes.fromhex(escaped_hex).decode("utf-8")
52
+ except Exception as e:
53
+ raise RuntimeError(f"Extraction failed: {e}")
54
+
55
+ await self.close()
56
+ return ExtractResult(
57
+ name = self.name,
58
+ url = decoded_url,
59
+ referer = self.main_url,
60
+ subtitles = subtitles
61
+ )
@@ -0,0 +1,28 @@
1
+ # Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
2
+
3
+ from KekikStream.Core import ExtractorBase, ExtractResult
4
+ import re
5
+
6
+ class TurboImgz(ExtractorBase):
7
+ name = "TurboImgz"
8
+ main_url = "https://turbo.imgz.me"
9
+
10
+ async def extract(self, url, referer=None) -> ExtractResult:
11
+ if referer:
12
+ self.oturum.headers.update({"Referer": referer})
13
+
14
+ istek = await self.oturum.get(url)
15
+ istek.raise_for_status()
16
+
17
+ video_match = re.search(r'file: "(.*)",', istek.text)
18
+ if not video_match:
19
+ raise ValueError("File not found in response.")
20
+
21
+ video_link = video_match.group(1)
22
+
23
+ return ExtractResult(
24
+ name = self.name,
25
+ url = video_link,
26
+ referer = referer or self.main_url,
27
+ subtitles = []
28
+ )
@@ -13,15 +13,16 @@ class UIManager:
13
13
 
14
14
  @staticmethod
15
15
  async def select_from_list(message, choices):
16
- return await inquirer.select(message=message, choices=choices).execute_async()
16
+ return await inquirer.select(message=message, choices=choices, max_height="75%").execute_async()
17
17
 
18
18
  @staticmethod
19
19
  async def select_from_fuzzy(message, choices):
20
20
  return await inquirer.fuzzy(
21
- message = message,
22
- choices = choices,
23
- validate = lambda result: result in [choice if isinstance(choice, str) else choice["value"] for choice in choices],
24
- filter = lambda result: result
21
+ message = message,
22
+ choices = choices,
23
+ validate = lambda result: result in [choice if isinstance(choice, str) else choice["value"] for choice in choices],
24
+ filter = lambda result: result,
25
+ max_height = "75%"
25
26
  ).execute_async()
26
27
 
27
28
  @staticmethod
@@ -115,6 +115,8 @@ class KekikStream:
115
115
  async def show_options(self, links):
116
116
  mapping = self.extractor_manager.map_links_to_extractors(links)
117
117
  has_play_method = hasattr(self.current_plugin, "play") and callable(getattr(self.current_plugin, "play", None))
118
+ # ! DEBUG
119
+ # konsol.print(links)
118
120
  if not mapping and not has_play_method:
119
121
  konsol.print("[bold red]Hiçbir Extractor bulunamadı![/bold red]")
120
122
  konsol.print(links)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: KekikStream
3
- Version: 0.1.4
3
+ Version: 0.1.6
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
@@ -23,6 +23,8 @@ KekikStream/Core/PluginModels.py
23
23
  KekikStream/Core/__init__.py
24
24
  KekikStream/Extractors/CloseLoad.py
25
25
  KekikStream/Extractors/MailRu.py
26
+ KekikStream/Extractors/RapidVid.py
27
+ KekikStream/Extractors/TurboImgz.py
26
28
  KekikStream/Extractors/VidMoxy.py
27
29
  KekikStream/Managers/ExtractorManager.py
28
30
  KekikStream/Managers/MediaManager.py
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: KekikStream
3
- Version: 0.1.4
3
+ Version: 0.1.6
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
@@ -6,7 +6,7 @@ from io import open
6
6
  setup(
7
7
  # ? Genel Bilgiler
8
8
  name = "KekikStream",
9
- version = "0.1.4",
9
+ version = "0.1.6",
10
10
  url = "https://github.com/keyiflerolsun/KekikStream",
11
11
  description = "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ı",
12
12
  keywords = ["KekikStream", "KekikAkademi", "keyiflerolsun"],
File without changes
File without changes
File without changes
File without changes