KekikStream 1.7.7__py3-none-any.whl → 1.8.0__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 (49) hide show
  1. KekikStream/Core/Extractor/ExtractorModels.py +5 -7
  2. KekikStream/Core/Media/MediaHandler.py +41 -43
  3. KekikStream/Core/Media/MediaManager.py +0 -3
  4. KekikStream/Core/Plugin/PluginModels.py +25 -26
  5. KekikStream/Extractors/CloseLoad.py +1 -2
  6. KekikStream/Extractors/ContentX.py +0 -2
  7. KekikStream/Extractors/DzenRu.py +0 -1
  8. KekikStream/Extractors/ExPlay.py +0 -1
  9. KekikStream/Extractors/FirePlayer.py +4 -5
  10. KekikStream/Extractors/HDPlayerSystem.py +0 -1
  11. KekikStream/Extractors/JetTv.py +0 -1
  12. KekikStream/Extractors/MailRu.py +1 -2
  13. KekikStream/Extractors/MixPlayHD.py +0 -1
  14. KekikStream/Extractors/MixTiger.py +1 -5
  15. KekikStream/Extractors/MolyStream.py +5 -5
  16. KekikStream/Extractors/Odnoklassniki.py +5 -5
  17. KekikStream/Extractors/PeaceMakerst.py +0 -1
  18. KekikStream/Extractors/PixelDrain.py +0 -1
  19. KekikStream/Extractors/PlayerFilmIzle.py +5 -5
  20. KekikStream/Extractors/RapidVid.py +0 -1
  21. KekikStream/Extractors/SetPlay.py +0 -1
  22. KekikStream/Extractors/SetPrime.py +0 -1
  23. KekikStream/Extractors/SibNet.py +0 -1
  24. KekikStream/Extractors/Sobreatsesuyp.py +0 -1
  25. KekikStream/Extractors/TRsTX.py +0 -1
  26. KekikStream/Extractors/TauVideo.py +0 -1
  27. KekikStream/Extractors/TurboImgz.py +0 -1
  28. KekikStream/Extractors/TurkeyPlayer.py +5 -5
  29. KekikStream/Extractors/VidHide.py +5 -5
  30. KekikStream/Extractors/VidMoly.py +0 -1
  31. KekikStream/Extractors/VidMoxy.py +0 -1
  32. KekikStream/Extractors/VidPapi.py +0 -1
  33. KekikStream/Extractors/VideoSeyred.py +0 -1
  34. KekikStream/Extractors/YildizKisaFilm.py +0 -1
  35. KekikStream/Plugins/DiziPal.py +3 -3
  36. KekikStream/Plugins/DiziYou.py +3 -3
  37. KekikStream/Plugins/FilmModu.py +3 -3
  38. KekikStream/Plugins/HDFilmCehennemi.py +3 -3
  39. KekikStream/Plugins/RecTV.py +11 -11
  40. KekikStream/Plugins/SineWix.py +3 -3
  41. KekikStream/Plugins/SinemaCX.py +3 -3
  42. KekikStream/__init__.py +5 -8
  43. {kekikstream-1.7.7.dist-info → kekikstream-1.8.0.dist-info}/METADATA +1 -1
  44. kekikstream-1.8.0.dist-info/RECORD +85 -0
  45. kekikstream-1.7.7.dist-info/RECORD +0 -85
  46. {kekikstream-1.7.7.dist-info → kekikstream-1.8.0.dist-info}/WHEEL +0 -0
  47. {kekikstream-1.7.7.dist-info → kekikstream-1.8.0.dist-info}/entry_points.txt +0 -0
  48. {kekikstream-1.7.7.dist-info → kekikstream-1.8.0.dist-info}/licenses/LICENSE +0 -0
  49. {kekikstream-1.7.7.dist-info → kekikstream-1.8.0.dist-info}/top_level.txt +0 -0
@@ -1,8 +1,6 @@
1
1
  # Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
2
2
 
3
3
  from pydantic import BaseModel
4
- from typing import List, Optional
5
-
6
4
 
7
5
  class Subtitle(BaseModel):
8
6
  """Altyazı modeli."""
@@ -12,8 +10,8 @@ class Subtitle(BaseModel):
12
10
 
13
11
  class ExtractResult(BaseModel):
14
12
  """Extractor'ın döndürmesi gereken sonuç modeli."""
15
- name : str
16
- url : str
17
- referer : str
18
- headers : Optional[dict] = {}
19
- subtitles : List[Subtitle] = []
13
+ name : str
14
+ url : str
15
+ referer : str | None = None
16
+ user_agent : str | None = None
17
+ subtitles : list[Subtitle] = []
@@ -5,40 +5,38 @@ from ..Extractor.ExtractorModels import ExtractResult
5
5
  import subprocess, os
6
6
 
7
7
  class MediaHandler:
8
- def __init__(self, title: str = "KekikStream", headers: dict = None):
9
- # Varsayılan HTTP başlıklarını ayarla
10
- if headers is None:
11
- headers = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5)"}
12
-
13
- self.headers = headers
14
- self.title = title
8
+ def __init__(self, title: str = "KekikStream"):
9
+ self.title = title
15
10
 
16
11
  def play_media(self, extract_data: ExtractResult):
17
- # Referer varsa headers'a ekle
12
+ # Headers dict'ini user_agent ve referer'dan oluştur
13
+ headers = {}
14
+
15
+ # user-agent ekle (varsayılan veya extract_data'dan)
16
+ user_agent = extract_data.user_agent or "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5)"
17
+ headers["user-agent"] = user_agent
18
+
19
+ # referer ekle
18
20
  if extract_data.referer:
19
- self.headers.update({"Referer": extract_data.referer})
20
-
21
- # ExtractResult'tan gelen headers'ları ekle
22
- if extract_data.headers:
23
- self.headers.update(extract_data.headers)
24
-
21
+ headers["referer"] = extract_data.referer
22
+
25
23
  # Google Drive gibi özel durumlar için yt-dlp kullan
26
- if self.headers.get("User-Agent") in ["googleusercontent", "Mozilla/5.0 (X11; Linux x86_64; rv:101.0) Gecko/20100101 Firefox/101.0"]:
27
- return self.play_with_ytdlp(extract_data)
24
+ if user_agent in ["googleusercontent", "Mozilla/5.0 (X11; Linux x86_64; rv:101.0) Gecko/20100101 Firefox/101.0"]:
25
+ return self.play_with_ytdlp(extract_data, headers)
28
26
 
29
27
  # İşletim sistemine göre oynatıcı seç
30
28
  if subprocess.check_output(['uname', '-o']).strip() == b'Android':
31
- return self.play_with_android_mxplayer(extract_data)
29
+ return self.play_with_android_mxplayer(extract_data, headers)
32
30
 
33
- # Cookie veya alt yazılar varsa mpv kullan
34
- if "Cookie" in self.headers or extract_data.subtitles:
35
- return self.play_with_mpv(extract_data)
31
+ # Alt yazılar varsa mpv kullan
32
+ if extract_data.subtitles:
33
+ return self.play_with_mpv(extract_data, headers)
36
34
 
37
- return self.play_with_vlc(extract_data) or self.play_with_mpv(extract_data)
35
+ return self.play_with_vlc(extract_data, headers) or self.play_with_mpv(extract_data, headers)
38
36
 
39
- def play_with_vlc(self, extract_data: ExtractResult):
37
+ def play_with_vlc(self, extract_data: ExtractResult, headers: dict):
40
38
  konsol.log(f"[yellow][»] VLC ile Oynatılıyor : {extract_data.url}")
41
- # konsol.print(self.headers)
39
+ # konsol.print(headers)
42
40
  try:
43
41
  vlc_command = ["vlc", "--quiet"]
44
42
 
@@ -48,11 +46,11 @@ class MediaHandler:
48
46
  f"--input-title-format={self.title}"
49
47
  ])
50
48
 
51
- if "User-Agent" in self.headers:
52
- vlc_command.append(f"--http-user-agent={self.headers.get('User-Agent')}")
49
+ if "user-agent" in headers:
50
+ vlc_command.append(f"--http-user-agent={headers.get('user-agent')}")
53
51
 
54
- if "Referer" in self.headers:
55
- vlc_command.append(f"--http-referrer={self.headers.get('Referer')}")
52
+ if "referer" in headers:
53
+ vlc_command.append(f"--http-referrer={headers.get('referer')}")
56
54
 
57
55
  vlc_command.extend(
58
56
  f"--sub-file={subtitle.url}" for subtitle in extract_data.subtitles
@@ -65,23 +63,23 @@ class MediaHandler:
65
63
  return True
66
64
  except subprocess.CalledProcessError as hata:
67
65
  konsol.print(f"[red]VLC oynatma hatası: {hata}[/red]")
68
- konsol.print({"title": self.title, "url": extract_data.url, "headers": self.headers})
66
+ konsol.print({"title": self.title, "url": extract_data.url, "headers": headers})
69
67
  return False
70
68
  except FileNotFoundError:
71
69
  konsol.print("[red]VLC bulunamadı! VLC kurulu olduğundan emin olun.[/red]")
72
- # konsol.print({"title": self.title, "url": extract_data.url, "headers": self.headers})
70
+ # konsol.print({"title": self.title, "url": extract_data.url, "headers": headers})
73
71
  return False
74
72
 
75
- def play_with_mpv(self, extract_data: ExtractResult):
73
+ def play_with_mpv(self, extract_data: ExtractResult, headers: dict):
76
74
  konsol.log(f"[yellow][»] MPV ile Oynatılıyor : {extract_data.url}")
77
- # konsol.print(self.headers)
75
+ # konsol.print(headers)
78
76
  try:
79
77
  mpv_command = ["mpv"]
80
78
 
81
79
  if self.title:
82
80
  mpv_command.append(f"--force-media-title={self.title}")
83
81
 
84
- for key, value in self.headers.items():
82
+ for key, value in headers.items():
85
83
  mpv_command.append(f"--http-header-fields={key}: {value}")
86
84
 
87
85
  mpv_command.extend(
@@ -94,18 +92,18 @@ class MediaHandler:
94
92
 
95
93
  except subprocess.CalledProcessError as hata:
96
94
  konsol.print(f"[red]mpv oynatma hatası: {hata}[/red]")
97
- konsol.print({"title": self.title, "url": extract_data.url, "headers": self.headers})
95
+ konsol.print({"title": self.title, "url": extract_data.url, "headers": headers})
98
96
  except FileNotFoundError:
99
97
  konsol.print("[red]mpv bulunamadı! mpv kurulu olduğundan emin olun.[/red]")
100
- konsol.print({"title": self.title, "url": extract_data.url, "headers": self.headers})
98
+ konsol.print({"title": self.title, "url": extract_data.url, "headers": headers})
101
99
 
102
- def play_with_ytdlp(self, extract_data: ExtractResult):
100
+ def play_with_ytdlp(self, extract_data: ExtractResult, headers: dict):
103
101
  konsol.log(f"[yellow][»] yt-dlp ile Oynatılıyor : {extract_data.url}")
104
- # konsol.print(self.headers)
102
+ # konsol.print(headers)
105
103
  try:
106
104
  ytdlp_command = ["yt-dlp", "--quiet", "--no-warnings"]
107
105
 
108
- for key, value in self.headers.items():
106
+ for key, value in headers.items():
109
107
  ytdlp_command.extend(["--add-header", f"{key}: {value}"])
110
108
 
111
109
  ytdlp_command.extend([
@@ -127,14 +125,14 @@ class MediaHandler:
127
125
 
128
126
  except subprocess.CalledProcessError as hata:
129
127
  konsol.print(f"[red]Oynatma hatası: {hata}[/red]")
130
- konsol.print({"title": self.title, "url": extract_data.url, "headers": self.headers})
128
+ konsol.print({"title": self.title, "url": extract_data.url, "headers": headers})
131
129
  except FileNotFoundError:
132
130
  konsol.print("[red]yt-dlp veya mpv bulunamadı! Kurulumlarından emin olun.[/red]")
133
- konsol.print({"title": self.title, "url": extract_data.url, "headers": self.headers})
131
+ konsol.print({"title": self.title, "url": extract_data.url, "headers": headers})
134
132
 
135
- def play_with_android_mxplayer(self, extract_data: ExtractResult):
133
+ def play_with_android_mxplayer(self, extract_data: ExtractResult, headers: dict):
136
134
  konsol.log(f"[yellow][»] MxPlayer ile Oynatılıyor : {extract_data.url}")
137
- # konsol.print(self.headers)
135
+ # konsol.print(headers)
138
136
  paketler = [
139
137
  "com.mxtech.videoplayer.ad/.ActivityScreen", # Free sürüm
140
138
  "com.mxtech.videoplayer.pro/.ActivityScreen" # Pro sürüm
@@ -159,7 +157,7 @@ class MediaHandler:
159
157
 
160
158
  except subprocess.CalledProcessError as hata:
161
159
  konsol.print(f"[red]{paket} oynatma hatası: {hata}[/red]")
162
- konsol.print({"title": self.title, "url": extract_data.url, "headers": self.headers})
160
+ konsol.print({"title": self.title, "url": extract_data.url, "headers": headers})
163
161
  except FileNotFoundError:
164
162
  konsol.print(f"Paket: {paket}, Hata: MX Player kurulu değil")
165
- konsol.print({"title": self.title, "url": extract_data.url, "headers": self.headers})
163
+ konsol.print({"title": self.title, "url": extract_data.url, "headers": headers})
@@ -12,8 +12,5 @@ class MediaManager:
12
12
  def get_title(self):
13
13
  return self.media_handler.title
14
14
 
15
- def set_headers(self, headers):
16
- self.media_handler.headers.update(headers)
17
-
18
15
  def play_media(self, extract_data):
19
16
  self.media_handler.play_media(extract_data)
@@ -1,34 +1,33 @@
1
1
  # Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
2
2
 
3
3
  from pydantic import BaseModel, field_validator, model_validator
4
- from typing import List, Optional
5
4
 
6
5
  class MainPageResult(BaseModel):
7
6
  """Ana sayfa sonucunda dönecek veri modeli."""
8
7
  category : str
9
8
  title : str
10
9
  url : str
11
- poster : Optional[str] = None
10
+ poster : str | None = None
12
11
 
13
12
 
14
13
  class SearchResult(BaseModel):
15
14
  """Arama sonucunda dönecek veri modeli."""
16
15
  title : str
17
16
  url : str
18
- poster : Optional[str] = None
17
+ poster : str | None = None
19
18
 
20
19
 
21
20
  class MovieInfo(BaseModel):
22
21
  """Bir medya öğesinin bilgilerini tutan model."""
23
22
  url : str
24
- poster : Optional[str] = None
25
- title : Optional[str] = None
26
- description : Optional[str] = None
27
- tags : Optional[str] = None
28
- rating : Optional[str] = None
29
- year : Optional[str] = None
30
- actors : Optional[str] = None
31
- duration : Optional[int] = None
23
+ poster : str | None = None
24
+ title : str | None = None
25
+ description : str | None = None
26
+ tags : str | None = None
27
+ rating : str | None = None
28
+ year : str | None = None
29
+ actors : str | None = None
30
+ duration : int | None = None
32
31
 
33
32
  @field_validator("tags", "actors", mode="before")
34
33
  @classmethod
@@ -42,10 +41,10 @@ class MovieInfo(BaseModel):
42
41
 
43
42
 
44
43
  class Episode(BaseModel):
45
- season : Optional[int] = None
46
- episode : Optional[int] = None
47
- title : Optional[str] = None
48
- url : Optional[str] = None
44
+ season : int | None = None
45
+ episode : int | None = None
46
+ title : str | None = None
47
+ url : str | None = None
49
48
 
50
49
  @model_validator(mode="after")
51
50
  def check_title(self) -> "Episode":
@@ -58,16 +57,16 @@ class Episode(BaseModel):
58
57
  return self
59
58
 
60
59
  class SeriesInfo(BaseModel):
61
- url : Optional[str] = None
62
- poster : Optional[str] = None
63
- title : Optional[str] = None
64
- description : Optional[str] = None
65
- tags : Optional[str] = None
66
- rating : Optional[str] = None
67
- year : Optional[str] = None
68
- actors : Optional[str] = None
69
- duration : Optional[int] = None
70
- episodes : Optional[List[Episode]] = None
60
+ url : str | None = None
61
+ poster : str | None = None
62
+ title : str | None = None
63
+ description : str | None = None
64
+ tags : str | None = None
65
+ rating : str | None = None
66
+ year : str | None = None
67
+ actors : str | None = None
68
+ duration : int | None = None
69
+ episodes : list[Episode] | None = None
71
70
 
72
71
  @field_validator("tags", "actors", mode="before")
73
72
  @classmethod
@@ -77,4 +76,4 @@ class SeriesInfo(BaseModel):
77
76
  @field_validator("rating", "year", mode="before")
78
77
  @classmethod
79
78
  def ensure_string(cls, value):
80
- return str(value) if value is not None else value
79
+ return str(value) if value is not None else value
@@ -22,6 +22,5 @@ class CloseLoadExtractor(ExtractorBase):
22
22
  name = self.name,
23
23
  url = m3u_link,
24
24
  referer = self.main_url,
25
- headers = {},
26
25
  subtitles = []
27
- )
26
+ )
@@ -53,7 +53,6 @@ class ContentX(ExtractorBase):
53
53
  name = self.name,
54
54
  url = m3u_link,
55
55
  referer = url,
56
- headers = {},
57
56
  subtitles = subtitles
58
57
  )
59
58
  ]
@@ -74,7 +73,6 @@ class ContentX(ExtractorBase):
74
73
  name = f"{self.name} Türkçe Dublaj",
75
74
  url = dublaj_link,
76
75
  referer = url,
77
- headers = {},
78
76
  subtitles = []
79
77
  )
80
78
  )
@@ -34,6 +34,5 @@ class DzenRu(ExtractorBase):
34
34
  name = self.name,
35
35
  url = best_link,
36
36
  referer = self.main_url,
37
- headers = {},
38
37
  subtitles = []
39
38
  )
@@ -49,6 +49,5 @@ class ExPlay(ExtractorBase):
49
49
  name = f"{self.name} - {title}",
50
50
  url = m3u_link,
51
51
  referer = clean_url,
52
- headers = {},
53
52
  subtitles = []
54
53
  )
@@ -53,9 +53,8 @@ class FirePlayer(ExtractorBase):
53
53
  raise ValueError("Could not find video URL in unpacked content")
54
54
 
55
55
  return ExtractResult(
56
- name = self.name,
57
- url = video_url,
58
- referer = url,
59
- headers = headers
56
+ name = self.name,
57
+ url = video_url,
58
+ referer = url,
59
+ user_agent = headers.get("User-Agent", "")
60
60
  )
61
-
@@ -37,6 +37,5 @@ class HDPlayerSystem(ExtractorBase):
37
37
  name = self.name,
38
38
  url = m3u_link,
39
39
  referer = url,
40
- headers = {},
41
40
  subtitles = []
42
41
  )
@@ -41,6 +41,5 @@ class JetTv(ExtractorBase):
41
41
  name = self.name,
42
42
  url = master_url,
43
43
  referer = final_ref,
44
- headers = {},
45
44
  subtitles = []
46
45
  )
@@ -34,6 +34,5 @@ class MailRuExtractor(ExtractorBase):
34
34
  name = self.name,
35
35
  url = video_url,
36
36
  referer = self.main_url,
37
- headers = {"Cookie": f"video_key={video_key}"},
38
37
  subtitles = []
39
- )
38
+ )
@@ -36,7 +36,6 @@ class MixPlayHD(ExtractorBase):
36
36
  name = self.name,
37
37
  url = video_url_match[1],
38
38
  referer = self.main_url,
39
- headers = {},
40
39
  subtitles = []
41
40
  )
42
41
  else:
@@ -37,9 +37,6 @@ class MixTiger(ExtractorBase):
37
37
  if not m3u_link:
38
38
  raise ValueError("Video URL not found in response")
39
39
 
40
- # disk.yandex için referer boş olmalı
41
- final_referer = "" if "disk.yandex" in m3u_link else ext_ref
42
-
43
40
  # Recursive extraction check
44
41
  try:
45
42
  from KekikStream.Core.Extractor.ExtractorManager import ExtractorManager
@@ -55,7 +52,6 @@ class MixTiger(ExtractorBase):
55
52
  return ExtractResult(
56
53
  name = self.name,
57
54
  url = m3u_link,
58
- referer = final_referer,
59
- headers = {},
55
+ referer = None if "disk.yandex" in m3u_link else ext_ref,
60
56
  subtitles = []
61
57
  )
@@ -26,9 +26,9 @@ class MolyStream(ExtractorBase):
26
26
  ]
27
27
 
28
28
  return ExtractResult(
29
- name = self.name,
30
- url = video,
31
- referer = video.replace("/sheila", ""),
32
- headers = {"User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:101.0) Gecko/20100101 Firefox/101.0"},
33
- subtitles = subtitles
29
+ name = self.name,
30
+ url = video,
31
+ referer = video.replace("/sheila", ""),
32
+ user_agent = "Mozilla/5.0 (X11; Linux x86_64; rv:101.0) Gecko/20100101 Firefox/101.0",
33
+ subtitles = subtitles
34
34
  )
@@ -82,11 +82,11 @@ class Odnoklassniki(ExtractorBase):
82
82
  best_video = f"https:{best_video}"
83
83
 
84
84
  return ExtractResult(
85
- name = self.name,
86
- url = best_video,
87
- referer = referer,
88
- headers = headers,
89
- subtitles = []
85
+ name = self.name,
86
+ url = best_video,
87
+ referer = referer,
88
+ user_agent = headers.get("User-Agent", None),
89
+ subtitles = []
90
90
  )
91
91
 
92
92
  async def fetch_with_redirects(self, url, max_redirects=5):
@@ -53,6 +53,5 @@ class PeaceMakerst(ExtractorBase):
53
53
  name = self.name,
54
54
  url = m3u_link,
55
55
  referer = url,
56
- headers = {},
57
56
  subtitles = []
58
57
  )
@@ -23,6 +23,5 @@ class PixelDrain(ExtractorBase):
23
23
  name = f"{self.name} - {pixel_id}",
24
24
  url = download_link,
25
25
  referer = referer_link,
26
- headers = {},
27
26
  subtitles = []
28
27
  )
@@ -54,9 +54,9 @@ class PlayerFilmIzle(ExtractorBase):
54
54
  raise ValueError("PlayerFilmIzle: M3U8 linki bulunamadı")
55
55
 
56
56
  return ExtractResult(
57
- name = self.name,
58
- url = m3u8_url,
59
- referer = ext_ref,
60
- headers = dict(self.httpx.headers),
61
- subtitles = subtitles
57
+ name = self.name,
58
+ url = m3u8_url,
59
+ referer = ext_ref,
60
+ user_agent = self.httpx.headers.get("User-Agent", None),
61
+ subtitles = subtitles
62
62
  )
@@ -49,7 +49,6 @@ class RapidVid(ExtractorBase):
49
49
  name = self.name,
50
50
  url = decoded_url,
51
51
  referer = self.main_url,
52
- headers = {},
53
52
  subtitles = subtitles
54
53
  )
55
54
 
@@ -53,6 +53,5 @@ class SetPlay(ExtractorBase):
53
53
  name = f"{self.name} - {name_suffix}",
54
54
  url = m3u_link,
55
55
  referer = url,
56
- headers = {},
57
56
  subtitles = []
58
57
  )
@@ -41,6 +41,5 @@ class SetPrime(ExtractorBase):
41
41
  name = display_name,
42
42
  url = m3u_link,
43
43
  referer = clean_url,
44
- headers = {},
45
44
  subtitles = []
46
45
  )
@@ -24,6 +24,5 @@ class SibNet(ExtractorBase):
24
24
  name = self.name,
25
25
  url = m3u_link,
26
26
  referer = url,
27
- headers = {},
28
27
  subtitles = []
29
28
  )
@@ -49,7 +49,6 @@ class Sobreatsesuyp(ExtractorBase):
49
49
  name = f"{self.name} - {title}",
50
50
  url = playlist_request.text,
51
51
  referer = self.main_url,
52
- headers = {},
53
52
  subtitles = []
54
53
  )
55
54
  )
@@ -57,7 +57,6 @@ class TRsTX(ExtractorBase):
57
57
  name = f"{self.name} - {title}",
58
58
  url = video_data,
59
59
  referer = self.main_url,
60
- headers = {},
61
60
  subtitles = []
62
61
  )
63
62
  )
@@ -26,7 +26,6 @@ class TauVideo(ExtractorBase):
26
26
  name = f"{self.name} - {video['label']}",
27
27
  url = video["url"],
28
28
  referer = referer or self.main_url,
29
- headers = {},
30
29
  subtitles = []
31
30
  )
32
31
  for video in api_data["urls"]
@@ -19,7 +19,6 @@ class TurboImgz(ExtractorBase):
19
19
  name = self.name,
20
20
  url = video_match[1],
21
21
  referer = referer or self.main_url,
22
- headers = {},
23
22
  subtitles = []
24
23
  )
25
24
  else:
@@ -26,9 +26,9 @@ class TurkeyPlayer(ExtractorBase):
26
26
  master_url = f"https://watch.turkeyplayer.com/m3u8/8/{video_md5}/master.txt?s=1&id={video_id}&cache=1"
27
27
 
28
28
  return ExtractResult(
29
- name = self.name,
30
- url = master_url,
31
- referer = referer or url,
32
- headers = dict(self.httpx.headers),
33
- subtitles = []
29
+ name = self.name,
30
+ url = master_url,
31
+ referer = referer or url,
32
+ user_agent = self.httpx.headers.get("User-Agent", ""),
33
+ subtitles = []
34
34
  )
@@ -64,9 +64,9 @@ class VidHide(ExtractorBase):
64
64
  raise ValueError(f"VidHide: Video URL bulunamadı. {url}")
65
65
 
66
66
  return ExtractResult(
67
- name = self.name,
68
- url = self.fix_url(m3u8_url),
69
- referer = f"{self.main_url}/",
70
- headers = dict(self.httpx.headers),
71
- subtitles = []
67
+ name = self.name,
68
+ url = self.fix_url(m3u8_url),
69
+ referer = f"{self.main_url}/",
70
+ user_agent = self.httpx.headers.get("User-Agent", ""),
71
+ subtitles = []
72
72
  )
@@ -80,7 +80,6 @@ class VidMoly(ExtractorBase):
80
80
  name = self.name,
81
81
  url = video_url,
82
82
  referer = self.main_url,
83
- headers = {},
84
83
  subtitles = subtitles
85
84
  )
86
85
 
@@ -45,6 +45,5 @@ class VidMoxy(ExtractorBase):
45
45
  name = self.name,
46
46
  url = m3u_link,
47
47
  referer = self.main_url,
48
- headers = {},
49
48
  subtitles = subtitles
50
49
  )
@@ -85,6 +85,5 @@ class VidPapi(ExtractorBase):
85
85
  name = self.name,
86
86
  url = stream_url,
87
87
  referer = ext_ref or self.main_url,
88
- headers = {},
89
88
  subtitles = subtitles
90
89
  )
@@ -43,7 +43,6 @@ class VideoSeyred(ExtractorBase):
43
43
  name = self.name,
44
44
  url = self.fix_url(source["file"]),
45
45
  referer = self.main_url,
46
- headers = {},
47
46
  subtitles = subtitles,
48
47
  )
49
48
  for source in response_data.get("sources", [])
@@ -37,6 +37,5 @@ class YildizKisaFilm(ExtractorBase):
37
37
  name = self.name,
38
38
  url = m3u_link,
39
39
  referer = ext_ref,
40
- headers = {},
41
40
  subtitles = []
42
41
  )
@@ -237,9 +237,9 @@ class DiziPal(PluginBase):
237
237
 
238
238
  return results
239
239
 
240
- async def play(self, name: str, url: str, referer: str, subtitles: list[Subtitle]):
241
- extract_result = ExtractResult(name=name, url=url, referer=referer, subtitles=subtitles)
242
- self.media_handler.title = name
240
+ async def play(self, **kwargs):
241
+ extract_result = ExtractResult(**kwargs)
242
+ self.media_handler.title = kwargs.get("name")
243
243
  if self.name not in self.media_handler.title:
244
244
  self.media_handler.title = f"{self.name} | {self.media_handler.title}"
245
245
 
@@ -163,9 +163,9 @@ class DiziYou(PluginBase):
163
163
 
164
164
  return results
165
165
 
166
- async def play(self, name: str, url: str, referer: str, subtitles: list[Subtitle]):
167
- extract_result = ExtractResult(name=name, url=url, referer=referer, subtitles=subtitles)
168
- self.media_handler.title = name
166
+ async def play(self, **kwargs):
167
+ extract_result = ExtractResult(**kwargs)
168
+ self.media_handler.title = kwargs.get("name")
169
169
  if self.name not in self.media_handler.title:
170
170
  self.media_handler.title = f"{self.name} | {self.media_handler.title}"
171
171
 
@@ -129,9 +129,9 @@ class FilmModu(PluginBase):
129
129
 
130
130
  return results
131
131
 
132
- async def play(self, name: str, url: str, referer: str, subtitles: list[Subtitle]):
133
- extract_result = ExtractResult(name=name, url=url, referer=referer, subtitles=subtitles)
134
- self.media_handler.title = name
132
+ async def play(self, **kwargs):
133
+ extract_result = ExtractResult(**kwargs)
134
+ self.media_handler.title = kwargs.get("name")
135
135
  if self.name not in self.media_handler.title:
136
136
  self.media_handler.title = f"{self.name} | {self.media_handler.title}"
137
137
 
@@ -219,9 +219,9 @@ class HDFilmCehennemi(PluginBase):
219
219
 
220
220
  return results
221
221
 
222
- async def play(self, name: str, url: str, referer: str, subtitles: list[Subtitle]):
223
- extract_result = ExtractResult(name=name, url=url, referer=referer, subtitles=subtitles)
224
- self.media_handler.title = name
222
+ async def play(self, **kwargs):
223
+ extract_result = ExtractResult(**kwargs)
224
+ self.media_handler.title = kwargs.get("name")
225
225
  if self.name not in self.media_handler.title:
226
226
  self.media_handler.title = f"{self.name} | {self.media_handler.title}"
227
227
 
@@ -121,8 +121,6 @@ class RecTV(PluginBase):
121
121
 
122
122
  #@kekik_cache(ttl=15*60)
123
123
  async def load_links(self, url: str) -> list[dict]:
124
- self.media_handler.headers.update({"User-Agent": "googleusercontent"})
125
-
126
124
  try:
127
125
  veri = loads(url)
128
126
  except Exception:
@@ -132,9 +130,10 @@ class RecTV(PluginBase):
132
130
  # Eğer dizi bölümü ise (bizim oluşturduğumuz yapı)
133
131
  if veri.get("is_episode"):
134
132
  return [{
135
- "url" : veri.get("url"),
136
- "name" : veri.get("title", "Bölüm"),
137
- "referer" : "https://twitter.com/"
133
+ "url" : veri.get("url"),
134
+ "name" : veri.get("title", "Bölüm"),
135
+ "user_agent" : "googleusercontent",
136
+ "referer" : "https://twitter.com/"
138
137
  }]
139
138
 
140
139
  # Film ise (RecTV API yapısı)
@@ -146,16 +145,17 @@ class RecTV(PluginBase):
146
145
  continue
147
146
 
148
147
  results.append({
149
- "url" : video_link,
150
- "name" : f"{veri.get('title')} - {kaynak.get('title')}",
151
- "referer" : "https://twitter.com/"
148
+ "url" : video_link,
149
+ "name" : f"{veri.get('title')} - {kaynak.get('title')}",
150
+ "user_agent" : "googleusercontent",
151
+ "referer" : "https://twitter.com/"
152
152
  })
153
153
 
154
154
  return results
155
155
 
156
- async def play(self, name: str, url: str, referer: str, subtitles: list[Subtitle]):
157
- extract_result = ExtractResult(name=name, url=url, referer=referer, subtitles=subtitles)
158
- self.media_handler.title = name
156
+ async def play(self, **kwargs):
157
+ extract_result = ExtractResult(**kwargs)
158
+ self.media_handler.title = kwargs.get("name")
159
159
  if self.name not in self.media_handler.title:
160
160
  self.media_handler.title = f"{self.name} | {self.media_handler.title}"
161
161
 
@@ -161,9 +161,9 @@ class SineWix(PluginBase):
161
161
 
162
162
  return results
163
163
 
164
- async def play(self, name: str, url: str, referer: str, subtitles: list[Subtitle]):
165
- extract_result = ExtractResult(name=name, url=url, referer=referer, subtitles=subtitles)
166
- self.media_handler.title = name
164
+ async def play(self, **kwargs):
165
+ extract_result = ExtractResult(**kwargs)
166
+ self.media_handler.title = kwargs.get("name")
167
167
  if self.name not in self.media_handler.title:
168
168
  self.media_handler.title = f"{self.name} | {self.media_handler.title}"
169
169
 
@@ -148,9 +148,9 @@ class SinemaCX(PluginBase):
148
148
 
149
149
  return results
150
150
 
151
- async def play(self, name: str, url: str, referer: str, subtitles: list[Subtitle]):
152
- extract_result = ExtractResult(name=name, url=url, referer=referer, subtitles=subtitles)
153
- self.media_handler.title = name
151
+ async def play(self, **kwargs):
152
+ extract_result = ExtractResult(**kwargs)
153
+ self.media_handler.title = kwargs.get("name")
154
154
  if self.name not in self.media_handler.title:
155
155
  self.media_handler.title = f"{self.name} | {self.media_handler.title}"
156
156
 
KekikStream/__init__.py CHANGED
@@ -268,10 +268,11 @@ class KekikStream:
268
268
  self.update_title(selected.get("name"))
269
269
 
270
270
  await self.current_plugin.play(
271
- name = self.media.get_title(),
272
- url = selected.get("url"),
273
- referer = selected.get("referer"),
274
- subtitles = selected.get("subtitles", [])
271
+ name = self.media.get_title(),
272
+ url = selected.get("url"),
273
+ user_agent = selected.get("user_agent"),
274
+ referer = selected.get("referer"),
275
+ subtitles = selected.get("subtitles", [])
275
276
  )
276
277
  return await self.content_finished()
277
278
 
@@ -319,10 +320,6 @@ class KekikStream:
319
320
  self.update_title(selected.get("name"))
320
321
  self.update_title(extract_data.name)
321
322
 
322
- self.media.set_headers(extract_data.headers)
323
- if extract_data.referer and not extract_data.headers.get("Referer"):
324
- self.media.set_headers({"Referer": extract_data.referer})
325
-
326
323
  self.media.play_media(extract_data)
327
324
  await self.content_finished()
328
325
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: KekikStream
3
- Version: 1.7.7
3
+ Version: 1.8.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
@@ -0,0 +1,85 @@
1
+ KekikStream/__init__.py,sha256=JcSKsLRyJM5ZPNHq4DLSaj4FzOjxSp8M8JuM3YN8Ye4,13456
2
+ KekikStream/__main__.py,sha256=B81dQoeGEb-T5Sycs3eNAmW7unvx0Mef0syCjs4nPds,137
3
+ KekikStream/requirements.txt,sha256=ENISGfW7D7abbqEh-1Yp2BaQdFJyYIJ0p8zNTUscuwU,80
4
+ KekikStream/CLI/__init__.py,sha256=U6oLq_O7u5y2eHhBnmfhZNns_EqHHJXJmzl8jvZFUNY,230
5
+ KekikStream/CLI/pypi_kontrol.py,sha256=q6fNs6EKJDc5VuUFig9DBzLzNPp_kMD1vOVgLElcii8,1487
6
+ KekikStream/Core/__init__.py,sha256=ar2MZQF83ryfLfydEXcfjdwNe4Too_HT6bP-D_4TopA,710
7
+ KekikStream/Core/Extractor/ExtractorBase.py,sha256=0GO8u5YzsboYMLk6kmSJmzqLZAbX_HQq6so8-2lBuqQ,2177
8
+ KekikStream/Core/Extractor/ExtractorLoader.py,sha256=7uxUXTAuF65KKkmbI6iRiCiUhx-IqrronB7ixhchcTU,4289
9
+ KekikStream/Core/Extractor/ExtractorManager.py,sha256=4L1H3jiTnf0kTq4W6uS7n95bBYHlKJ8_hh0og8z4erQ,1244
10
+ KekikStream/Core/Extractor/ExtractorModels.py,sha256=Qj_gbIeGRewaZXNfYkTi4FFRRq6XBOc0HS0tXGDwajI,445
11
+ KekikStream/Core/Media/MediaHandler.py,sha256=b3rKaNWVyU-bt54NwoZYWGEhTXiNx2KnR8AyYOe-EFo,6958
12
+ KekikStream/Core/Media/MediaManager.py,sha256=AaUq2D7JSJIphjoAj2fjLOJjswm7Qf5hjYCbBdrbnDU,438
13
+ KekikStream/Core/Plugin/PluginBase.py,sha256=hlvErfJd_11wuhpIzI0Bfa0y3R4g5xM4VakSQJ-54mY,4425
14
+ KekikStream/Core/Plugin/PluginLoader.py,sha256=yZxMug-OcJ5RBm4fQkoquKrZxcBU7Pvt4IcY-d0WU8g,3393
15
+ KekikStream/Core/Plugin/PluginManager.py,sha256=CZVg1eegi8vfMfccx0DRV0Box8kXz-aoULTQLgbPbvM,893
16
+ KekikStream/Core/Plugin/PluginModels.py,sha256=Yvx-6Fkn8QCIcuqAkFbCP5EJcq3XBkK_P8S0tRNhS6E,2476
17
+ KekikStream/Core/UI/UIManager.py,sha256=T4V_kdTTWa-UDamgLSKa__dWJuzcvRK9NuwBlzU9Bzc,1693
18
+ KekikStream/Extractors/CloseLoad.py,sha256=NSDjcwEaQJ_Y3dSszmEFOyVeh3RA2TNlb_IfxAeJ5B8,884
19
+ KekikStream/Extractors/ContentX.py,sha256=u1sDdM79MNx9OdPTPcAA0OQDS7537IO8aJlffxhMi8c,2976
20
+ KekikStream/Extractors/DzenRu.py,sha256=X0Rhm1-W4YjQwVrJs8YFqVcCxMaZi8rsKiLhK_ZsYlU,1185
21
+ KekikStream/Extractors/ExPlay.py,sha256=EJNVKAbaIxlbOsCx7J9aLfNHKOFoqSLZZUw7W4QYeH0,1827
22
+ KekikStream/Extractors/FirePlayer.py,sha256=HlJjFgii0fGZK7cgwpoZAIoajabl7IQX6ZrAQT1fBIw,2188
23
+ KekikStream/Extractors/FourCX.py,sha256=4FrMj1IZBBpN_g1P6S3A-8eUu7QFwlt4fJXzJ7vfe0Q,221
24
+ KekikStream/Extractors/FourPichive.py,sha256=iq3BCUbih1UVF4y4BIWO--0hX5jP2nxqesNx3MGP3kQ,234
25
+ KekikStream/Extractors/FourPlayRu.py,sha256=wq1ylxKpsO_IBoYr_ALzB2dVrQpJ-jY9lf2zPhcAZX8,228
26
+ KekikStream/Extractors/HDPlayerSystem.py,sha256=EgnFzx5Q4PkuwAtuff5SYU9k59B-CyOdySl7lbCZ9hM,1312
27
+ KekikStream/Extractors/HDStreamAble.py,sha256=66n5EvIdX_or5cdnlJ_Uqmzi50n4rl9c5VCw8kBqhQk,245
28
+ KekikStream/Extractors/Hotlinger.py,sha256=NFMRgUmb6BCrJfa7Hi0VarDNYvCeVknBWEk24FKBBa0,224
29
+ KekikStream/Extractors/JetTv.py,sha256=oUHOwu77no1wRkOpfYzDYqlxuqTha26fUue0QDaHLZ8,1597
30
+ KekikStream/Extractors/MailRu.py,sha256=xQVCWwYqNoG5T43VAW1_m0v4e80FbO-1pNPKkwhTccU,1218
31
+ KekikStream/Extractors/MixPlayHD.py,sha256=POV_yq3KoZ6S6EqFsKYULEBz92NdUa2BpYKNo0eNQH8,1552
32
+ KekikStream/Extractors/MixTiger.py,sha256=mMEYhhr5-u6GgIrLESeFTRdwDykgSXKJO4KtkMML1bw,2124
33
+ KekikStream/Extractors/MolyStream.py,sha256=IeeBw9tJJrL5QQ-t2Yp-a-6lnDc3Y00UNiaN6m-o-7c,1160
34
+ KekikStream/Extractors/Odnoklassniki.py,sha256=EQAuCdr69vN11ZBE5uThuXqlR8NVWanROWYkubo22mo,3809
35
+ KekikStream/Extractors/OkRuHTTP.py,sha256=L-B0i_i_Vnm61GvUfd6cGIW-o_H4M-C7DO_cdw2rQPU,228
36
+ KekikStream/Extractors/OkRuSSL.py,sha256=FHJ5XZ1dO5ED3mIku3e3vnq8K0slrcr0jqhaUnHmfVk,227
37
+ KekikStream/Extractors/PeaceMakerst.py,sha256=ZKk454eNZpeamht61UH9yMYe00_zGb3MSyujfDlbVDc,2096
38
+ KekikStream/Extractors/Pichive.py,sha256=BSVYFwL3Ax6yGoS1WkpOWtngxNyuZLoKzpPwjibpu2s,221
39
+ KekikStream/Extractors/PixelDrain.py,sha256=Uk2pPvtBzaKtRXu1iNO8FLHd0EAuIOIzI1H_n02tg-U,964
40
+ KekikStream/Extractors/PlayRu.py,sha256=DQMZyCSJwLkrh-gfDD8T1DvUFNBAKUXpByeCAWuK6YY,215
41
+ KekikStream/Extractors/PlayerFilmIzle.py,sha256=WjClc7uNBc4kBT56Aya5T4Qku_Jy76hblMpyxs8SxLI,2428
42
+ KekikStream/Extractors/RapidVid.py,sha256=TxNnLUmYaAHi-rFkoLu4eQULzkUSvQnfoEZAjyzQFns,2917
43
+ KekikStream/Extractors/SetPlay.py,sha256=FsbLlYFXp7_28-ta6XAoqDQAEGYTVZOZayebkY1mWe8,1906
44
+ KekikStream/Extractors/SetPrime.py,sha256=ob09y-Sm91YR7rIRzikhZiMHX6D4Djm5QzFTg6KbO4k,1536
45
+ KekikStream/Extractors/SibNet.py,sha256=zJTkzlr34ufKCWzKKCgJrzhb2o-fpjTjFdi38gv6N6g,849
46
+ KekikStream/Extractors/Sobreatsesuyp.py,sha256=qlSQHUHjTjBoY0nsuZQWAjnfswbPORkBg6rUuP7SagA,2000
47
+ KekikStream/Extractors/TRsTX.py,sha256=mbSRGnQt26a73SbqwtY9rpiYFwgRgVbvA6bkGb_PvP8,2152
48
+ KekikStream/Extractors/TauVideo.py,sha256=2ai9BwwM6qlCgxK7E0B642LtOF5y4hEb9tQ2aDpbMtc,1112
49
+ KekikStream/Extractors/TurboImgz.py,sha256=nnWnP1K4JZbMj6S-YuXxej31UZtF4JcboSW4n7A4A5c,824
50
+ KekikStream/Extractors/TurkeyPlayer.py,sha256=FX_H3vzXjAD7IjK11bjJVVw_VdPQ4n6YQLfjQ6E3t7o,1247
51
+ KekikStream/Extractors/VidHide.py,sha256=TVoS9CMV1WSE83vPC4FFxsNE71n-_DtVJm66_1Wt8pU,2538
52
+ KekikStream/Extractors/VidMoly.py,sha256=bxzIymYHrms4gBdK2jfsoug2tjq-PuicOxeR2NjcAjw,3654
53
+ KekikStream/Extractors/VidMolyMe.py,sha256=ogLiFUJVqFbhtzQrZ1gSB9me85DiHvntjWtSvidYVS8,218
54
+ KekikStream/Extractors/VidMoxy.py,sha256=LT7wTKBtuuagXwfGjWZwQF2NQGuChurZJ-I6gM0Jcek,1771
55
+ KekikStream/Extractors/VidPapi.py,sha256=g9ohdL9VJrxy4N7xerbIRz3ZxjsXFHlJWy0NaZ31hFY,3259
56
+ KekikStream/Extractors/VideoSeyred.py,sha256=M6QPZ_isX9vM_7LPo-2I_8Cf1vB9awHw8vvzBODtoiQ,1977
57
+ KekikStream/Extractors/YildizKisaFilm.py,sha256=R_JlrOVeMiDlXYcuTdItnKvidyx8_u3B14fSrxew2aE,1316
58
+ KekikStream/Plugins/DiziBox.py,sha256=x7lChsXwaKbWeIPs9uN-jU1ZlVG73a7_1H5_emoPlUQ,10092
59
+ KekikStream/Plugins/DiziPal.py,sha256=8tJh7n9nts-tnKFmw2wn8XbKXjQZ3U7V3TxFBf4rNmg,10108
60
+ KekikStream/Plugins/DiziYou.py,sha256=oFET6bLG8YuqLBhndw50ppY90mGVYj39vXMdkIWjehM,7918
61
+ KekikStream/Plugins/Dizilla.py,sha256=aaORb3ZfNZm5gXB940d3Q9FgRjuNiVtQoY64W0hYbOA,7450
62
+ KekikStream/Plugins/FilmBip.py,sha256=wBp8jmjYuxv5nnI76skD2R_oSuS7CWhGTyQpM1YujHg,6054
63
+ KekikStream/Plugins/FilmMakinesi.py,sha256=CdV4k44dw0Q4rO3x4GobSDT1KGrkgit0OfTPxZfmfJ8,5314
64
+ KekikStream/Plugins/FilmModu.py,sha256=b27hchMoYZwG3I-kM1sveW7rHKOF5OuepdjPgKIehEM,6706
65
+ KekikStream/Plugins/FullHDFilm.py,sha256=kkb-JtWf23uiEzP9f_uds0tROYiKOyxcX0D-jNtQFi0,7005
66
+ KekikStream/Plugins/FullHDFilmizlesene.py,sha256=UYOMLJqbH72gkXWizNV3gWLZHATWeC6h8YaqThgGduI,6281
67
+ KekikStream/Plugins/HDFilmCehennemi.py,sha256=cI8pQEPF0xo9vVI2fCPktjvCuH8N8f5lI0GwT3bwy8Y,9827
68
+ KekikStream/Plugins/JetFilmizle.py,sha256=0UgHnBTkd4mMXKSLjYxAixFMGXrVa0qOLqYiLb6RKZQ,6092
69
+ KekikStream/Plugins/KultFilmler.py,sha256=VZET3RUoOVYKE-C2YbkMW8oNcxz6zE2pR7a3z-B4nD4,8987
70
+ KekikStream/Plugins/RecTV.py,sha256=dJBHc0Um-hizxj__lz3To0mA7An86YpoN3hZPX4xJic,7673
71
+ KekikStream/Plugins/RoketDizi.py,sha256=lmdGNkv8QdmOsYcC3BQbviXHL94qVzz5onGNOXF8c9w,7813
72
+ KekikStream/Plugins/SelcukFlix.py,sha256=F3Rv2TRpfM-SZUAqjTPsQChS_Ejoh5q1Mo5fBFlsLy0,9013
73
+ KekikStream/Plugins/SezonlukDizi.py,sha256=IomeNsVlji1TCimv8JwdMquKLcxZwwJQOZYzJ5v0OdE,6455
74
+ KekikStream/Plugins/SineWix.py,sha256=dPFUlHece9zo57Xjttdp_w-K9J_d1_8C-U6u1twWLh8,7493
75
+ KekikStream/Plugins/Sinefy.py,sha256=mRwtQYiH7I_1k4EZS0g4MhnRDEx0NXwY8sa5tI33dog,8368
76
+ KekikStream/Plugins/SinemaCX.py,sha256=8wMwqsCGM7l-co-vMb38vtSIeejYBTqjHUY3TWPs6uk,7177
77
+ KekikStream/Plugins/Sinezy.py,sha256=t7InHEtKdIVyBQj8HJWwWcHhRP9AXKKXYE0O3YD8MYg,3647
78
+ KekikStream/Plugins/SuperFilmGeldi.py,sha256=Ohm21BPsJH_S1tx5i2APEgAOD25k2NiwRP7rSgAKvRs,5289
79
+ KekikStream/Plugins/UgurFilm.py,sha256=BUoDQOQF6tsj2tZj06OL9ga7j_oj116p3C2GQsnMXTU,4961
80
+ kekikstream-1.8.0.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
81
+ kekikstream-1.8.0.dist-info/METADATA,sha256=KrOs3wvXSQnm7F4txU5kfh0a2KJXk1BxXH6EUWrciFw,4983
82
+ kekikstream-1.8.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
83
+ kekikstream-1.8.0.dist-info/entry_points.txt,sha256=dFwdiTx8djyehI0Gsz-rZwjAfZzUzoBSrmzRu9ubjJc,50
84
+ kekikstream-1.8.0.dist-info/top_level.txt,sha256=DNmGJDXl27Drdfobrak8KYLmocW_uznVYFJOzcjUgmY,12
85
+ kekikstream-1.8.0.dist-info/RECORD,,
@@ -1,85 +0,0 @@
1
- KekikStream/__init__.py,sha256=Qgb2Dq_10q_z1lSNcrU_M6e-iKwEwjvA_A6AGVgYDS4,13600
2
- KekikStream/__main__.py,sha256=B81dQoeGEb-T5Sycs3eNAmW7unvx0Mef0syCjs4nPds,137
3
- KekikStream/requirements.txt,sha256=ENISGfW7D7abbqEh-1Yp2BaQdFJyYIJ0p8zNTUscuwU,80
4
- KekikStream/CLI/__init__.py,sha256=U6oLq_O7u5y2eHhBnmfhZNns_EqHHJXJmzl8jvZFUNY,230
5
- KekikStream/CLI/pypi_kontrol.py,sha256=q6fNs6EKJDc5VuUFig9DBzLzNPp_kMD1vOVgLElcii8,1487
6
- KekikStream/Core/__init__.py,sha256=ar2MZQF83ryfLfydEXcfjdwNe4Too_HT6bP-D_4TopA,710
7
- KekikStream/Core/Extractor/ExtractorBase.py,sha256=0GO8u5YzsboYMLk6kmSJmzqLZAbX_HQq6so8-2lBuqQ,2177
8
- KekikStream/Core/Extractor/ExtractorLoader.py,sha256=7uxUXTAuF65KKkmbI6iRiCiUhx-IqrronB7ixhchcTU,4289
9
- KekikStream/Core/Extractor/ExtractorManager.py,sha256=4L1H3jiTnf0kTq4W6uS7n95bBYHlKJ8_hh0og8z4erQ,1244
10
- KekikStream/Core/Extractor/ExtractorModels.py,sha256=vLxG99_cbWwTc-dbk8XzjCasvR0QkoKSX2R0FAY9gks,456
11
- KekikStream/Core/Media/MediaHandler.py,sha256=OWYNhQfT9bcCs1qo4qGz0VXxMWCoi7CA4ZqfAUHUgFw,7084
12
- KekikStream/Core/Media/MediaManager.py,sha256=9ItiUguOkk3wg3YY5uf3mrjfwLPCvggnP8QviX0uiuE,526
13
- KekikStream/Core/Plugin/PluginBase.py,sha256=hlvErfJd_11wuhpIzI0Bfa0y3R4g5xM4VakSQJ-54mY,4425
14
- KekikStream/Core/Plugin/PluginLoader.py,sha256=yZxMug-OcJ5RBm4fQkoquKrZxcBU7Pvt4IcY-d0WU8g,3393
15
- KekikStream/Core/Plugin/PluginManager.py,sha256=CZVg1eegi8vfMfccx0DRV0Box8kXz-aoULTQLgbPbvM,893
16
- KekikStream/Core/Plugin/PluginModels.py,sha256=Aty3V4B3nPStVVSjYO9EIBmbUhavChQwQjC3l5TsrQI,2583
17
- KekikStream/Core/UI/UIManager.py,sha256=T4V_kdTTWa-UDamgLSKa__dWJuzcvRK9NuwBlzU9Bzc,1693
18
- KekikStream/Extractors/CloseLoad.py,sha256=cas2l0vk3S8yt15xAoin_iz1dQhBvFPg4k6U_b8SF9w,911
19
- KekikStream/Extractors/ContentX.py,sha256=HfQ3g5KlL7LxB-7lxE70kIwg17NvfEk6wEUtzo-7-nM,3044
20
- KekikStream/Extractors/DzenRu.py,sha256=6QOXBdU5GoWvzDlfdrMk0vLXjzxYBOqYAKrgs70rPa8,1213
21
- KekikStream/Extractors/ExPlay.py,sha256=yHXdE0lr6i_Dhv8TmuC5gBItU01T19mbTqglkWoG8Y0,1855
22
- KekikStream/Extractors/FirePlayer.py,sha256=axp8TIrkvI224yhLphwf1AdtOH4eVcD8ZcRzMmds-hI,2163
23
- KekikStream/Extractors/FourCX.py,sha256=4FrMj1IZBBpN_g1P6S3A-8eUu7QFwlt4fJXzJ7vfe0Q,221
24
- KekikStream/Extractors/FourPichive.py,sha256=iq3BCUbih1UVF4y4BIWO--0hX5jP2nxqesNx3MGP3kQ,234
25
- KekikStream/Extractors/FourPlayRu.py,sha256=wq1ylxKpsO_IBoYr_ALzB2dVrQpJ-jY9lf2zPhcAZX8,228
26
- KekikStream/Extractors/HDPlayerSystem.py,sha256=Q7IYAfy1UMamy3aLWZA31-IjI4mQsKYpb3fiOiAM_GA,1340
27
- KekikStream/Extractors/HDStreamAble.py,sha256=66n5EvIdX_or5cdnlJ_Uqmzi50n4rl9c5VCw8kBqhQk,245
28
- KekikStream/Extractors/Hotlinger.py,sha256=NFMRgUmb6BCrJfa7Hi0VarDNYvCeVknBWEk24FKBBa0,224
29
- KekikStream/Extractors/JetTv.py,sha256=kFw-_rgVxSuDGtOeYYvg0fa0P0kMcGLhexiD8y4BW5U,1625
30
- KekikStream/Extractors/MailRu.py,sha256=9TfjtgqkbcRAvoWfSwDJK3zvtq1z5-_JCdPDdZj5UDI,1279
31
- KekikStream/Extractors/MixPlayHD.py,sha256=810efcVXQ1OniIz7gGtrsjNpqFy5Z6HScxDsJNsubHA,1584
32
- KekikStream/Extractors/MixTiger.py,sha256=nf5wq3Y_h2trE8bLbUWEza3BTgFK-Pfsb0OdQyar1VM,2238
33
- KekikStream/Extractors/MolyStream.py,sha256=y1kB2Fuf0kEchl6mxcyFdaRWOKwt6zSwYy3ojPC135M,1171
34
- KekikStream/Extractors/Odnoklassniki.py,sha256=B_uwJtxZ4lUoKLz1u4ejdOY3JiL5DVLPkXSnMCGXKTQ,3780
35
- KekikStream/Extractors/OkRuHTTP.py,sha256=L-B0i_i_Vnm61GvUfd6cGIW-o_H4M-C7DO_cdw2rQPU,228
36
- KekikStream/Extractors/OkRuSSL.py,sha256=FHJ5XZ1dO5ED3mIku3e3vnq8K0slrcr0jqhaUnHmfVk,227
37
- KekikStream/Extractors/PeaceMakerst.py,sha256=NYrVJrh32iu1T5Lnv1cjpUdzFcPgxfgSt7JM4ZoejnE,2124
38
- KekikStream/Extractors/Pichive.py,sha256=BSVYFwL3Ax6yGoS1WkpOWtngxNyuZLoKzpPwjibpu2s,221
39
- KekikStream/Extractors/PixelDrain.py,sha256=ZpeNFnMTEgMggqdSeInJN7wkJ-7rEXZ6TfhVylQfkDM,992
40
- KekikStream/Extractors/PlayRu.py,sha256=DQMZyCSJwLkrh-gfDD8T1DvUFNBAKUXpByeCAWuK6YY,215
41
- KekikStream/Extractors/PlayerFilmIzle.py,sha256=eg3Yv7GDTHZxHyCNY8lpeZIqMHAbD-bLpzRifrvfGHI,2405
42
- KekikStream/Extractors/RapidVid.py,sha256=reS-05xizyDP0HGYWlyVumvxtnBgpSDH95t5-Ii5R7M,2945
43
- KekikStream/Extractors/SetPlay.py,sha256=lOk9v8YJAcFs6mL46RCxY2wJg1tXqgwlfpM6X_bEJEA,1934
44
- KekikStream/Extractors/SetPrime.py,sha256=nLlPRUthnD6H4tLo4uONBXsGDZHEKpg8KTWAXDsTiq8,1564
45
- KekikStream/Extractors/SibNet.py,sha256=j6hFTzUA0lJyruAq7rQuV9L7GJZMHfazzCmaLUU2uRE,877
46
- KekikStream/Extractors/Sobreatsesuyp.py,sha256=JY3TjuKi95fNenKXustqmYa_9jFoW8Vo6OOMQfFhXEw,2036
47
- KekikStream/Extractors/TRsTX.py,sha256=ui7EPM9S9z2nhNsy1S7KORSOsgaCpqP0tuGl1xN5f9E,2188
48
- KekikStream/Extractors/TauVideo.py,sha256=9qF9N1a7bYkCAjMbUpso1JPw0m28Gq_gNSchpwgyUcU,1148
49
- KekikStream/Extractors/TurboImgz.py,sha256=KYAtCQ33egsR1x6t08UFyF9ps6loCrRV5WZBFR5U-YA,856
50
- KekikStream/Extractors/TurkeyPlayer.py,sha256=6gQ6Ht7gLd9_vBY81NqqsYbDIsEh5XQpGF19KWrqKH4,1226
51
- KekikStream/Extractors/VidHide.py,sha256=3LHmRRurplnmlxKf5bnK2fgYQCQR2W9rB6-IcVubyvk,2517
52
- KekikStream/Extractors/VidMoly.py,sha256=Rd_DIa1KUyBYpDFUfsCvtjwYCZ6ANjFkqxVOqH1Tq1E,3682
53
- KekikStream/Extractors/VidMolyMe.py,sha256=ogLiFUJVqFbhtzQrZ1gSB9me85DiHvntjWtSvidYVS8,218
54
- KekikStream/Extractors/VidMoxy.py,sha256=vwyw2MgC9EIdF4PYB_5O7gkUxF5JTkfbmlVudZewvNs,1799
55
- KekikStream/Extractors/VidPapi.py,sha256=Y9wBhZi-uH5VlYJaREByjheAGuVKQ7gXqNkQ_dlwlVM,3287
56
- KekikStream/Extractors/VideoSeyred.py,sha256=HHzS8Ew1yJgWmyzi64dJkPD5bGP6Ku00EoSdZ7ncgaA,2009
57
- KekikStream/Extractors/YildizKisaFilm.py,sha256=TZp9y3TQBKs_6MLxrrnXV1RbqLuCxHXbEId63tiBPcg,1344
58
- KekikStream/Plugins/DiziBox.py,sha256=x7lChsXwaKbWeIPs9uN-jU1ZlVG73a7_1H5_emoPlUQ,10092
59
- KekikStream/Plugins/DiziPal.py,sha256=u9hAB7y3mo7MtP_wOth-wUA_xov4d8ktYu6DpR4NLHI,10194
60
- KekikStream/Plugins/DiziYou.py,sha256=f1rxPM_9Mut2Cws3-sKesq5Gn9p0gZL7zvbrGrawqhk,8004
61
- KekikStream/Plugins/Dizilla.py,sha256=aaORb3ZfNZm5gXB940d3Q9FgRjuNiVtQoY64W0hYbOA,7450
62
- KekikStream/Plugins/FilmBip.py,sha256=wBp8jmjYuxv5nnI76skD2R_oSuS7CWhGTyQpM1YujHg,6054
63
- KekikStream/Plugins/FilmMakinesi.py,sha256=CdV4k44dw0Q4rO3x4GobSDT1KGrkgit0OfTPxZfmfJ8,5314
64
- KekikStream/Plugins/FilmModu.py,sha256=11c6dSMMfu6SQsIbRLD9n84KxN2MnbZ00nH0Tnc2aGk,6792
65
- KekikStream/Plugins/FullHDFilm.py,sha256=kkb-JtWf23uiEzP9f_uds0tROYiKOyxcX0D-jNtQFi0,7005
66
- KekikStream/Plugins/FullHDFilmizlesene.py,sha256=UYOMLJqbH72gkXWizNV3gWLZHATWeC6h8YaqThgGduI,6281
67
- KekikStream/Plugins/HDFilmCehennemi.py,sha256=w49XXVNyU9hyA5vU0pIkJbB4OzHaa15p8STtnkVa1Uc,9913
68
- KekikStream/Plugins/JetFilmizle.py,sha256=0UgHnBTkd4mMXKSLjYxAixFMGXrVa0qOLqYiLb6RKZQ,6092
69
- KekikStream/Plugins/KultFilmler.py,sha256=VZET3RUoOVYKE-C2YbkMW8oNcxz6zE2pR7a3z-B4nD4,8987
70
- KekikStream/Plugins/RecTV.py,sha256=000u2dwMVd9HgqFn1m74y97Yod6gOwVR2zEiIkJvno8,7713
71
- KekikStream/Plugins/RoketDizi.py,sha256=lmdGNkv8QdmOsYcC3BQbviXHL94qVzz5onGNOXF8c9w,7813
72
- KekikStream/Plugins/SelcukFlix.py,sha256=F3Rv2TRpfM-SZUAqjTPsQChS_Ejoh5q1Mo5fBFlsLy0,9013
73
- KekikStream/Plugins/SezonlukDizi.py,sha256=IomeNsVlji1TCimv8JwdMquKLcxZwwJQOZYzJ5v0OdE,6455
74
- KekikStream/Plugins/SineWix.py,sha256=NbILBaYMj-Mxei4xOg3Si0l7L44qb5aAA-M6L_KIZ_w,7579
75
- KekikStream/Plugins/Sinefy.py,sha256=mRwtQYiH7I_1k4EZS0g4MhnRDEx0NXwY8sa5tI33dog,8368
76
- KekikStream/Plugins/SinemaCX.py,sha256=-vCHGhycKOoynnfkhTQwmMrBl_c7IsTO43UuIQwf3Mk,7263
77
- KekikStream/Plugins/Sinezy.py,sha256=t7InHEtKdIVyBQj8HJWwWcHhRP9AXKKXYE0O3YD8MYg,3647
78
- KekikStream/Plugins/SuperFilmGeldi.py,sha256=Ohm21BPsJH_S1tx5i2APEgAOD25k2NiwRP7rSgAKvRs,5289
79
- KekikStream/Plugins/UgurFilm.py,sha256=BUoDQOQF6tsj2tZj06OL9ga7j_oj116p3C2GQsnMXTU,4961
80
- kekikstream-1.7.7.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
81
- kekikstream-1.7.7.dist-info/METADATA,sha256=Cucbfex4SUODsqwD4QBgIQyvD2DcQfw6D7x5ElaCrno,4983
82
- kekikstream-1.7.7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
83
- kekikstream-1.7.7.dist-info/entry_points.txt,sha256=dFwdiTx8djyehI0Gsz-rZwjAfZzUzoBSrmzRu9ubjJc,50
84
- kekikstream-1.7.7.dist-info/top_level.txt,sha256=DNmGJDXl27Drdfobrak8KYLmocW_uznVYFJOzcjUgmY,12
85
- kekikstream-1.7.7.dist-info/RECORD,,