KekikStream 0.6.6__py3-none-any.whl → 0.6.7__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/Plugins/DiziYou.py +125 -0
- KekikStream/Plugins/SineWix.py +1 -2
- KekikStream/__init__.py +1 -1
- {KekikStream-0.6.6.dist-info → KekikStream-0.6.7.dist-info}/METADATA +1 -1
- {KekikStream-0.6.6.dist-info → KekikStream-0.6.7.dist-info}/RECORD +9 -8
- {KekikStream-0.6.6.dist-info → KekikStream-0.6.7.dist-info}/LICENSE +0 -0
- {KekikStream-0.6.6.dist-info → KekikStream-0.6.7.dist-info}/WHEEL +0 -0
- {KekikStream-0.6.6.dist-info → KekikStream-0.6.7.dist-info}/entry_points.txt +0 -0
- {KekikStream-0.6.6.dist-info → KekikStream-0.6.7.dist-info}/top_level.txt +0 -0
| @@ -0,0 +1,125 @@ | |
| 1 | 
            +
            # Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            from KekikStream.Core import PluginBase, SearchResult, SeriesInfo, Episode, Subtitle, ExtractResult
         | 
| 4 | 
            +
            from parsel           import Selector
         | 
| 5 | 
            +
            import re
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            class DiziYou(PluginBase):
         | 
| 8 | 
            +
                name     = "DiziYou"
         | 
| 9 | 
            +
                main_url = "https://www.diziyou.co"
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                async def search(self, query: str) -> list[SearchResult]:
         | 
| 12 | 
            +
                    istek  = await self.oturum.get(f"{self.main_url}/?s={query}")
         | 
| 13 | 
            +
                    secici = Selector(istek.text)
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                    return [
         | 
| 16 | 
            +
                        SearchResult(
         | 
| 17 | 
            +
                            title  = afis.css("div#categorytitle a::text").get().strip(),
         | 
| 18 | 
            +
                            url    = self.fix_url(afis.css("div#categorytitle a::attr(href)").get()),
         | 
| 19 | 
            +
                            poster = self.fix_url(afis.css("img::attr(src)").get()),
         | 
| 20 | 
            +
                        )
         | 
| 21 | 
            +
                            for afis in secici.css("div.incontent div#list-series")
         | 
| 22 | 
            +
                    ]
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                async def load_item(self, url: str) -> SeriesInfo:
         | 
| 25 | 
            +
                    istek  = await self.oturum.get(url)
         | 
| 26 | 
            +
                    secici = Selector(istek.text)
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                    title       = secici.css("h1::text").get().strip()
         | 
| 29 | 
            +
                    poster      = self.fix_url(secici.css("div.category_image img::attr(src)").get().strip())
         | 
| 30 | 
            +
                    year        = secici.xpath("//span[contains(., 'Yapım Yılı')]/following-sibling::text()[1]").get()
         | 
| 31 | 
            +
                    description = secici.css("div.diziyou_desc::text").get().strip()
         | 
| 32 | 
            +
                    tags        = secici.css("div.genres a::text").getall()
         | 
| 33 | 
            +
                    rating      = secici.xpath("//span[contains(., 'IMDB')]/following-sibling::text()[1]").get()
         | 
| 34 | 
            +
                    _actors     = secici.xpath("//span[contains(., 'Oyuncular')]/following-sibling::text()[1]").get()
         | 
| 35 | 
            +
                    actors      = [actor.strip() for actor in _actors.split(",")] if _actors else []
         | 
| 36 | 
            +
             | 
| 37 | 
            +
                    episodes    = []
         | 
| 38 | 
            +
                    for it in secici.css("div.bolumust"):
         | 
| 39 | 
            +
                        ep_name = it.css("div.baslik::text").get().strip()
         | 
| 40 | 
            +
                        ep_href = it.xpath("ancestor::a/@href").get()
         | 
| 41 | 
            +
                        if not ep_name or not ep_href:
         | 
| 42 | 
            +
                            continue
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                        ep_name_clean = it.css("div.bolumismi::text").get().strip().replace("(", "").replace(")", "").strip() if it.css("div.bolumismi::text").get() else ep_name
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                        ep_episode = re.search(r"(\d+)\. Bölüm", ep_name)[1]
         | 
| 47 | 
            +
                        ep_season  = re.search(r"(\d+)\. Sezon", ep_name)[1]
         | 
| 48 | 
            +
             | 
| 49 | 
            +
                        episode = Episode(
         | 
| 50 | 
            +
                            season  = ep_season,
         | 
| 51 | 
            +
                            episode = ep_episode,
         | 
| 52 | 
            +
                            title   = ep_name_clean,
         | 
| 53 | 
            +
                            url     = ep_href,
         | 
| 54 | 
            +
                        )
         | 
| 55 | 
            +
             | 
| 56 | 
            +
                        episodes.append(episode)
         | 
| 57 | 
            +
             | 
| 58 | 
            +
                    return SeriesInfo(
         | 
| 59 | 
            +
                        url         = url,
         | 
| 60 | 
            +
                        poster      = poster,
         | 
| 61 | 
            +
                        title       = title,
         | 
| 62 | 
            +
                        description = description,
         | 
| 63 | 
            +
                        tags        = tags,
         | 
| 64 | 
            +
                        rating      = rating,
         | 
| 65 | 
            +
                        year        = year,
         | 
| 66 | 
            +
                        episodes    = episodes,
         | 
| 67 | 
            +
                        actors      = actors
         | 
| 68 | 
            +
                    )
         | 
| 69 | 
            +
             | 
| 70 | 
            +
                async def load_links(self, url: str) -> list[str]:
         | 
| 71 | 
            +
                    istek  = await self.oturum.get(url)
         | 
| 72 | 
            +
                    secici = Selector(istek.text)
         | 
| 73 | 
            +
             | 
| 74 | 
            +
                    item_id = secici.css("iframe#diziyouPlayer::attr(src)").get().split("/")[-1].replace(".html", "")
         | 
| 75 | 
            +
             | 
| 76 | 
            +
                    subtitles   = []
         | 
| 77 | 
            +
                    stream_urls = []
         | 
| 78 | 
            +
             | 
| 79 | 
            +
                    for secenek in secici.css("span.diziyouOption"):
         | 
| 80 | 
            +
                        opt_id  = secenek.css("::attr(id)").get()
         | 
| 81 | 
            +
                        op_name = secenek.css("::text").get()
         | 
| 82 | 
            +
             | 
| 83 | 
            +
                        match opt_id:
         | 
| 84 | 
            +
                            case "turkceAltyazili":
         | 
| 85 | 
            +
                                subtitles.append(Subtitle(
         | 
| 86 | 
            +
                                    name = op_name,
         | 
| 87 | 
            +
                                    url  = self.fix_url(f"https://storage.diziyou.co/subtitles/{item_id}/tr.vtt"),
         | 
| 88 | 
            +
                                ))
         | 
| 89 | 
            +
                                veri = {
         | 
| 90 | 
            +
                                    "dil": "Orjinal Dil",
         | 
| 91 | 
            +
                                    "url": f"https://storage.diziyou.co/episodes/{item_id}/play.m3u8"
         | 
| 92 | 
            +
                                }
         | 
| 93 | 
            +
                                if veri not in stream_urls:
         | 
| 94 | 
            +
                                    stream_urls.append(veri)
         | 
| 95 | 
            +
                            case "ingilizceAltyazili":
         | 
| 96 | 
            +
                                subtitles.append(Subtitle(
         | 
| 97 | 
            +
                                    name = op_name,
         | 
| 98 | 
            +
                                    url  = self.fix_url(f"https://storage.diziyou.co/subtitles/{item_id}/en.vtt"),
         | 
| 99 | 
            +
                                ))
         | 
| 100 | 
            +
                                veri = {
         | 
| 101 | 
            +
                                    "dil": "Orjinal Dil",
         | 
| 102 | 
            +
                                    "url": f"https://storage.diziyou.co/episodes/{item_id}/play.m3u8"
         | 
| 103 | 
            +
                                }
         | 
| 104 | 
            +
                                if veri not in stream_urls:
         | 
| 105 | 
            +
                                    stream_urls.append(veri)
         | 
| 106 | 
            +
                            case "turkceDublaj":
         | 
| 107 | 
            +
                                stream_urls.append({
         | 
| 108 | 
            +
                                    "dil": "Dublaj",
         | 
| 109 | 
            +
                                    "url": f"https://storage.diziyou.co/episodes/{item_id}_tr/play.m3u8"
         | 
| 110 | 
            +
                                })
         | 
| 111 | 
            +
             | 
| 112 | 
            +
             | 
| 113 | 
            +
                    for stream in stream_urls:
         | 
| 114 | 
            +
                        self._data[stream.get("url")] = {
         | 
| 115 | 
            +
                            "name"      : f"{self.name} | {stream.get('dil')}",
         | 
| 116 | 
            +
                            "referer"   : url,
         | 
| 117 | 
            +
                            "subtitles" : subtitles
         | 
| 118 | 
            +
                        }
         | 
| 119 | 
            +
             | 
| 120 | 
            +
                    return [stream.get("url") for stream in stream_urls]
         | 
| 121 | 
            +
             | 
| 122 | 
            +
                async def play(self, name: str, url: str, referer: str, subtitles: list[Subtitle]):
         | 
| 123 | 
            +
                    extract_result = ExtractResult(name=name, url=url, referer=referer, subtitles=subtitles)
         | 
| 124 | 
            +
                    self.media_handler.title = name
         | 
| 125 | 
            +
                    self.media_handler.play_media(extract_result)
         | 
    
        KekikStream/Plugins/SineWix.py
    CHANGED
    
    | @@ -90,12 +90,11 @@ class SineWix(PluginBase): | |
| 90 90 | 
             
                    org_title = veri.get("title")
         | 
| 91 91 | 
             
                    alt_title = veri.get("original_name") or ""
         | 
| 92 92 | 
             
                    title     = f"{org_title} - {alt_title}" if (alt_title and org_title != alt_title)  else org_title
         | 
| 93 | 
            -
                    title     = f"{self.name} | {title}"
         | 
| 94 93 |  | 
| 95 94 | 
             
                    for video in veri.get("videos"):
         | 
| 96 95 | 
             
                        video_link = video.get("link").split("_blank\">")[-1]
         | 
| 97 96 | 
             
                        self._data[video_link] = {
         | 
| 98 | 
            -
                            "name"      : title,
         | 
| 97 | 
            +
                            "name"      : f"{self.name} | {title}",
         | 
| 99 98 | 
             
                            "referer"   : self.main_url,
         | 
| 100 99 | 
             
                            "subtitles" : []
         | 
| 101 100 | 
             
                        }
         | 
    
        KekikStream/__init__.py
    CHANGED
    
    | @@ -180,7 +180,7 @@ class KekikStream: | |
| 180 180 | 
             
                    if not haritalama:
         | 
| 181 181 | 
             
                        secilen_link = await self.arayuz_yonetici.select_from_list(
         | 
| 182 182 | 
             
                            message = "Doğrudan oynatmak için bir bağlantı seçin:",
         | 
| 183 | 
            -
                            choices = [{"name":  | 
| 183 | 
            +
                            choices = [{"name": value["name"], "value": key} for key, value in self.suanki_eklenti._data.items()]
         | 
| 184 184 | 
             
                        )
         | 
| 185 185 | 
             
                        if secilen_link:
         | 
| 186 186 | 
             
                            await self.medya_oynat(secilen_link)
         | 
| @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            Metadata-Version: 2.1
         | 
| 2 2 | 
             
            Name: KekikStream
         | 
| 3 | 
            -
            Version: 0.6. | 
| 3 | 
            +
            Version: 0.6.7
         | 
| 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,4 +1,4 @@ | |
| 1 | 
            -
            KekikStream/__init__.py,sha256= | 
| 1 | 
            +
            KekikStream/__init__.py,sha256=WCAi6iNBUUdxQoFLb1b3F37zqvU9DawDErEcx1_Ov_g,10867
         | 
| 2 2 | 
             
            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
         | 
| @@ -42,17 +42,18 @@ KekikStream/Managers/PluginManager.py,sha256=YDBLHB_Fh79A3Pei0ny2KLVY4VSihdNiKBh | |
| 42 42 | 
             
            KekikStream/Managers/UIManager.py,sha256=e89u_QgmxL85zGAYyYsQp6b3E5y7fHGteLt2OYHHbD8,1693
         | 
| 43 43 | 
             
            KekikStream/Managers/__init__.py,sha256=3085I_9Sa2L_Vq6Z-QvYUYn1BapkN4sQqBo8ITZoD_4,251
         | 
| 44 44 | 
             
            KekikStream/Plugins/DiziBox.py,sha256=i_73VNXk2eM7xTg-6a0Xk2Yts2c9grWbRVVHhxFgoic,5935
         | 
| 45 | 
            +
            KekikStream/Plugins/DiziYou.py,sha256=FHpSE2__AvGnxSbpPisB8nNtfWtG4e-dDYtmdZkP_cI,5226
         | 
| 45 46 | 
             
            KekikStream/Plugins/Dizilla.py,sha256=zJni028hCJlz2Xh8BXVrxHsZGJJ-oN88_yz4Fs9MaL4,4258
         | 
| 46 47 | 
             
            KekikStream/Plugins/FilmMakinesi.py,sha256=rz8TQeL41PJbeEmksgPHIhp6J-4vbSCBTeEH0ukExz4,2822
         | 
| 47 48 | 
             
            KekikStream/Plugins/FullHDFilmizlesene.py,sha256=Fa0gRP_NoMfPC8HIKRxERjQVOv8Fyb-ayMJ2EooZ7BE,3080
         | 
| 48 49 | 
             
            KekikStream/Plugins/JetFilmizle.py,sha256=FXkMSQtjYoxwIonjRENFa91rC42L_8SYRhjhuSgsu60,3919
         | 
| 49 50 | 
             
            KekikStream/Plugins/SezonlukDizi.py,sha256=5BZVzQ2eQtymHxO0bzjA2ho4FFNahPFQly4hoHuH8lo,4441
         | 
| 50 | 
            -
            KekikStream/Plugins/SineWix.py,sha256= | 
| 51 | 
            +
            KekikStream/Plugins/SineWix.py,sha256=lLbEApxqlspJSUqwXDzAwh90NuOMEe-NYHHrmh83z0k,4825
         | 
| 51 52 | 
             
            KekikStream/Plugins/UgurFilm.py,sha256=yYXee5uxwNnPqFJZ6s6cRkmUyqS3Vv8x-iesPalc4j4,2930
         | 
| 52 53 | 
             
            KekikStream/Plugins/__RecTV.py,sha256=TYPuab97yD7mwsu37cZ9_eG3mZSkmImBqlC9VgtetSk,4820
         | 
| 53 | 
            -
            KekikStream-0.6. | 
| 54 | 
            -
            KekikStream-0.6. | 
| 55 | 
            -
            KekikStream-0.6. | 
| 56 | 
            -
            KekikStream-0.6. | 
| 57 | 
            -
            KekikStream-0.6. | 
| 58 | 
            -
            KekikStream-0.6. | 
| 54 | 
            +
            KekikStream-0.6.7.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
         | 
| 55 | 
            +
            KekikStream-0.6.7.dist-info/METADATA,sha256=RevAnf7Pe_zELg9ab4cJDfpTGSJbmt_QaFrpn0aj2VA,3994
         | 
| 56 | 
            +
            KekikStream-0.6.7.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
         | 
| 57 | 
            +
            KekikStream-0.6.7.dist-info/entry_points.txt,sha256=dFwdiTx8djyehI0Gsz-rZwjAfZzUzoBSrmzRu9ubjJc,50
         | 
| 58 | 
            +
            KekikStream-0.6.7.dist-info/top_level.txt,sha256=DNmGJDXl27Drdfobrak8KYLmocW_uznVYFJOzcjUgmY,12
         | 
| 59 | 
            +
            KekikStream-0.6.7.dist-info/RECORD,,
         | 
| 
            File without changes
         | 
| 
            File without changes
         | 
| 
            File without changes
         | 
| 
            File without changes
         |