|
| 1 | +# Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır. |
| 2 | + |
| 3 | +from KekikStream.Core import PluginBase, MainPageResult, SearchResult, MovieInfo, ExtractResult, HTMLHelper |
| 4 | + |
| 5 | +class RealFilmIzle(PluginBase): |
| 6 | + name = "RealFilmIzle" |
| 7 | + language = "tr" |
| 8 | + main_url = "https://realfilmizle.com" |
| 9 | + favicon = f"https://www.google.com/s2/favicons?domain={main_url}&sz=64" |
| 10 | + description = "realfilmizle.com, sinemayı seven kullanıcılar için hazırlanmış, zengin içerik yapısına sahip bir online film izleme sitesidir." |
| 11 | + |
| 12 | + main_page = { |
| 13 | + f"{main_url}/dizi/aile-filmleri/page" : "Aile", |
| 14 | + f"{main_url}/dizi/aksiyon-filmleri/page" : "Aksiyon", |
| 15 | + f"{main_url}/dizi/animasyon-filmleri/page" : "Animasyon", |
| 16 | + f"{main_url}/dizi/anime-filmleri/page" : "Anime", |
| 17 | + f"{main_url}/dizi/belgeseler-filmleri/page" : "Belgeseler", |
| 18 | + f"{main_url}/dizi/bilim-kurgu-filmleri/page" : "Bilim-Kurgu", |
| 19 | + f"{main_url}/dizi/biyografi-filmleri/page" : "Biyoğrafi", |
| 20 | + f"{main_url}/dizi/dram-filmleri/page" : "Dram", |
| 21 | + f"{main_url}/dizi/erotik-filmleri/page" : "Erotik", |
| 22 | + f"{main_url}/dizi/fantastik-filmleri/page" : "Fantastik", |
| 23 | + f"{main_url}/dizi/gerilim-filmleri/page" : "Gerilim", |
| 24 | + f"{main_url}/dizi/gizem-filmleri/page" : "Gizem", |
| 25 | + f"{main_url}/dizi/hint-filmleri/page" : "Hint", |
| 26 | + f"{main_url}/dizi/komedi-filmleri/page" : "Komedi", |
| 27 | + f"{main_url}/dizi/korku-filmleri/page" : "Korku", |
| 28 | + f"{main_url}/dizi/macera-filmleri/page" : "Macera", |
| 29 | + f"{main_url}/dizi/muzikal-filmleri/page" : "Müzikal", |
| 30 | + f"{main_url}/dizi/netflix-filmleri/page" : "Netflix", |
| 31 | + f"{main_url}/dizi/romantik-filmleri/page" : "Romantik", |
| 32 | + f"{main_url}/dizi/savas-filmleri/page" : "Savaş", |
| 33 | + f"{main_url}/dizi/spor-filmleri/page" : "Spor", |
| 34 | + f"{main_url}/dizi/suc-filmleri/page" : "Suç", |
| 35 | + f"{main_url}/dizi/tarihi-filmleri/page" : "Tarihi", |
| 36 | + f"{main_url}/dizi/western-filmleri/page" : "Western", |
| 37 | + f"{main_url}/dizi/yerli-filmleri/page" : "Yerli", |
| 38 | + } |
| 39 | + |
| 40 | + async def get_articles(self, secici: HTMLHelper) -> list[dict]: |
| 41 | + articles = [] |
| 42 | + for veri in secici.select("article.movie-box"): |
| 43 | + title = secici.select_text("div.name a", veri) |
| 44 | + href = secici.select_attr("div.name a", "href", veri) |
| 45 | + poster = secici.select_poster("img", veri) |
| 46 | + |
| 47 | + articles.append({ |
| 48 | + "title" : self.clean_title(title), |
| 49 | + "url" : self.fix_url(href), |
| 50 | + "poster": self.fix_url(poster), |
| 51 | + }) |
| 52 | + |
| 53 | + return articles |
| 54 | + |
| 55 | + async def get_main_page(self, page: int, url: str, category: str) -> list[MainPageResult]: |
| 56 | + istek = await self.httpx.get(f"{url}/{page}") |
| 57 | + secici = HTMLHelper(istek.text) |
| 58 | + veriler = await self.get_articles(secici) |
| 59 | + |
| 60 | + return [MainPageResult(**veri, category=category) for veri in veriler if veri] |
| 61 | + |
| 62 | + async def search(self, query: str) -> list[SearchResult]: |
| 63 | + istek = await self.httpx.get(f"{self.main_url}/?s={query}") |
| 64 | + secici = HTMLHelper(istek.text) |
| 65 | + veriler = await self.get_articles(secici) |
| 66 | + |
| 67 | + return [SearchResult(**veri) for veri in veriler if veri] |
| 68 | + |
| 69 | + async def load_item(self, url: str) -> MovieInfo: |
| 70 | + istek = await self.httpx.get(url) |
| 71 | + secici = HTMLHelper(istek.text) |
| 72 | + |
| 73 | + title = self.clean_title(secici.select_text("div.film h1")) |
| 74 | + poster = secici.select_poster("div.poster img") |
| 75 | + description = secici.select_direct_text("div.description") |
| 76 | + tags = secici.select_texts("ol.scheme-breadcrumbs li a") |
| 77 | + tags = [tag.replace("✅ ", "").replace(" Filmleri", "") for tag in tags if tag != "Film izle"] |
| 78 | + |
| 79 | + return MovieInfo( |
| 80 | + url = url, |
| 81 | + poster = self.fix_url(poster), |
| 82 | + title = self.clean_title(title), |
| 83 | + description = description, |
| 84 | + tags = tags |
| 85 | + ) |
| 86 | + |
| 87 | + async def load_links(self, url: str) -> list[ExtractResult]: |
| 88 | + istek = await self.httpx.get(url) |
| 89 | + secici = HTMLHelper(istek.text) |
| 90 | + |
| 91 | + iframe = secici.select_attr("div.video-content iframe", "src") |
| 92 | + result = await self.extract(iframe) |
| 93 | + |
| 94 | + return [result] if result else [] |
0 commit comments