diff options
| -rw-r--r-- | youtube_dl/extractor/camtube.py | 69 | ||||
| -rw-r--r-- | youtube_dl/extractor/extractors.py | 1 | 
2 files changed, 70 insertions, 0 deletions
| diff --git a/youtube_dl/extractor/camtube.py b/youtube_dl/extractor/camtube.py new file mode 100644 index 000000000..c7d40f849 --- /dev/null +++ b/youtube_dl/extractor/camtube.py @@ -0,0 +1,69 @@ +# coding: utf-8 +from __future__ import unicode_literals + +from .common import InfoExtractor +from ..utils import ( +    int_or_none, +    unified_timestamp, +) + + +class CamTubeIE(InfoExtractor): +    _VALID_URL = r'https?://(?:(?:www|api)\.)?camtube\.co/recordings?/(?P<id>[^/?#&]+)' +    _TESTS = [{ +        'url': 'https://camtube.co/recording/minafay-030618-1136-chaturbate-female', +        'info_dict': { +            'id': '42ad3956-dd5b-445a-8313-803ea6079fac', +            'display_id': 'minafay-030618-1136-chaturbate-female', +            'ext': 'mp4', +            'title': 'minafay-030618-1136-chaturbate-female', +            'duration': 1274, +            'timestamp': 1528018608, +            'upload_date': '20180603', +        }, +        'params': { +            'skip_download': True, +        }, +    }] + +    _API_BASE = 'https://api.camtube.co' + +    def _real_extract(self, url): +        display_id = self._match_id(url) + +        token = self._download_json( +            '%s/rpc/session/new' % self._API_BASE, display_id, +            'Downloading session token')['token'] + +        self._set_cookie('api.camtube.co', 'session', token) + +        video = self._download_json( +            '%s/recordings/%s' % (self._API_BASE, display_id), display_id, +            headers={'Referer': url}) + +        video_id = video['uuid'] +        timestamp = unified_timestamp(video.get('createdAt')) +        duration = int_or_none(video.get('duration')) +        view_count = int_or_none(video.get('viewCount')) +        like_count = int_or_none(video.get('likeCount')) +        creator = video.get('stageName') + +        formats = [{ +            'url': '%s/recordings/%s/manifest.m3u8' +                   % (self._API_BASE, video_id), +            'format_id': 'hls', +            'ext': 'mp4', +            'protocol': 'm3u8_native', +        }] + +        return { +            'id': video_id, +            'display_id': display_id, +            'title': display_id, +            'timestamp': timestamp, +            'duration': duration, +            'view_count': view_count, +            'like_count': like_count, +            'creator': creator, +            'formats': formats, +        } diff --git a/youtube_dl/extractor/extractors.py b/youtube_dl/extractor/extractors.py index b05afd101..6df829054 100644 --- a/youtube_dl/extractor/extractors.py +++ b/youtube_dl/extractor/extractors.py @@ -147,6 +147,7 @@ from .camdemy import (      CamdemyFolderIE  )  from .cammodels import CamModelsIE +from .camtube import CamTubeIE  from .camwithher import CamWithHerIE  from .canalplus import CanalplusIE  from .canalc2 import Canalc2IE | 
