KekikStream 2.3.0__tar.gz → 2.3.1__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 (88) hide show
  1. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Plugins/DiziYou.py +13 -3
  2. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Plugins/Dizilla.py +19 -4
  3. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Plugins/HDFilmCehennemi.py +3 -3
  4. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream.egg-info/PKG-INFO +1 -1
  5. {kekikstream-2.3.0 → kekikstream-2.3.1}/PKG-INFO +1 -1
  6. {kekikstream-2.3.0 → kekikstream-2.3.1}/setup.py +1 -1
  7. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/CLI/__init__.py +0 -0
  8. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/CLI/pypi_kontrol.py +0 -0
  9. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Core/Extractor/ExtractorBase.py +0 -0
  10. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Core/Extractor/ExtractorLoader.py +0 -0
  11. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Core/Extractor/ExtractorManager.py +0 -0
  12. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Core/Extractor/ExtractorModels.py +0 -0
  13. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Core/Extractor/YTDLPCache.py +0 -0
  14. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Core/Media/MediaHandler.py +0 -0
  15. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Core/Media/MediaManager.py +0 -0
  16. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Core/Plugin/PluginBase.py +0 -0
  17. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Core/Plugin/PluginLoader.py +0 -0
  18. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Core/Plugin/PluginManager.py +0 -0
  19. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Core/Plugin/PluginModels.py +0 -0
  20. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Core/UI/UIManager.py +0 -0
  21. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Core/__init__.py +0 -0
  22. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Extractors/CloseLoad.py +0 -0
  23. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Extractors/ContentX.py +0 -0
  24. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Extractors/DonilasPlay.py +0 -0
  25. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Extractors/DzenRu.py +0 -0
  26. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Extractors/ExPlay.py +0 -0
  27. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Extractors/Filemoon.py +0 -0
  28. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Extractors/HDPlayerSystem.py +0 -0
  29. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Extractors/JFVid.py +0 -0
  30. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Extractors/JetTv.py +0 -0
  31. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Extractors/MailRu.py +0 -0
  32. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Extractors/MixPlayHD.py +0 -0
  33. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Extractors/MixTiger.py +0 -0
  34. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Extractors/MolyStream.py +0 -0
  35. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Extractors/Odnoklassniki.py +0 -0
  36. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Extractors/PeaceMakerst.py +0 -0
  37. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Extractors/PixelDrain.py +0 -0
  38. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Extractors/PlayerFilmIzle.py +0 -0
  39. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Extractors/RapidVid.py +0 -0
  40. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Extractors/SetPlay.py +0 -0
  41. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Extractors/SetPrime.py +0 -0
  42. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Extractors/SibNet.py +0 -0
  43. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Extractors/Sobreatsesuyp.py +0 -0
  44. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Extractors/TRsTX.py +0 -0
  45. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Extractors/TauVideo.py +0 -0
  46. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Extractors/TurboImgz.py +0 -0
  47. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Extractors/TurkeyPlayer.py +0 -0
  48. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Extractors/VCTPlay.py +0 -0
  49. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Extractors/VidHide.py +0 -0
  50. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Extractors/VidMoly.py +0 -0
  51. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Extractors/VidMoxy.py +0 -0
  52. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Extractors/VidPapi.py +0 -0
  53. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Extractors/VideoSeyred.py +0 -0
  54. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Extractors/YTDLP.py +0 -0
  55. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Extractors/YildizKisaFilm.py +0 -0
  56. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Plugins/BelgeselX.py +0 -0
  57. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Plugins/DiziBox.py +0 -0
  58. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Plugins/DiziPal.py +0 -0
  59. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Plugins/FilmBip.py +0 -0
  60. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Plugins/FilmMakinesi.py +0 -0
  61. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Plugins/FilmModu.py +0 -0
  62. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Plugins/FullHDFilm.py +0 -0
  63. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Plugins/FullHDFilmizlesene.py +0 -0
  64. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Plugins/JetFilmizle.py +0 -0
  65. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Plugins/KultFilmler.py +0 -0
  66. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Plugins/RecTV.py +0 -0
  67. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Plugins/RoketDizi.py +0 -0
  68. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Plugins/SelcukFlix.py +0 -0
  69. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Plugins/SetFilmIzle.py +0 -0
  70. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Plugins/SezonlukDizi.py +0 -0
  71. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Plugins/SineWix.py +0 -0
  72. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Plugins/Sinefy.py +0 -0
  73. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Plugins/SinemaCX.py +0 -0
  74. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Plugins/Sinezy.py +0 -0
  75. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Plugins/SuperFilmGeldi.py +0 -0
  76. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/Plugins/UgurFilm.py +0 -0
  77. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/__init__.py +0 -0
  78. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/__main__.py +0 -0
  79. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream/requirements.txt +0 -0
  80. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream.egg-info/SOURCES.txt +0 -0
  81. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream.egg-info/dependency_links.txt +0 -0
  82. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream.egg-info/entry_points.txt +0 -0
  83. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream.egg-info/requires.txt +0 -0
  84. {kekikstream-2.3.0 → kekikstream-2.3.1}/KekikStream.egg-info/top_level.txt +0 -0
  85. {kekikstream-2.3.0 → kekikstream-2.3.1}/LICENSE +0 -0
  86. {kekikstream-2.3.0 → kekikstream-2.3.1}/MANIFEST.in +0 -0
  87. {kekikstream-2.3.0 → kekikstream-2.3.1}/README.md +0 -0
  88. {kekikstream-2.3.0 → kekikstream-2.3.1}/setup.cfg +0 -0
@@ -100,13 +100,23 @@ class DiziYou(PluginBase):
100
100
  year = year_match.group(1)
101
101
 
102
102
  desc_el = secici.css_first("div.diziyou_desc")
103
- description = desc_el.text(strip=True) if desc_el else None
103
+ description = None
104
+ if desc_el:
105
+ # HTML'i al ve script + meta div'lerini temizle
106
+ desc_html = desc_el.html
107
+ # Script taglarını kaldır
108
+ desc_html = re.sub(r"<script.*?</script>", "", desc_html, flags=re.DOTALL)
109
+ # div#icerikcat2 ve sonrasını kaldır (meta bilgileri içeriyor)
110
+ desc_html = re.sub(r"<div id=\"icerikcat2\".*", "", desc_html, flags=re.DOTALL)
111
+ # Kalan HTML'den text çıkar
112
+ clean_sel = HTMLParser(desc_html)
113
+ description = clean_sel.text(strip=True)
104
114
 
105
115
  tags = [a.text(strip=True) for a in secici.css("div.genres a") if a.text(strip=True)]
106
116
 
107
- # Rating - regex ile
117
+ # Rating - daha spesifik regex ile
108
118
  rating = None
109
- rating_match = re.search(r"IMDB.*?([0-9.]+)", html_text, re.DOTALL | re.IGNORECASE)
119
+ rating_match = re.search(r"IMDB\s*:\s*</span>([0-9.]+)", html_text, re.DOTALL | re.IGNORECASE)
110
120
  if rating_match:
111
121
  rating = rating_match.group(1)
112
122
 
@@ -6,6 +6,7 @@ from json import loads
6
6
  from urllib.parse import urlparse, urlunparse
7
7
  from Crypto.Cipher import AES
8
8
  from base64 import b64decode
9
+ import re
9
10
 
10
11
  class Dizilla(PluginBase):
11
12
  name = "Dizilla"
@@ -45,7 +46,7 @@ class Dizilla(PluginBase):
45
46
  category = category,
46
47
  title = veri.get("original_title"),
47
48
  url = self.fix_url(f"{self.main_url}/{veri.get('used_slug')}"),
48
- poster = self.fix_url(veri.get("object_poster_url")),
49
+ poster = self.fix_poster_url(self.fix_url(veri.get("object_poster_url"))),
49
50
  )
50
51
  for veri in veriler
51
52
  ])
@@ -114,6 +115,20 @@ class Dizilla(PluginBase):
114
115
  # JSON decode
115
116
  return loads(decrypted.decode("utf-8"))
116
117
 
118
+ def fix_poster_url(self, url: str) -> str:
119
+ """AMP CDN URL'lerini düzelt."""
120
+ if not url:
121
+ return url
122
+ # AMP CDN URL'lerini orijinal URL'ye çevir
123
+ # https://images-macellan-online.cdn.ampproject.org/i/s/images.macellan.online/...
124
+ # -> https://images.macellan.online/...
125
+ if "cdn.ampproject.org" in url:
126
+ # /i/s/ veya /ii/s/ gibi AMP prefix'lerinden sonraki kısmı al
127
+ match = re.search(r"cdn\.ampproject\.org/[^/]+/s/(.+)$", url)
128
+ if match:
129
+ return f"https://{match.group(1)}"
130
+ return url
131
+
117
132
  async def search(self, query: str) -> list[SearchResult]:
118
133
  arama_istek = await self.httpx.post(f"{self.main_url}/api/bg/searchcontent?searchterm={query}")
119
134
  decrypted = await self.decrypt_response(arama_istek.json().get("response"))
@@ -123,7 +138,7 @@ class Dizilla(PluginBase):
123
138
  SearchResult(
124
139
  title = veri.get("object_name"),
125
140
  url = self.fix_url(f"{self.main_url}/{veri.get('used_slug')}"),
126
- poster = self.fix_url(veri.get("object_poster_url")),
141
+ poster = self.fix_poster_url(self.fix_url(veri.get("object_poster_url"))),
127
142
  )
128
143
  for veri in arama_veri
129
144
  ]
@@ -176,8 +191,8 @@ class Dizilla(PluginBase):
176
191
 
177
192
  season_num = None
178
193
  try:
179
- # URL'den sezon numarasını çek: ...-sezon-X
180
- season_match = re.search(r"sezon-(\d+)", sezon_href)
194
+ # URL'den sezon numarasını çek: ...-N-sezon formatı
195
+ season_match = re.search(r"-(\d+)-sezon", sezon_href)
181
196
  if season_match:
182
197
  season_num = int(season_match.group(1))
183
198
  except:
@@ -72,14 +72,14 @@ class HDFilmCehennemi(PluginBase):
72
72
  title = title_el.text(strip=True) if title_el else None
73
73
  href = link_el.attrs.get("href") if link_el else None
74
74
  poster = (img_el.attrs.get("data-src") or img_el.attrs.get("src")) if img_el else None
75
-
75
+
76
76
  if title and href:
77
77
  results.append(SearchResult(
78
78
  title = title,
79
79
  url = self.fix_url(href),
80
- poster = self.fix_url(poster) if poster else None,
80
+ poster = self.fix_url(poster).replace("/thumb/", "/list/") if poster else None,
81
81
  ))
82
-
82
+
83
83
  return results
84
84
 
85
85
  async def load_item(self, url: str) -> MovieInfo | SeriesInfo:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: KekikStream
3
- Version: 2.3.0
3
+ Version: 2.3.1
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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: KekikStream
3
- Version: 2.3.0
3
+ Version: 2.3.1
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 = "2.3.0",
9
+ version = "2.3.1",
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