KekikStream 1.6.9__tar.gz → 1.7.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.
- kekikstream-1.7.1/KekikStream/Plugins/FilmModu.py +138 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream.egg-info/PKG-INFO +1 -1
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream.egg-info/SOURCES.txt +1 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/PKG-INFO +1 -1
- {kekikstream-1.6.9 → kekikstream-1.7.1}/setup.py +1 -1
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/CLI/__init__.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/CLI/pypi_kontrol.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Core/Extractor/ExtractorBase.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Core/Extractor/ExtractorLoader.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Core/Extractor/ExtractorManager.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Core/Extractor/ExtractorModels.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Core/Media/MediaHandler.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Core/Media/MediaManager.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Core/Plugin/PluginBase.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Core/Plugin/PluginLoader.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Core/Plugin/PluginManager.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Core/Plugin/PluginModels.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Core/UI/UIManager.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Core/__init__.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Extractors/CloseLoad.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Extractors/ContentX.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Extractors/FourCX.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Extractors/FourPichive.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Extractors/FourPlayRu.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Extractors/HDStreamAble.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Extractors/Hotlinger.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Extractors/MailRu.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Extractors/MixPlayHD.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Extractors/MolyStream.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Extractors/Odnoklassniki.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Extractors/OkRuHTTP.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Extractors/OkRuSSL.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Extractors/PeaceMakerst.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Extractors/Pichive.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Extractors/PixelDrain.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Extractors/PlayRu.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Extractors/RapidVid.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Extractors/SibNet.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Extractors/Sobreatsesuyp.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Extractors/TRsTX.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Extractors/TauVideo.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Extractors/TurboImgz.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Extractors/VidMoly.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Extractors/VidMolyMe.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Extractors/VidMoxy.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Extractors/VideoSeyred.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Plugins/DiziBox.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Plugins/DiziPal.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Plugins/DiziYou.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Plugins/Dizilla.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Plugins/FilmMakinesi.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Plugins/FullHDFilmizlesene.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Plugins/HDFilmCehennemi.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Plugins/JetFilmizle.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Plugins/RecTV.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Plugins/SezonlukDizi.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Plugins/SineWix.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/Plugins/UgurFilm.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/__init__.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/__main__.py +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream/requirements.txt +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream.egg-info/dependency_links.txt +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream.egg-info/entry_points.txt +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream.egg-info/requires.txt +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/KekikStream.egg-info/top_level.txt +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/LICENSE +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/MANIFEST.in +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/README.md +0 -0
- {kekikstream-1.6.9 → kekikstream-1.7.1}/setup.cfg +0 -0
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
|
2
|
+
|
|
3
|
+
from KekikStream.Core import PluginBase, MainPageResult, SearchResult, MovieInfo, ExtractResult, Subtitle
|
|
4
|
+
from parsel import Selector
|
|
5
|
+
import re
|
|
6
|
+
|
|
7
|
+
class FilmModu(PluginBase):
|
|
8
|
+
name = "FilmModu"
|
|
9
|
+
language = "tr"
|
|
10
|
+
main_url = "https://www.filmmodu.ws"
|
|
11
|
+
favicon = f"https://www.google.com/s2/favicons?domain={main_url}&sz=64"
|
|
12
|
+
description = "HD Film izle, Türkçe Dublaj ve Altyazılı filmler."
|
|
13
|
+
|
|
14
|
+
main_page = {
|
|
15
|
+
f"{main_url}/hd-film-kategori/4k-film-izle?page=SAYFA" : "4K",
|
|
16
|
+
f"{main_url}/hd-film-kategori/aile-filmleri?page=SAYFA" : "Aile",
|
|
17
|
+
f"{main_url}/hd-film-kategori/aksiyon?page=SAYFA" : "Aksiyon",
|
|
18
|
+
f"{main_url}/hd-film-kategori/animasyon?page=SAYFA" : "Animasyon",
|
|
19
|
+
f"{main_url}/hd-film-kategori/belgeseller?page=SAYFA" : "Belgesel",
|
|
20
|
+
f"{main_url}/hd-film-kategori/bilim-kurgu-filmleri?page=SAYFA" : "Bilim-Kurgu",
|
|
21
|
+
f"{main_url}/hd-film-kategori/dram-filmleri?page=SAYFA" : "Dram",
|
|
22
|
+
f"{main_url}/hd-film-kategori/fantastik-filmler?page=SAYFA" : "Fantastik",
|
|
23
|
+
f"{main_url}/hd-film-kategori/gerilim?page=SAYFA" : "Gerilim",
|
|
24
|
+
f"{main_url}/hd-film-kategori/gizem-filmleri?page=SAYFA" : "Gizem",
|
|
25
|
+
f"{main_url}/hd-film-kategori/hd-hint-filmleri?page=SAYFA" : "Hint Filmleri",
|
|
26
|
+
f"{main_url}/hd-film-kategori/kisa-film?page=SAYFA" : "Kısa Film",
|
|
27
|
+
f"{main_url}/hd-film-kategori/hd-komedi-filmleri?page=SAYFA" : "Komedi",
|
|
28
|
+
f"{main_url}/hd-film-kategori/korku-filmleri?page=SAYFA" : "Korku",
|
|
29
|
+
f"{main_url}/hd-film-kategori/kult-filmler-izle?page=SAYFA" : "Kült Filmler",
|
|
30
|
+
f"{main_url}/hd-film-kategori/macera-filmleri?page=SAYFA" : "Macera",
|
|
31
|
+
f"{main_url}/hd-film-kategori/muzik?page=SAYFA" : "Müzik",
|
|
32
|
+
f"{main_url}/hd-film-kategori/odullu-filmler-izle?page=SAYFA" : "Oscar Ödüllü",
|
|
33
|
+
f"{main_url}/hd-film-kategori/romantik-filmler?page=SAYFA" : "Romantik",
|
|
34
|
+
f"{main_url}/hd-film-kategori/savas?page=SAYFA" : "Savaş",
|
|
35
|
+
f"{main_url}/hd-film-kategori/stand-up?page=SAYFA" : "Stand Up",
|
|
36
|
+
f"{main_url}/hd-film-kategori/suc-filmleri?page=SAYFA" : "Suç",
|
|
37
|
+
f"{main_url}/hd-film-kategori/tarih?page=SAYFA" : "Tarih",
|
|
38
|
+
f"{main_url}/hd-film-kategori/tavsiye-filmler?page=SAYFA" : "Tavsiye",
|
|
39
|
+
f"{main_url}/hd-film-kategori/tv-film?page=SAYFA" : "TV Film",
|
|
40
|
+
f"{main_url}/hd-film-kategori/vahsi-bati-filmleri?page=SAYFA" : "Vahşi Batı",
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
async def get_main_page(self, page: int, url: str, category: str) -> list[MainPageResult]:
|
|
44
|
+
istek = await self.cffi.get(url.replace("SAYFA", str(page)))
|
|
45
|
+
secici = Selector(istek.text)
|
|
46
|
+
|
|
47
|
+
return [
|
|
48
|
+
MainPageResult(
|
|
49
|
+
category = category,
|
|
50
|
+
title = veri.css("a::text").get(),
|
|
51
|
+
url = self.fix_url(veri.css("a::attr(href)").get()),
|
|
52
|
+
poster = self.fix_url(veri.css("picture img::attr(data-src)").get()),
|
|
53
|
+
)
|
|
54
|
+
for veri in secici.css("div.movie")
|
|
55
|
+
if veri.css("a::text").get()
|
|
56
|
+
]
|
|
57
|
+
|
|
58
|
+
async def search(self, query: str) -> list[SearchResult]:
|
|
59
|
+
istek = await self.cffi.get(f"{self.main_url}/film-ara?term={query}")
|
|
60
|
+
secici = Selector(istek.text)
|
|
61
|
+
|
|
62
|
+
return [
|
|
63
|
+
SearchResult(
|
|
64
|
+
title = veri.css("a::text").get(),
|
|
65
|
+
url = self.fix_url(veri.css("a::attr(href)").get()),
|
|
66
|
+
poster = self.fix_url(veri.css("picture img::attr(data-src)").get()),
|
|
67
|
+
)
|
|
68
|
+
for veri in secici.css("div.movie")
|
|
69
|
+
if veri.css("a::text").get()
|
|
70
|
+
]
|
|
71
|
+
|
|
72
|
+
async def load_item(self, url: str) -> MovieInfo:
|
|
73
|
+
istek = await self.cffi.get(url)
|
|
74
|
+
secici = Selector(istek.text)
|
|
75
|
+
|
|
76
|
+
org_title = secici.css("div.titles h1::text").get()
|
|
77
|
+
alt_title = secici.css("div.titles h2::text").get()
|
|
78
|
+
title = f"{org_title} - {alt_title}" if alt_title else org_title
|
|
79
|
+
|
|
80
|
+
return MovieInfo(
|
|
81
|
+
url = url,
|
|
82
|
+
poster = self.fix_url(secici.css("img.img-responsive::attr(src)").get()),
|
|
83
|
+
title = title,
|
|
84
|
+
description = secici.css("p[itemprop='description']::text").get(),
|
|
85
|
+
tags = [a.css("::text").get() for a in secici.css("a[href*='film-tur/']")],
|
|
86
|
+
year = secici.css("span[itemprop='dateCreated']::text").get(),
|
|
87
|
+
actors = [a.css("span::text").get() for a in secici.css("a[itemprop='actor']")],
|
|
88
|
+
)
|
|
89
|
+
|
|
90
|
+
async def load_links(self, url: str) -> list[dict]:
|
|
91
|
+
istek = await self.cffi.get(url)
|
|
92
|
+
secici = Selector(istek.text)
|
|
93
|
+
|
|
94
|
+
results = []
|
|
95
|
+
|
|
96
|
+
for alternatif in secici.css("div.alternates a"):
|
|
97
|
+
alt_link = self.fix_url(alternatif.css("::attr(href)").get())
|
|
98
|
+
alt_name = alternatif.css("::text").get()
|
|
99
|
+
|
|
100
|
+
if alt_name == "Fragman" or not alt_link:
|
|
101
|
+
continue
|
|
102
|
+
|
|
103
|
+
alt_istek = await self.cffi.get(alt_link)
|
|
104
|
+
alt_text = alt_istek.text
|
|
105
|
+
|
|
106
|
+
vid_id = re.search(r"var videoId = '(.*)'", alt_text)
|
|
107
|
+
vid_type = re.search(r"var videoType = '(.*)'", alt_text)
|
|
108
|
+
|
|
109
|
+
if not vid_id or not vid_type:
|
|
110
|
+
continue
|
|
111
|
+
|
|
112
|
+
source_istek = await self.cffi.get(
|
|
113
|
+
f"{self.main_url}/get-source?movie_id={vid_id[1]}&type={vid_type[1]}"
|
|
114
|
+
)
|
|
115
|
+
source_data = source_istek.json()
|
|
116
|
+
|
|
117
|
+
if source_data.get("subtitle"):
|
|
118
|
+
subtitle_url = self.fix_url(source_data["subtitle"])
|
|
119
|
+
else:
|
|
120
|
+
subtitle_url = None
|
|
121
|
+
|
|
122
|
+
for source in source_data.get("sources", []):
|
|
123
|
+
results.append({
|
|
124
|
+
"name" : f"{self.name} | {alt_name} | {source.get('label', 'Bilinmiyor')}",
|
|
125
|
+
"url" : self.fix_url(source["src"]),
|
|
126
|
+
"referer" : f"{self.main_url}/",
|
|
127
|
+
"subtitles" : [Subtitle(name="Türkçe", url=subtitle_url)] if subtitle_url else []
|
|
128
|
+
})
|
|
129
|
+
|
|
130
|
+
return results
|
|
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
|
|
135
|
+
if self.name not in self.media_handler.title:
|
|
136
|
+
self.media_handler.title = f"{self.name} | {self.media_handler.title}"
|
|
137
|
+
|
|
138
|
+
self.media_handler.play_media(extract_result)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: KekikStream
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.7.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
|
|
@@ -57,6 +57,7 @@ KekikStream/Plugins/DiziPal.py
|
|
|
57
57
|
KekikStream/Plugins/DiziYou.py
|
|
58
58
|
KekikStream/Plugins/Dizilla.py
|
|
59
59
|
KekikStream/Plugins/FilmMakinesi.py
|
|
60
|
+
KekikStream/Plugins/FilmModu.py
|
|
60
61
|
KekikStream/Plugins/FullHDFilmizlesene.py
|
|
61
62
|
KekikStream/Plugins/HDFilmCehennemi.py
|
|
62
63
|
KekikStream/Plugins/JetFilmizle.py
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: KekikStream
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.7.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 = "1.
|
|
9
|
+
version = "1.7.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|