Create vrporn.py

pull/10416/head
horny-is-back 1 year ago committed by GitHub
parent 4f8448896e
commit 5c7adfdc52
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -0,0 +1,100 @@
import json
from .common import InfoExtractor
class VRPornIE(InfoExtractor):
    _VALID_URL = r"https?://(?:www\.)?vrporn\.com/(?P<display_id>.+)/"
    _LOGIN_URL = "https://vrporn.com/api/playa/v2/auth/sign-in-password"
    _SINGLE_VIDEO_URL = "https://vrporn.com/api/playa/v2/video/"
    _NETRC_MACHINE = "vrporn"
    _USERTOKEN = None
    _TESTS = [
        {
            "url": "https://vrporn.com/milkmans-diaries/",
            "only_matching": True,
        },
        {
            "url": "https://vrporn.com/what-a-fellin/",
            "only_matching": True,
        },
    ]
    def _perform_login(self, username, password):
        user_data = self._download_json(
            self._LOGIN_URL,
            None,
            note="Logging in",
            data=json.dumps(
                {
                    "login": username,
                    "password": password,
                }
            ).encode(),
            headers={
                "Content-Type": "application/json",
            },
        )
        self._USERTOKEN = user_data["data"]["access_token"]
    def _real_extract(self, url):
        mobj = self._match_valid_url(url)
        display_id = mobj.group("display_id")
        webpage, _ = self._download_webpage_handle(url, display_id)
        video_id = self._search_regex(
            r"shortlink.+href=[\'\"]https://vrporn\.com/\?p=([0-9]+)[\'\"]",
            webpage,
            "id",
        )
        headers = {
            "Content-Type": "application/json",
        }
        if self._USERTOKEN:
            headers.update(
                {
                    "Authorization": f"Bearer {self._USERTOKEN}",
                }
            )
        video_data = self._download_json(
            self._SINGLE_VIDEO_URL + video_id,
            None,
            query={"asd": "asd"},
            note="fetching formats",
            headers=headers,
        )
        title = video_data["data"]["title"]
        formats = []
        duration = ""
        for detail in video_data["data"]["details"]:
            type = detail["type"]
            duration = detail["duration_seconds"]
            for link in detail["links"]:
                if link["is_download"]:
                    formats.append(
                        {
                            "url": link["url"],
                            "format_id": f'{type}-{link["quality_name"]}-{link["stereo"]}-{link["projection"]}',
                            "quality": link["quality_name"],
                            "resolution": link["quality_name"],
                        }
                    )
        return {
            "id": video_id,
            "display_id": display_id,
            "title": title,
            "duration": duration,
            "formats": formats,
            "age_limit": 18,
        }
Loading…
Cancel
Save