KekikStream 0.6.7__py3-none-any.whl → 0.7.0__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of KekikStream might be problematic. Click here for more details.

@@ -13,6 +13,9 @@ class MediaHandler:
13
13
  self.title = title
14
14
 
15
15
  def play_media(self, extract_data: ExtractResult):
16
+ if self.headers.get("User-Agent") == "googleusercontent":
17
+ return self.play_with_ytdlp(extract_data)
18
+
16
19
  if subprocess.check_output(['uname', '-o']).strip() == b'Android':
17
20
  return self.play_with_android_mxplayer(extract_data)
18
21
 
@@ -77,6 +80,37 @@ class MediaHandler:
77
80
  konsol.print("[red]mpv bulunamadı! mpv kurulu olduğundan emin olun.[/red]")
78
81
  konsol.print({"title": self.title, "url": extract_data.url, "headers": self.headers})
79
82
 
83
+ def play_with_ytdlp(self, extract_data: ExtractResult):
84
+ try:
85
+ ytdlp_command = ["yt-dlp", "--quiet", "--no-warnings", "--downloader", "ffmpeg", "--hls-use-mpegts"]
86
+
87
+ for key, value in self.headers.items():
88
+ ytdlp_command.extend(["--add-header", f"{key}: {value}"])
89
+
90
+ ytdlp_command.extend([
91
+ "-o", "-",
92
+ extract_data.url
93
+ ])
94
+
95
+ mpv_command = ["mpv", "--really-quiet", "-"]
96
+
97
+ if self.title:
98
+ mpv_command.append(f"--force-media-title={self.title}")
99
+
100
+ mpv_command.extend(
101
+ f"--sub-file={subtitle.url}" for subtitle in extract_data.subtitles
102
+ )
103
+
104
+ with subprocess.Popen(ytdlp_command, stdout=subprocess.PIPE) as ytdlp_proc:
105
+ subprocess.run(mpv_command, stdin=ytdlp_proc.stdout, check=True)
106
+
107
+ except subprocess.CalledProcessError as hata:
108
+ print(f"[red]Oynatma hatası: {hata}[/red]")
109
+ print({"title": self.title, "url": extract_data.url, "headers": self.headers})
110
+ except FileNotFoundError:
111
+ print("[red]yt-dlp veya mpv bulunamadı! Kurulumlarından emin olun.[/red]")
112
+ print({"title": self.title, "url": extract_data.url, "headers": self.headers})
113
+
80
114
  def play_with_android_mxplayer(self, extract_data: ExtractResult):
81
115
  paketler = [
82
116
  "com.mxtech.videoplayer.ad/.ActivityScreen", # Free sürüm
@@ -71,7 +71,8 @@ class DiziYou(PluginBase):
71
71
  istek = await self.oturum.get(url)
72
72
  secici = Selector(istek.text)
73
73
 
74
- item_id = secici.css("iframe#diziyouPlayer::attr(src)").get().split("/")[-1].replace(".html", "")
74
+ item_title = secici.css("div.title h1::text").get().strip()
75
+ item_id = secici.css("iframe#diziyouPlayer::attr(src)").get().split("/")[-1].replace(".html", "")
75
76
 
76
77
  subtitles = []
77
78
  stream_urls = []
@@ -112,7 +113,8 @@ class DiziYou(PluginBase):
112
113
 
113
114
  for stream in stream_urls:
114
115
  self._data[stream.get("url")] = {
115
- "name" : f"{self.name} | {stream.get('dil')}",
116
+ "name" : f"{self.name} | {stream.get('dil')} | {item_title}",
117
+ "ext_name" : f"{self.name} | {stream.get('dil')}",
116
118
  "referer" : url,
117
119
  "subtitles" : subtitles
118
120
  }
@@ -10,7 +10,7 @@ import re
10
10
 
11
11
  class RecTV(PluginBase):
12
12
  name = "RecTV"
13
- main_url = "https://m.prectv8.sbs"
13
+ main_url = "https://b.prectv14.sbs"
14
14
 
15
15
  sw_key = "4F5A9C3D9A86FA54EACEDDD635185/c3c5bd17-e37b-4b94-a944-8a3688a30452"
16
16
  http2 = AsyncClient(http2=True)
@@ -97,13 +97,15 @@ class RecTV(PluginBase):
97
97
  continue
98
98
 
99
99
  self._data[video_link] = {
100
+ "ext_name" : self.name,
100
101
  "name" : veri.get("title"),
101
102
  "referer" : "https://twitter.com/",
102
103
  "subtitles" : []
103
104
  }
104
105
  videolar.append(video_link)
105
106
 
106
- return videolar
107
+ self.media_handler.headers.update({"User-Agent": "googleusercontent"})
108
+ return videolar
107
109
 
108
110
  async def play(self, name: str, url: str, referer: str, subtitles: list[Subtitle]):
109
111
  extract_result = ExtractResult(name=name, url=url, referer=referer, subtitles=subtitles)
@@ -95,6 +95,7 @@ class SineWix(PluginBase):
95
95
  video_link = video.get("link").split("_blank\">")[-1]
96
96
  self._data[video_link] = {
97
97
  "name" : f"{self.name} | {title}",
98
+ "ext_name" : self.name,
98
99
  "referer" : self.main_url,
99
100
  "subtitles" : []
100
101
  }
KekikStream/__init__.py CHANGED
@@ -180,7 +180,7 @@ class KekikStream:
180
180
  if not haritalama:
181
181
  secilen_link = await self.arayuz_yonetici.select_from_list(
182
182
  message = "Doğrudan oynatmak için bir bağlantı seçin:",
183
- choices = [{"name": value["name"], "value": key} for key, value in self.suanki_eklenti._data.items()]
183
+ choices = [{"name": value["ext_name"], "value": key} for key, value in self.suanki_eklenti._data.items()]
184
184
  )
185
185
  if secilen_link:
186
186
  await self.medya_oynat(secilen_link)
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: KekikStream
3
- Version: 0.6.7
3
+ Version: 0.7.0
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
@@ -21,6 +21,17 @@ Requires-Dist: cloudscraper
21
21
  Requires-Dist: parsel
22
22
  Requires-Dist: pydantic
23
23
  Requires-Dist: InquirerPy
24
+ Dynamic: author
25
+ Dynamic: author-email
26
+ Dynamic: classifier
27
+ Dynamic: description
28
+ Dynamic: description-content-type
29
+ Dynamic: home-page
30
+ Dynamic: keywords
31
+ Dynamic: license
32
+ Dynamic: requires-dist
33
+ Dynamic: requires-python
34
+ Dynamic: summary
24
35
 
25
36
  # <img src="https://github.com/keyiflerolsun/KekikStream/raw/master/.github/icons/KekikStream.png?raw=True" height="32" align="center"> KekikStream
26
37
 
@@ -1,4 +1,4 @@
1
- KekikStream/__init__.py,sha256=WCAi6iNBUUdxQoFLb1b3F37zqvU9DawDErEcx1_Ov_g,10867
1
+ KekikStream/__init__.py,sha256=3BywClBNdEdeyr1s42HgypajAOccIPAbVBQlOkpkW2Q,10871
2
2
  KekikStream/__main__.py,sha256=B81dQoeGEb-T5Sycs3eNAmW7unvx0Mef0syCjs4nPds,137
3
3
  KekikStream/requirements.txt,sha256=QWCXrrmKodIm7mGtIz9cWr9sks-lmL_TilKMrruWJn0,77
4
4
  KekikStream/CLI/__init__.py,sha256=U6oLq_O7u5y2eHhBnmfhZNns_EqHHJXJmzl8jvZFUNY,230
@@ -6,7 +6,7 @@ KekikStream/CLI/pypi_kontrol.py,sha256=MchatOwCWCpFBtgt09yag9Rjal9XFyh2W_oVs2p7S
6
6
  KekikStream/Core/ExtractorBase.py,sha256=wmGl-Xiem4s5M7baVOxYLba7UdygCDAXggo6Up8pFJE,1409
7
7
  KekikStream/Core/ExtractorLoader.py,sha256=rrll3F2CyVmx3foa57PG0FocQMrFuMpdlG0Uf0-2Fz4,3915
8
8
  KekikStream/Core/ExtractorModels.py,sha256=huIcPQ5VIRfMx0LcL5SS1u4dldZbHjzHKEdSEtOPlc0,456
9
- KekikStream/Core/MediaHandler.py,sha256=eV0ugdIwxRlWQtgYt--XmfPJP8K9FL1Q0T1d04YUls0,4517
9
+ KekikStream/Core/MediaHandler.py,sha256=DFw2Npd9fantyERjnUzr3jU7F283tVC7qA3j-zznzAA,5939
10
10
  KekikStream/Core/PluginBase.py,sha256=ZQx6adxOKuX50TPN5pxE8oG9FD-ZjPXSHpSiW086QPQ,2479
11
11
  KekikStream/Core/PluginLoader.py,sha256=5HQF8Em1TjvqMBPLKB7M_i2y6zPH6JZao-uekeacoSs,2574
12
12
  KekikStream/Core/PluginModels.py,sha256=q8tjkt_-uiJ7uNxOThYR0FgTQLZglVAOAaM0Kske-28,2063
@@ -42,18 +42,18 @@ KekikStream/Managers/PluginManager.py,sha256=YDBLHB_Fh79A3Pei0ny2KLVY4VSihdNiKBh
42
42
  KekikStream/Managers/UIManager.py,sha256=e89u_QgmxL85zGAYyYsQp6b3E5y7fHGteLt2OYHHbD8,1693
43
43
  KekikStream/Managers/__init__.py,sha256=3085I_9Sa2L_Vq6Z-QvYUYn1BapkN4sQqBo8ITZoD_4,251
44
44
  KekikStream/Plugins/DiziBox.py,sha256=i_73VNXk2eM7xTg-6a0Xk2Yts2c9grWbRVVHhxFgoic,5935
45
- KekikStream/Plugins/DiziYou.py,sha256=FHpSE2__AvGnxSbpPisB8nNtfWtG4e-dDYtmdZkP_cI,5226
45
+ KekikStream/Plugins/DiziYou.py,sha256=QXqxPqBekLJNCPwYR_NMbPFhS59odWWq09MhY2XheTg,5380
46
46
  KekikStream/Plugins/Dizilla.py,sha256=zJni028hCJlz2Xh8BXVrxHsZGJJ-oN88_yz4Fs9MaL4,4258
47
47
  KekikStream/Plugins/FilmMakinesi.py,sha256=rz8TQeL41PJbeEmksgPHIhp6J-4vbSCBTeEH0ukExz4,2822
48
48
  KekikStream/Plugins/FullHDFilmizlesene.py,sha256=Fa0gRP_NoMfPC8HIKRxERjQVOv8Fyb-ayMJ2EooZ7BE,3080
49
49
  KekikStream/Plugins/JetFilmizle.py,sha256=FXkMSQtjYoxwIonjRENFa91rC42L_8SYRhjhuSgsu60,3919
50
+ KekikStream/Plugins/RecTV.py,sha256=oLjchx6-a6Xhd3dqrTcCwETsJTrfh5UI3yF1CgQQv94,4941
50
51
  KekikStream/Plugins/SezonlukDizi.py,sha256=5BZVzQ2eQtymHxO0bzjA2ho4FFNahPFQly4hoHuH8lo,4441
51
- KekikStream/Plugins/SineWix.py,sha256=lLbEApxqlspJSUqwXDzAwh90NuOMEe-NYHHrmh83z0k,4825
52
+ KekikStream/Plugins/SineWix.py,sha256=P_ujixGubpsJzAdbRUzVy5ziRGYfSEDc90RMXie6VyE,4866
52
53
  KekikStream/Plugins/UgurFilm.py,sha256=yYXee5uxwNnPqFJZ6s6cRkmUyqS3Vv8x-iesPalc4j4,2930
53
- KekikStream/Plugins/__RecTV.py,sha256=TYPuab97yD7mwsu37cZ9_eG3mZSkmImBqlC9VgtetSk,4820
54
- KekikStream-0.6.7.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
55
- KekikStream-0.6.7.dist-info/METADATA,sha256=RevAnf7Pe_zELg9ab4cJDfpTGSJbmt_QaFrpn0aj2VA,3994
56
- KekikStream-0.6.7.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
57
- KekikStream-0.6.7.dist-info/entry_points.txt,sha256=dFwdiTx8djyehI0Gsz-rZwjAfZzUzoBSrmzRu9ubjJc,50
58
- KekikStream-0.6.7.dist-info/top_level.txt,sha256=DNmGJDXl27Drdfobrak8KYLmocW_uznVYFJOzcjUgmY,12
59
- KekikStream-0.6.7.dist-info/RECORD,,
54
+ KekikStream-0.7.0.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
55
+ KekikStream-0.7.0.dist-info/METADATA,sha256=tZNKqe94-7btL5NIYU-D5xWT1LeUAWbIT3YXIgOo6sA,4226
56
+ KekikStream-0.7.0.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
57
+ KekikStream-0.7.0.dist-info/entry_points.txt,sha256=dFwdiTx8djyehI0Gsz-rZwjAfZzUzoBSrmzRu9ubjJc,50
58
+ KekikStream-0.7.0.dist-info/top_level.txt,sha256=DNmGJDXl27Drdfobrak8KYLmocW_uznVYFJOzcjUgmY,12
59
+ KekikStream-0.7.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.6.0)
2
+ Generator: setuptools (75.8.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5