KekikStream 1.2.9__py3-none-any.whl → 1.3.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.
- KekikStream/Core/__init__.py +2 -0
- KekikStream/Plugins/DiziBox.py +7 -7
- KekikStream/Plugins/DiziYou.py +4 -1
- KekikStream/Plugins/Dizilla.py +6 -1
- KekikStream/Plugins/FilmMakinesi.py +4 -1
- KekikStream/Plugins/FullHDFilmizlesene.py +4 -2
- KekikStream/Plugins/HDFilmCehennemi.py +4 -1
- KekikStream/Plugins/JetFilmizle.py +4 -1
- KekikStream/Plugins/RecTV.py +4 -3
- KekikStream/Plugins/SezonlukDizi.py +4 -1
- KekikStream/Plugins/Shorten.py +4 -2
- KekikStream/Plugins/SineWix.py +5 -1
- KekikStream/Plugins/UgurFilm.py +4 -1
- {kekikstream-1.2.9.dist-info → kekikstream-1.3.0.dist-info}/METADATA +1 -1
- {kekikstream-1.2.9.dist-info → kekikstream-1.3.0.dist-info}/RECORD +19 -19
- {kekikstream-1.2.9.dist-info → kekikstream-1.3.0.dist-info}/WHEEL +1 -1
- {kekikstream-1.2.9.dist-info → kekikstream-1.3.0.dist-info}/LICENSE +0 -0
- {kekikstream-1.2.9.dist-info → kekikstream-1.3.0.dist-info}/entry_points.txt +0 -0
- {kekikstream-1.2.9.dist-info → kekikstream-1.3.0.dist-info}/top_level.txt +0 -0
KekikStream/Core/__init__.py
CHANGED
KekikStream/Plugins/DiziBox.py
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
2
2
|
|
3
|
-
from KekikStream.Core import PluginBase, MainPageResult, SearchResult, SeriesInfo, Episode
|
3
|
+
from KekikStream.Core import kekik_cache, PluginBase, MainPageResult, SearchResult, SeriesInfo, Episode
|
4
4
|
from Kekik.Sifreleme import CryptoJS
|
5
5
|
from parsel import Selector
|
6
6
|
import re, urllib.parse, base64, contextlib, asyncio
|
@@ -40,14 +40,10 @@ class DiziBox(PluginBase):
|
|
40
40
|
f"{main_url}/dizi-arsivi/page/SAYFA/?tur[0]=yarisma&yil&imdb" : "Yarışma"
|
41
41
|
}
|
42
42
|
|
43
|
+
@kekik_cache(ttl=60*60)
|
43
44
|
async def get_main_page(self, page: int, url: str, category: str) -> list[MainPageResult]:
|
44
45
|
istek = await self.httpx.get(
|
45
|
-
url
|
46
|
-
cookies = {
|
47
|
-
"LockUser" : "true",
|
48
|
-
"isTrustedUser" : "true",
|
49
|
-
"dbxu" : "1722403730363"
|
50
|
-
},
|
46
|
+
url = f"{url.replace('SAYFA', str(page))}",
|
51
47
|
follow_redirects = True
|
52
48
|
)
|
53
49
|
secici = Selector(istek.text)
|
@@ -62,6 +58,7 @@ class DiziBox(PluginBase):
|
|
62
58
|
for veri in secici.css("article.detailed-article")
|
63
59
|
]
|
64
60
|
|
61
|
+
@kekik_cache(ttl=60*60)
|
65
62
|
async def search(self, query: str) -> list[SearchResult]:
|
66
63
|
self.httpx.cookies.update({
|
67
64
|
"LockUser" : "true",
|
@@ -80,6 +77,7 @@ class DiziBox(PluginBase):
|
|
80
77
|
for item in secici.css("article.detailed-article")
|
81
78
|
]
|
82
79
|
|
80
|
+
@kekik_cache(ttl=60*60)
|
83
81
|
async def load_item(self, url: str) -> SeriesInfo:
|
84
82
|
istek = await self.httpx.get(url)
|
85
83
|
secici = Selector(istek.text)
|
@@ -126,6 +124,7 @@ class DiziBox(PluginBase):
|
|
126
124
|
actors = actors,
|
127
125
|
)
|
128
126
|
|
127
|
+
@kekik_cache(ttl=60*60)
|
129
128
|
async def _iframe_decode(self, name:str, iframe_link:str, referer:str) -> list[str]:
|
130
129
|
results = []
|
131
130
|
|
@@ -172,6 +171,7 @@ class DiziBox(PluginBase):
|
|
172
171
|
|
173
172
|
return results
|
174
173
|
|
174
|
+
@kekik_cache(ttl=15*60)
|
175
175
|
async def load_links(self, url: str) -> list[str]:
|
176
176
|
istek = await self.httpx.get(url)
|
177
177
|
secici = Selector(istek.text)
|
KekikStream/Plugins/DiziYou.py
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
2
2
|
|
3
|
-
from KekikStream.Core import PluginBase, SearchResult, SeriesInfo, Episode, Subtitle, ExtractResult
|
3
|
+
from KekikStream.Core import kekik_cache, PluginBase, SearchResult, SeriesInfo, Episode, Subtitle, ExtractResult
|
4
4
|
from parsel import Selector
|
5
5
|
import re
|
6
6
|
|
@@ -8,6 +8,7 @@ class DiziYou(PluginBase):
|
|
8
8
|
name = "DiziYou"
|
9
9
|
main_url = "https://www.diziyou1.com"
|
10
10
|
|
11
|
+
@kekik_cache(ttl=60*60)
|
11
12
|
async def search(self, query: str) -> list[SearchResult]:
|
12
13
|
istek = await self.httpx.get(f"{self.main_url}/?s={query}")
|
13
14
|
secici = Selector(istek.text)
|
@@ -21,6 +22,7 @@ class DiziYou(PluginBase):
|
|
21
22
|
for afis in secici.css("div.incontent div#list-series")
|
22
23
|
]
|
23
24
|
|
25
|
+
@kekik_cache(ttl=60*60)
|
24
26
|
async def load_item(self, url: str) -> SeriesInfo:
|
25
27
|
istek = await self.httpx.get(url)
|
26
28
|
secici = Selector(istek.text)
|
@@ -67,6 +69,7 @@ class DiziYou(PluginBase):
|
|
67
69
|
actors = actors
|
68
70
|
)
|
69
71
|
|
72
|
+
@kekik_cache(ttl=15*60)
|
70
73
|
async def load_links(self, url: str) -> list[str]:
|
71
74
|
istek = await self.httpx.get(url)
|
72
75
|
secici = Selector(istek.text)
|
KekikStream/Plugins/Dizilla.py
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
2
2
|
|
3
|
-
from KekikStream.Core import PluginBase, MainPageResult, SearchResult, SeriesInfo, Episode
|
3
|
+
from KekikStream.Core import kekik_cache, PluginBase, MainPageResult, SearchResult, SeriesInfo, Episode
|
4
4
|
from parsel import Selector
|
5
5
|
from json import loads
|
6
6
|
from urllib.parse import urlparse, urlunparse
|
@@ -22,6 +22,7 @@ class Dizilla(PluginBase):
|
|
22
22
|
f"{main_url}/dizi-turu/komedi" : "Komedi"
|
23
23
|
}
|
24
24
|
|
25
|
+
@kekik_cache(ttl=60*60)
|
25
26
|
async def get_main_page(self, page: int, url: str, category: str) -> list[MainPageResult]:
|
26
27
|
istek = await self.httpx.get(url)
|
27
28
|
secici = Selector(istek.text)
|
@@ -64,6 +65,7 @@ class Dizilla(PluginBase):
|
|
64
65
|
|
65
66
|
return ana_sayfa
|
66
67
|
|
68
|
+
@kekik_cache(ttl=60*60)
|
67
69
|
async def search(self, query: str) -> list[SearchResult]:
|
68
70
|
ilk_istek = await self.httpx.get(self.main_url)
|
69
71
|
ilk_secici = Selector(ilk_istek.text)
|
@@ -99,6 +101,7 @@ class Dizilla(PluginBase):
|
|
99
101
|
for veri in arama_veri
|
100
102
|
]
|
101
103
|
|
104
|
+
@kekik_cache(ttl=60*60)
|
102
105
|
async def url_base_degis(self, eski_url:str, yeni_base:str) -> str:
|
103
106
|
parsed_url = urlparse(eski_url)
|
104
107
|
parsed_yeni_base = urlparse(yeni_base)
|
@@ -109,6 +112,7 @@ class Dizilla(PluginBase):
|
|
109
112
|
|
110
113
|
return urlunparse(yeni_url)
|
111
114
|
|
115
|
+
@kekik_cache(ttl=60*60)
|
112
116
|
async def load_item(self, url: str) -> SeriesInfo:
|
113
117
|
istek = await self.httpx.get(url)
|
114
118
|
secici = Selector(istek.text)
|
@@ -148,6 +152,7 @@ class Dizilla(PluginBase):
|
|
148
152
|
actors = actors
|
149
153
|
)
|
150
154
|
|
155
|
+
@kekik_cache(ttl=15*60)
|
151
156
|
async def load_links(self, url: str) -> list[str]:
|
152
157
|
istek = await self.httpx.get(url)
|
153
158
|
secici = Selector(istek.text)
|
@@ -1,12 +1,13 @@
|
|
1
1
|
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
2
2
|
|
3
|
-
from KekikStream.Core import PluginBase, SearchResult, MovieInfo
|
3
|
+
from KekikStream.Core import kekik_cache, PluginBase, SearchResult, MovieInfo
|
4
4
|
from parsel import Selector
|
5
5
|
|
6
6
|
class FilmMakinesi(PluginBase):
|
7
7
|
name = "FilmMakinesi"
|
8
8
|
main_url = "https://filmmakinesi.de"
|
9
9
|
|
10
|
+
@kekik_cache(ttl=60*60)
|
10
11
|
async def search(self, query: str) -> list[SearchResult]:
|
11
12
|
istek = await self.httpx.get(f"{self.main_url}/?s={query}")
|
12
13
|
secici = Selector(istek.text)
|
@@ -28,6 +29,7 @@ class FilmMakinesi(PluginBase):
|
|
28
29
|
|
29
30
|
return results
|
30
31
|
|
32
|
+
@kekik_cache(ttl=60*60)
|
31
33
|
async def load_item(self, url: str) -> MovieInfo:
|
32
34
|
istek = await self.httpx.get(url)
|
33
35
|
secici = Selector(istek.text)
|
@@ -57,6 +59,7 @@ class FilmMakinesi(PluginBase):
|
|
57
59
|
duration = duration_minutes
|
58
60
|
)
|
59
61
|
|
62
|
+
@kekik_cache(ttl=15*60)
|
60
63
|
async def load_links(self, url: str) -> list[str]:
|
61
64
|
istek = await self.httpx.get(url)
|
62
65
|
secici = Selector(istek.text)
|
@@ -1,7 +1,6 @@
|
|
1
1
|
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
2
2
|
|
3
|
-
from KekikStream.
|
4
|
-
from KekikStream.Core import PluginBase, SearchResult, MovieInfo
|
3
|
+
from KekikStream.Core import kekik_cache, PluginBase, SearchResult, MovieInfo
|
5
4
|
from parsel import Selector
|
6
5
|
from Kekik.Sifreleme import StringCodec
|
7
6
|
import json, re
|
@@ -10,6 +9,7 @@ class FullHDFilmizlesene(PluginBase):
|
|
10
9
|
name = "FullHDFilmizlesene"
|
11
10
|
main_url = "https://www.fullhdfilmizlesene.de"
|
12
11
|
|
12
|
+
@kekik_cache(ttl=60*60)
|
13
13
|
async def search(self, query: str) -> list[SearchResult]:
|
14
14
|
istek = await self.httpx.get(f"{self.main_url}/arama/{query}")
|
15
15
|
secici = Selector(istek.text)
|
@@ -31,6 +31,7 @@ class FullHDFilmizlesene(PluginBase):
|
|
31
31
|
|
32
32
|
return results
|
33
33
|
|
34
|
+
@kekik_cache(ttl=60*60)
|
34
35
|
async def load_item(self, url: str) -> MovieInfo:
|
35
36
|
istek = await self.httpx.get(url)
|
36
37
|
secici = Selector(istek.text)
|
@@ -56,6 +57,7 @@ class FullHDFilmizlesene(PluginBase):
|
|
56
57
|
duration = duration
|
57
58
|
)
|
58
59
|
|
60
|
+
@kekik_cache(ttl=15*60)
|
59
61
|
async def load_links(self, url: str) -> list[str]:
|
60
62
|
istek = await self.httpx.get(url)
|
61
63
|
secici = Selector(istek.text)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
2
2
|
|
3
|
-
from KekikStream.Core import PluginBase, SearchResult, MovieInfo, ExtractResult, Subtitle
|
3
|
+
from KekikStream.Core import kekik_cache, PluginBase, SearchResult, MovieInfo, ExtractResult, Subtitle
|
4
4
|
from parsel import Selector
|
5
5
|
import random, string
|
6
6
|
|
@@ -8,6 +8,7 @@ class HDFilmCehennemi(PluginBase):
|
|
8
8
|
name = "HDFilmCehennemi"
|
9
9
|
main_url = "https://www.hdfilmcehennemi.nl"
|
10
10
|
|
11
|
+
@kekik_cache(ttl=60*60)
|
11
12
|
async def search(self, query: str) -> list[SearchResult]:
|
12
13
|
istek = await self.httpx.get(
|
13
14
|
url = f"{self.main_url}/search?q={query}",
|
@@ -36,6 +37,7 @@ class HDFilmCehennemi(PluginBase):
|
|
36
37
|
|
37
38
|
return results
|
38
39
|
|
40
|
+
@kekik_cache(ttl=60*60)
|
39
41
|
async def load_item(self, url: str) -> MovieInfo:
|
40
42
|
istek = await self.httpx.get(url, headers = {"Referer": f"{self.main_url}/"})
|
41
43
|
secici = Selector(istek.text)
|
@@ -70,6 +72,7 @@ class HDFilmCehennemi(PluginBase):
|
|
70
72
|
def generate_random_cookie(self):
|
71
73
|
return "".join(random.choices(string.ascii_letters + string.digits, k=16))
|
72
74
|
|
75
|
+
@kekik_cache(ttl=15*60)
|
73
76
|
async def load_links(self, url: str) -> list[str]:
|
74
77
|
self._data.clear()
|
75
78
|
|
@@ -1,12 +1,13 @@
|
|
1
1
|
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
2
2
|
|
3
|
-
from KekikStream.Core import PluginBase, SearchResult, MovieInfo
|
3
|
+
from KekikStream.Core import kekik_cache, PluginBase, SearchResult, MovieInfo
|
4
4
|
from parsel import Selector
|
5
5
|
|
6
6
|
class JetFilmizle(PluginBase):
|
7
7
|
name = "JetFilmizle"
|
8
8
|
main_url = "https://jetfilmizle.io"
|
9
9
|
|
10
|
+
@kekik_cache(ttl=60*60)
|
10
11
|
async def search(self, query: str) -> list[SearchResult]:
|
11
12
|
istek = await self.httpx.post(
|
12
13
|
url = f"{self.main_url}/filmara.php",
|
@@ -32,6 +33,7 @@ class JetFilmizle(PluginBase):
|
|
32
33
|
|
33
34
|
return results
|
34
35
|
|
36
|
+
@kekik_cache(ttl=60*60)
|
35
37
|
async def load_item(self, url: str) -> MovieInfo:
|
36
38
|
istek = await self.httpx.get(url)
|
37
39
|
secici = Selector(istek.text)
|
@@ -55,6 +57,7 @@ class JetFilmizle(PluginBase):
|
|
55
57
|
actors = actors
|
56
58
|
)
|
57
59
|
|
60
|
+
@kekik_cache(ttl=15*60)
|
58
61
|
async def load_links(self, url: str) -> list[str]:
|
59
62
|
istek = await self.httpx.get(url)
|
60
63
|
secici = Selector(istek.text)
|
KekikStream/Plugins/RecTV.py
CHANGED
@@ -1,12 +1,10 @@
|
|
1
1
|
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
2
2
|
|
3
|
-
from KekikStream.
|
4
|
-
from KekikStream.Core import PluginBase, SearchResult, MovieInfo, Episode, SeriesInfo, ExtractResult, Subtitle
|
3
|
+
from KekikStream.Core import kekik_cache, PluginBase, SearchResult, MovieInfo, Episode, SeriesInfo, ExtractResult, Subtitle
|
5
4
|
from httpx import AsyncClient
|
6
5
|
from json import dumps, loads
|
7
6
|
import re
|
8
7
|
|
9
|
-
|
10
8
|
class RecTV(PluginBase):
|
11
9
|
name = "RecTV"
|
12
10
|
main_url = "https://a.prectv35.sbs"
|
@@ -15,6 +13,7 @@ class RecTV(PluginBase):
|
|
15
13
|
http2 = AsyncClient(http2=True)
|
16
14
|
http2.headers.update({"user-agent": "okhttp/4.12.0"})
|
17
15
|
|
16
|
+
kekik_cache(ttl=60*60)
|
18
17
|
async def search(self, query: str) -> list[SearchResult]:
|
19
18
|
self.media_handler.headers.update({"User-Agent": "googleusercontent"})
|
20
19
|
|
@@ -36,6 +35,7 @@ class RecTV(PluginBase):
|
|
36
35
|
for veri in tum_veri
|
37
36
|
]
|
38
37
|
|
38
|
+
kekik_cache(ttl=60*60)
|
39
39
|
async def load_item(self, url: str) -> MovieInfo:
|
40
40
|
veri = loads(url)
|
41
41
|
|
@@ -86,6 +86,7 @@ class RecTV(PluginBase):
|
|
86
86
|
actors = []
|
87
87
|
)
|
88
88
|
|
89
|
+
kekik_cache(ttl=15*60)
|
89
90
|
async def load_links(self, url: str) -> list[str]:
|
90
91
|
try:
|
91
92
|
veri = loads(url)
|
@@ -1,12 +1,13 @@
|
|
1
1
|
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
2
2
|
|
3
|
-
from KekikStream.Core import PluginBase, SearchResult, SeriesInfo, Episode
|
3
|
+
from KekikStream.Core import kekik_cache, PluginBase, SearchResult, SeriesInfo, Episode
|
4
4
|
from parsel import Selector
|
5
5
|
|
6
6
|
class SezonlukDizi(PluginBase):
|
7
7
|
name = "SezonlukDizi"
|
8
8
|
main_url = "https://sezonlukdizi6.com"
|
9
9
|
|
10
|
+
kekik_cache(ttl=60*60)
|
10
11
|
async def search(self, query: str) -> list[SearchResult]:
|
11
12
|
istek = await self.httpx.get(f"{self.main_url}/diziler.asp?adi={query}")
|
12
13
|
secici = Selector(istek.text)
|
@@ -20,6 +21,7 @@ class SezonlukDizi(PluginBase):
|
|
20
21
|
for afis in secici.css("div.afis a.column")
|
21
22
|
]
|
22
23
|
|
24
|
+
kekik_cache(ttl=60*60)
|
23
25
|
async def load_item(self, url: str) -> SeriesInfo:
|
24
26
|
istek = await self.httpx.get(url)
|
25
27
|
secici = Selector(istek.text)
|
@@ -71,6 +73,7 @@ class SezonlukDizi(PluginBase):
|
|
71
73
|
actors = actors
|
72
74
|
)
|
73
75
|
|
76
|
+
kekik_cache(ttl=15*60)
|
74
77
|
async def load_links(self, url: str) -> list[str]:
|
75
78
|
istek = await self.httpx.get(url)
|
76
79
|
secici = Selector(istek.text)
|
KekikStream/Plugins/Shorten.py
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
2
2
|
|
3
|
-
from KekikStream.Core import PluginBase, SearchResult, MovieInfo, Episode, SeriesInfo, ExtractResult, Subtitle
|
4
|
-
|
3
|
+
from KekikStream.Core import kekik_cache, PluginBase, SearchResult, MovieInfo, Episode, SeriesInfo, ExtractResult, Subtitle
|
5
4
|
from Kekik.unicode_tr import unicode_tr
|
6
5
|
import re, json, base64
|
7
6
|
|
@@ -156,6 +155,7 @@ class Shorten(PluginBase):
|
|
156
155
|
|
157
156
|
return veriler["data"]
|
158
157
|
|
158
|
+
kekik_cache(ttl=60*60)
|
159
159
|
async def search(self, query: str) -> list[SearchResult]:
|
160
160
|
veriler = await self.raw_diziler()
|
161
161
|
|
@@ -168,6 +168,7 @@ class Shorten(PluginBase):
|
|
168
168
|
for veri in veriler
|
169
169
|
]
|
170
170
|
|
171
|
+
kekik_cache(ttl=60*60)
|
171
172
|
async def load_item(self, url: str) -> MovieInfo:
|
172
173
|
veri = await self.bolumler(url)
|
173
174
|
|
@@ -204,6 +205,7 @@ class Shorten(PluginBase):
|
|
204
205
|
episodes = episodes,
|
205
206
|
)
|
206
207
|
|
208
|
+
kekik_cache(ttl=15*60)
|
207
209
|
async def load_links(self, url: str) -> list[str]:
|
208
210
|
return [url]
|
209
211
|
|
KekikStream/Plugins/SineWix.py
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
2
2
|
|
3
|
-
from KekikStream.Core import PluginBase, MainPageResult, SearchResult, MovieInfo, Episode, SeriesInfo, ExtractResult, Subtitle
|
3
|
+
from KekikStream.Core import kekik_cache, PluginBase, MainPageResult, SearchResult, MovieInfo, Episode, SeriesInfo, ExtractResult, Subtitle
|
4
4
|
|
5
5
|
class SineWix(PluginBase):
|
6
6
|
name = "SineWix"
|
@@ -34,6 +34,7 @@ class SineWix(PluginBase):
|
|
34
34
|
f"{main_url}/sinewix/movies/36" : "Tarih",
|
35
35
|
}
|
36
36
|
|
37
|
+
kekik_cache(ttl=60*60)
|
37
38
|
async def get_main_page(self, page: int, url: str, category: str) -> list[MainPageResult]:
|
38
39
|
istek = await self.httpx.get(f"{url}/{page}")
|
39
40
|
veriler = istek.json()
|
@@ -48,6 +49,7 @@ class SineWix(PluginBase):
|
|
48
49
|
for veri in veriler.get("data")
|
49
50
|
]
|
50
51
|
|
52
|
+
kekik_cache(ttl=60*60)
|
51
53
|
async def search(self, query: str) -> list[SearchResult]:
|
52
54
|
istek = await self.httpx.get(f"{self.main_url}/sinewix/search/{query}")
|
53
55
|
|
@@ -60,6 +62,7 @@ class SineWix(PluginBase):
|
|
60
62
|
for veri in istek.json().get("search")
|
61
63
|
]
|
62
64
|
|
65
|
+
kekik_cache(ttl=60*60)
|
63
66
|
async def load_item(self, url: str) -> MovieInfo | SeriesInfo:
|
64
67
|
item_type = url.split("?type=")[-1].split("&id=")[0]
|
65
68
|
item_id = url.split("&id=")[-1]
|
@@ -122,6 +125,7 @@ class SineWix(PluginBase):
|
|
122
125
|
episodes = episodes,
|
123
126
|
)
|
124
127
|
|
128
|
+
kekik_cache(ttl=15*60)
|
125
129
|
async def load_links(self, url: str) -> list[str]:
|
126
130
|
if not url.startswith(self.main_url):
|
127
131
|
return [url]
|
KekikStream/Plugins/UgurFilm.py
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
|
2
2
|
|
3
|
-
from KekikStream.Core import PluginBase, SearchResult, MovieInfo
|
3
|
+
from KekikStream.Core import kekik_cache, PluginBase, SearchResult, MovieInfo
|
4
4
|
from parsel import Selector
|
5
5
|
|
6
6
|
class UgurFilm(PluginBase):
|
7
7
|
name = "UgurFilm"
|
8
8
|
main_url = "https://ugurfilm8.com"
|
9
9
|
|
10
|
+
kekik_cache(ttl=60*60)
|
10
11
|
async def search(self, query: str) -> list[SearchResult]:
|
11
12
|
istek = await self.httpx.get(f"{self.main_url}/?s={query}")
|
12
13
|
secici = Selector(istek.text)
|
@@ -28,6 +29,7 @@ class UgurFilm(PluginBase):
|
|
28
29
|
|
29
30
|
return results
|
30
31
|
|
32
|
+
kekik_cache(ttl=60*60)
|
31
33
|
async def load_item(self, url: str) -> MovieInfo:
|
32
34
|
istek = await self.httpx.get(url)
|
33
35
|
secici = Selector(istek.text)
|
@@ -49,6 +51,7 @@ class UgurFilm(PluginBase):
|
|
49
51
|
actors = actors,
|
50
52
|
)
|
51
53
|
|
54
|
+
kekik_cache(ttl=15*60)
|
52
55
|
async def load_links(self, url: str) -> list[str]:
|
53
56
|
istek = await self.httpx.get(url)
|
54
57
|
secici = Selector(istek.text)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: KekikStream
|
3
|
-
Version: 1.
|
3
|
+
Version: 1.3.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
|
@@ -3,7 +3,7 @@ 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
|
5
5
|
KekikStream/CLI/pypi_kontrol.py,sha256=MchatOwCWCpFBtgt09yag9Rjal9XFyh2W_oVs2p7SNg,1518
|
6
|
-
KekikStream/Core/__init__.py,sha256=
|
6
|
+
KekikStream/Core/__init__.py,sha256=ar2MZQF83ryfLfydEXcfjdwNe4Too_HT6bP-D_4TopA,710
|
7
7
|
KekikStream/Core/Extractor/ExtractorBase.py,sha256=7dmYh5e1Za5N_pLJrTZRuwFh-CqwGc0YJOBWf5dirjc,1724
|
8
8
|
KekikStream/Core/Extractor/ExtractorLoader.py,sha256=7uxUXTAuF65KKkmbI6iRiCiUhx-IqrronB7ixhchcTU,4289
|
9
9
|
KekikStream/Core/Extractor/ExtractorManager.py,sha256=4L1H3jiTnf0kTq4W6uS7n95bBYHlKJ8_hh0og8z4erQ,1244
|
@@ -42,21 +42,21 @@ KekikStream/Extractors/VidMoly.py,sha256=O6F_82E-LeFVOgSw-ot91B1ZP8pqqt1jZ5pmkwk
|
|
42
42
|
KekikStream/Extractors/VidMolyMe.py,sha256=ogLiFUJVqFbhtzQrZ1gSB9me85DiHvntjWtSvidYVS8,218
|
43
43
|
KekikStream/Extractors/VidMoxy.py,sha256=T1iqfyOasRxoepmuWAmXeVW6E7M1O18KG3264KUSzc0,1798
|
44
44
|
KekikStream/Extractors/VideoSeyred.py,sha256=M6QPZ_isX9vM_7LPo-2I_8Cf1vB9awHw8vvzBODtoiQ,1977
|
45
|
-
KekikStream/Plugins/DiziBox.py,sha256=
|
46
|
-
KekikStream/Plugins/DiziYou.py,sha256=
|
47
|
-
KekikStream/Plugins/Dizilla.py,sha256=
|
48
|
-
KekikStream/Plugins/FilmMakinesi.py,sha256=
|
49
|
-
KekikStream/Plugins/FullHDFilmizlesene.py,sha256=
|
50
|
-
KekikStream/Plugins/HDFilmCehennemi.py,sha256=
|
51
|
-
KekikStream/Plugins/JetFilmizle.py,sha256=
|
52
|
-
KekikStream/Plugins/RecTV.py,sha256=
|
53
|
-
KekikStream/Plugins/SezonlukDizi.py,sha256=
|
54
|
-
KekikStream/Plugins/Shorten.py,sha256=
|
55
|
-
KekikStream/Plugins/SineWix.py,sha256=
|
56
|
-
KekikStream/Plugins/UgurFilm.py,sha256=
|
57
|
-
kekikstream-1.
|
58
|
-
kekikstream-1.
|
59
|
-
kekikstream-1.
|
60
|
-
kekikstream-1.
|
61
|
-
kekikstream-1.
|
62
|
-
kekikstream-1.
|
45
|
+
KekikStream/Plugins/DiziBox.py,sha256=Vk7ujbMTORimFNXA7BTZkQnXs-6WBfI7iIJxFYRJaH0,9326
|
46
|
+
KekikStream/Plugins/DiziYou.py,sha256=WL4IJqX7fwy5wiBo2fG0j4w60DhSfj0-_v0xXttcJBQ,5763
|
47
|
+
KekikStream/Plugins/Dizilla.py,sha256=E3HehhcnZBDVJzroRa7jlFzj3ixdx9-LT7YnWKmcX3Q,6899
|
48
|
+
KekikStream/Plugins/FilmMakinesi.py,sha256=aViX27rzJ6VJEz8QpIUrCppgtHjSszY1z3J3hLN6f_U,2916
|
49
|
+
KekikStream/Plugins/FullHDFilmizlesene.py,sha256=cmQ6t56OQi9DrQOYW2CDCnRSoW-utEHMqLiB1Fskod0,3138
|
50
|
+
KekikStream/Plugins/HDFilmCehennemi.py,sha256=I932zIgfJeqcD64Lb2742n24JF84aQ7To-WVDtn5fnE,6767
|
51
|
+
KekikStream/Plugins/JetFilmizle.py,sha256=2gXx55v3e46pcn_rNXgvLqIOe7Bg0FcZJ_UHznBfC5M,4008
|
52
|
+
KekikStream/Plugins/RecTV.py,sha256=Ff0-YrrzkiBvKo6FelMIX5vtJw22WvXmZpiKyboX7Kg,5163
|
53
|
+
KekikStream/Plugins/SezonlukDizi.py,sha256=fNVVKYIDiZnAYNT84sEp3PuPJwn6Az12UjiCOSiFjW0,4531
|
54
|
+
KekikStream/Plugins/Shorten.py,sha256=ei3lDfGWX-pAWxASxeusKZWNHlYe-a4uNKUMo69wemk,8945
|
55
|
+
KekikStream/Plugins/SineWix.py,sha256=XbuV8PxScbx87GuLkgHul-AdBKMDA-nCoAxr4pb2PNc,7141
|
56
|
+
KekikStream/Plugins/UgurFilm.py,sha256=xLxUI8nx9xH18wB9dhSWEvLGdxuonRkf75BnjIOkfPY,3019
|
57
|
+
kekikstream-1.3.0.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
58
|
+
kekikstream-1.3.0.dist-info/METADATA,sha256=7b_t9V4v6eq3Vg5GGTh5hwPzi4GplkAB4bjeVQpWe3w,4508
|
59
|
+
kekikstream-1.3.0.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
|
60
|
+
kekikstream-1.3.0.dist-info/entry_points.txt,sha256=dFwdiTx8djyehI0Gsz-rZwjAfZzUzoBSrmzRu9ubjJc,50
|
61
|
+
kekikstream-1.3.0.dist-info/top_level.txt,sha256=DNmGJDXl27Drdfobrak8KYLmocW_uznVYFJOzcjUgmY,12
|
62
|
+
kekikstream-1.3.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|