KekikStream 1.3.1__tar.gz → 1.3.2__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 (70) hide show
  1. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Plugins/FilmMakinesi.py +1 -1
  2. kekikstream-1.3.2/KekikStream/Plugins/FullHDFilmizlesene.py +127 -0
  3. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream.egg-info/PKG-INFO +1 -1
  4. {kekikstream-1.3.1 → kekikstream-1.3.2}/PKG-INFO +1 -1
  5. {kekikstream-1.3.1 → kekikstream-1.3.2}/setup.py +1 -1
  6. kekikstream-1.3.1/KekikStream/Plugins/FullHDFilmizlesene.py +0 -80
  7. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/CLI/__init__.py +0 -0
  8. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/CLI/pypi_kontrol.py +0 -0
  9. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Core/Extractor/ExtractorBase.py +0 -0
  10. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Core/Extractor/ExtractorLoader.py +0 -0
  11. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Core/Extractor/ExtractorManager.py +0 -0
  12. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Core/Extractor/ExtractorModels.py +0 -0
  13. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Core/Media/MediaHandler.py +0 -0
  14. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Core/Media/MediaManager.py +0 -0
  15. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Core/Plugin/PluginBase.py +0 -0
  16. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Core/Plugin/PluginLoader.py +0 -0
  17. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Core/Plugin/PluginManager.py +0 -0
  18. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Core/Plugin/PluginModels.py +0 -0
  19. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Core/UI/UIManager.py +0 -0
  20. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Core/__init__.py +0 -0
  21. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Extractors/CloseLoad.py +0 -0
  22. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Extractors/ContentX.py +0 -0
  23. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Extractors/FourCX.py +0 -0
  24. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Extractors/FourPichive.py +0 -0
  25. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Extractors/FourPlayRu.py +0 -0
  26. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Extractors/HDStreamAble.py +0 -0
  27. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Extractors/Hotlinger.py +0 -0
  28. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Extractors/MailRu.py +0 -0
  29. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Extractors/MixPlayHD.py +0 -0
  30. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Extractors/MolyStream.py +0 -0
  31. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Extractors/Odnoklassniki.py +0 -0
  32. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Extractors/OkRuHTTP.py +0 -0
  33. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Extractors/OkRuSSL.py +0 -0
  34. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Extractors/PeaceMakerst.py +0 -0
  35. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Extractors/Pichive.py +0 -0
  36. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Extractors/PixelDrain.py +0 -0
  37. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Extractors/PlayRu.py +0 -0
  38. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Extractors/RapidVid.py +0 -0
  39. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Extractors/SibNet.py +0 -0
  40. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Extractors/Sobreatsesuyp.py +0 -0
  41. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Extractors/TRsTX.py +0 -0
  42. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Extractors/TauVideo.py +0 -0
  43. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Extractors/TurboImgz.py +0 -0
  44. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Extractors/VidMoly.py +0 -0
  45. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Extractors/VidMolyMe.py +0 -0
  46. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Extractors/VidMoxy.py +0 -0
  47. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Extractors/VideoSeyred.py +0 -0
  48. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Helpers/Unpack.py +0 -0
  49. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Plugins/DiziBox.py +0 -0
  50. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Plugins/DiziYou.py +0 -0
  51. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Plugins/Dizilla.py +0 -0
  52. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Plugins/HDFilmCehennemi.py +0 -0
  53. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Plugins/JetFilmizle.py +0 -0
  54. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Plugins/RecTV.py +0 -0
  55. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Plugins/SezonlukDizi.py +0 -0
  56. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Plugins/Shorten.py +0 -0
  57. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Plugins/SineWix.py +0 -0
  58. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/Plugins/UgurFilm.py +0 -0
  59. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/__init__.py +0 -0
  60. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/__main__.py +0 -0
  61. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream/requirements.txt +0 -0
  62. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream.egg-info/SOURCES.txt +0 -0
  63. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream.egg-info/dependency_links.txt +0 -0
  64. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream.egg-info/entry_points.txt +0 -0
  65. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream.egg-info/requires.txt +0 -0
  66. {kekikstream-1.3.1 → kekikstream-1.3.2}/KekikStream.egg-info/top_level.txt +0 -0
  67. {kekikstream-1.3.1 → kekikstream-1.3.2}/LICENSE +0 -0
  68. {kekikstream-1.3.1 → kekikstream-1.3.2}/MANIFEST.in +0 -0
  69. {kekikstream-1.3.1 → kekikstream-1.3.2}/README.md +0 -0
  70. {kekikstream-1.3.1 → kekikstream-1.3.2}/setup.cfg +0 -0
@@ -8,7 +8,7 @@ class FilmMakinesi(PluginBase):
8
8
  language = "tr"
9
9
  main_url = "https://filmmakinesi.de"
10
10
  favicon = f"https://www.google.com/s2/favicons?domain={main_url}&sz=64"
11
- description = "Diziyou en kaliteli Türkçe dublaj ve altyazılı yabancı dizi izleme sitesidir. Güncel ve efsanevi dizileri 1080p Full HD kalitede izlemek için hemen tıkla!"
11
+ description = "Film Makinesi, en yeni ve en güncel filmleri sitemizde full HD kalite farkı ile izleyebilirsiniz. HD film izle denildiğinde akla gelen en kaliteli film izleme sitesi."
12
12
 
13
13
  main_page = {
14
14
  f"{main_url}/page/" : "Son Filmler",
@@ -0,0 +1,127 @@
1
+ # Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
2
+
3
+ from KekikStream.Core import kekik_cache, PluginBase, MainPageResult, SearchResult, MovieInfo
4
+ from parsel import Selector
5
+ from Kekik.Sifreleme import StringCodec
6
+ import json, re
7
+
8
+ class FullHDFilmizlesene(PluginBase):
9
+ name = "FullHDFilmizlesene"
10
+ language = "tr"
11
+ main_url = "https://www.fullhdfilmizlesene.de"
12
+ favicon = f"https://www.google.com/s2/favicons?domain={main_url}&sz=64"
13
+ description = "Sinema zevkini evinize kadar getirdik. Türkiye'nin lider Film sitesinde, en yeni filmleri Full HD izleyin."
14
+
15
+ main_page = {
16
+ f"{main_url}/en-cok-izlenen-filmler-izle-hd/" : "En Çok izlenen Filmler",
17
+ f"{main_url}/filmizle/imdb-puani-yuksek-filmler-izle-1/" : "IMDB Puanı Yüksek Filmler",
18
+ f"{main_url}/filmizle/aile-filmleri-izle-2/" : "Aile Filmleri",
19
+ f"{main_url}/filmizle/aksiyon-filmler-izle-1/" : "Aksiyon Filmleri",
20
+ f"{main_url}/filmizle/animasyon-filmleri-izle-4/" : "Animasyon Filmleri",
21
+ f"{main_url}/filmizle/belgesel-filmleri-izle-2/" : "Belgeseller",
22
+ f"{main_url}/filmizle/bilim-kurgu-filmleri-izle-1/" : "Bilim Kurgu Filmleri",
23
+ f"{main_url}/filmizle/bluray-filmler-izle-1/" : "Blu Ray Filmler",
24
+ f"{main_url}/filmizle/cizgi-filmler-izle-1/" : "Çizgi Filmler",
25
+ f"{main_url}/filmizle/dram-filmleri-izle/" : "Dram Filmleri",
26
+ f"{main_url}/filmizle/fantastik-filmleri-izle-2/" : "Fantastik Filmler",
27
+ f"{main_url}/filmizle/gerilim-filmleri-izle-3/" : "Gerilim Filmleri",
28
+ f"{main_url}/filmizle/gizem-filmleri-izle/" : "Gizem Filmleri",
29
+ f"{main_url}/filmizle/hint-filmler-fh-hd-izle/" : "Hint Filmleri",
30
+ f"{main_url}/filmizle/komedi-filmleri-izle-2/" : "Komedi Filmleri",
31
+ f"{main_url}/filmizle/korku-filmleri-izle-2/" : "Korku Filmleri",
32
+ f"{main_url}/filmizle/macera-filmleri-izle-1/" : "Macera Filmleri",
33
+ f"{main_url}/filmizle/muzikal-filmleri-izle/" : "Müzikal Filmler",
34
+ f"{main_url}/filmizle/polisiye-filmleri-izle-1/" : "Polisiye Filmleri",
35
+ f"{main_url}/filmizle/psikolojik-filmleri-izle/" : "Psikolojik Filmler",
36
+ f"{main_url}/filmizle/romantik-filmler-izle-1/" : "Romantik Filmler",
37
+ f"{main_url}/filmizle/savas-filmleri-izle-2/" : "Savaş Filmleri",
38
+ f"{main_url}/filmizle/suc-filmleri-izle-3/" : "Suç Filmleri",
39
+ f"{main_url}/filmizle/tarih-filmleri-izle/" : "Tarih Filmleri",
40
+ f"{main_url}/filmizle/western-filmleri-izle/" : "Western Filmler",
41
+ f"{main_url}/filmizle/yerli-filmler-izle-3/" : "Yerli Filmler",
42
+ }
43
+
44
+ @kekik_cache(ttl=60*60)
45
+ async def get_main_page(self, page: int, url: str, category: str) -> list[MainPageResult]:
46
+ istek = self.cloudscraper.get(f"{url}{page}")
47
+ secici = Selector(istek.text)
48
+
49
+ return [
50
+ MainPageResult(
51
+ category = category,
52
+ title = veri.css("span.film-title::text").get(),
53
+ url = self.fix_url(veri.css("a::attr(href)").get()),
54
+ poster = self.fix_url(veri.css("img::attr(data-src)").get()),
55
+ )
56
+ for veri in secici.css("li.film")
57
+ ]
58
+
59
+ @kekik_cache(ttl=60*60)
60
+ async def search(self, query: str) -> list[SearchResult]:
61
+ istek = await self.httpx.get(f"{self.main_url}/arama/{query}")
62
+ secici = Selector(istek.text)
63
+
64
+ results = []
65
+ for film in secici.css("li.film"):
66
+ title = film.css("span.film-title::text").get()
67
+ href = film.css("a::attr(href)").get()
68
+ poster = film.css("img::attr(data-src)").get()
69
+
70
+ if title and href:
71
+ results.append(
72
+ SearchResult(
73
+ title = title.strip(),
74
+ url = self.fix_url(href.strip()),
75
+ poster = self.fix_url(poster.strip()) if poster else None,
76
+ )
77
+ )
78
+
79
+ return results
80
+
81
+ @kekik_cache(ttl=60*60)
82
+ async def load_item(self, url: str) -> MovieInfo:
83
+ istek = await self.httpx.get(url)
84
+ secici = Selector(istek.text)
85
+
86
+ title = secici.xpath("normalize-space(//div[@class='izle-titles'])").get().strip()
87
+ poster = secici.css("div img::attr(data-src)").get().strip()
88
+ description = secici.css("div.ozet-ic p::text").get().strip()
89
+ tags = secici.css("a[rel='category tag']::text").getall()
90
+ rating = secici.xpath("normalize-space(//div[@class='puanx-puan'])").get().split()[-1]
91
+ year = secici.css("div.dd a.category::text").get().strip().split()[0]
92
+ actors = secici.css("div.film-info ul li:nth-child(2) a > span::text").getall()
93
+ duration = secici.css("span.sure::text").get("0 Dakika").split()[0]
94
+
95
+ return MovieInfo(
96
+ url = url,
97
+ poster = self.fix_url(poster),
98
+ title = title,
99
+ description = description,
100
+ tags = tags,
101
+ rating = rating,
102
+ year = year,
103
+ actors = actors,
104
+ duration = duration
105
+ )
106
+
107
+ @kekik_cache(ttl=15*60)
108
+ async def load_links(self, url: str) -> list[str]:
109
+ istek = await self.httpx.get(url)
110
+ secici = Selector(istek.text)
111
+
112
+ script = secici.xpath("(//script)[1]").get()
113
+ scx_data = json.loads(re.findall(r"scx = (.*?);", script)[0])
114
+ scx_keys = list(scx_data.keys())
115
+
116
+ link_list = []
117
+ for key in scx_keys:
118
+ t = scx_data[key]["sx"]["t"]
119
+ if isinstance(t, list):
120
+ link_list.extend(StringCodec.decode(elem) for elem in t)
121
+ if isinstance(t, dict):
122
+ link_list.extend(StringCodec.decode(v) for k, v in t.items())
123
+
124
+ return [
125
+ f"https:{link}" if link.startswith("//") else link
126
+ for link in link_list
127
+ ]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: KekikStream
3
- Version: 1.3.1
3
+ Version: 1.3.2
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.2
2
2
  Name: KekikStream
3
- Version: 1.3.1
3
+ Version: 1.3.2
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 = "1.3.1",
9
+ version = "1.3.2",
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"],
@@ -1,80 +0,0 @@
1
- # Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
2
-
3
- from KekikStream.Core import kekik_cache, PluginBase, SearchResult, MovieInfo
4
- from parsel import Selector
5
- from Kekik.Sifreleme import StringCodec
6
- import json, re
7
-
8
- class FullHDFilmizlesene(PluginBase):
9
- name = "FullHDFilmizlesene"
10
- main_url = "https://www.fullhdfilmizlesene.de"
11
-
12
- @kekik_cache(ttl=60*60)
13
- async def search(self, query: str) -> list[SearchResult]:
14
- istek = await self.httpx.get(f"{self.main_url}/arama/{query}")
15
- secici = Selector(istek.text)
16
-
17
- results = []
18
- for film in secici.css("li.film"):
19
- title = film.css("span.film-title::text").get()
20
- href = film.css("a::attr(href)").get()
21
- poster = film.css("img::attr(data-src)").get()
22
-
23
- if title and href:
24
- results.append(
25
- SearchResult(
26
- title = title.strip(),
27
- url = self.fix_url(href.strip()),
28
- poster = self.fix_url(poster.strip()) if poster else None,
29
- )
30
- )
31
-
32
- return results
33
-
34
- @kekik_cache(ttl=60*60)
35
- async def load_item(self, url: str) -> MovieInfo:
36
- istek = await self.httpx.get(url)
37
- secici = Selector(istek.text)
38
-
39
- title = secici.xpath("normalize-space(//div[@class='izle-titles'])").get().strip()
40
- poster = secici.css("div img::attr(data-src)").get().strip()
41
- description = secici.css("div.ozet-ic p::text").get().strip()
42
- tags = secici.css("a[rel='category tag']::text").getall()
43
- rating = secici.xpath("normalize-space(//div[@class='puanx-puan'])").get().split()[-1]
44
- year = secici.css("div.dd a.category::text").get().strip().split()[0]
45
- actors = secici.css("div.film-info ul li:nth-child(2) a > span::text").getall()
46
- duration = secici.css("span.sure::text").get("0 Dakika").split()[0]
47
-
48
- return MovieInfo(
49
- url = url,
50
- poster = self.fix_url(poster),
51
- title = title,
52
- description = description,
53
- tags = tags,
54
- rating = rating,
55
- year = year,
56
- actors = actors,
57
- duration = duration
58
- )
59
-
60
- @kekik_cache(ttl=15*60)
61
- async def load_links(self, url: str) -> list[str]:
62
- istek = await self.httpx.get(url)
63
- secici = Selector(istek.text)
64
-
65
- script = secici.xpath("(//script)[1]").get()
66
- scx_data = json.loads(re.findall(r"scx = (.*?);", script)[0])
67
- scx_keys = list(scx_data.keys())
68
-
69
- link_list = []
70
- for key in scx_keys:
71
- t = scx_data[key]["sx"]["t"]
72
- if isinstance(t, list):
73
- link_list.extend(StringCodec.decode(elem) for elem in t)
74
- if isinstance(t, dict):
75
- link_list.extend(StringCodec.decode(v) for k, v in t.items())
76
-
77
- return [
78
- f"https:{link}" if link.startswith("//") else link
79
- for link in link_list
80
- ]
File without changes
File without changes
File without changes
File without changes