diff options
| author | Remita Amine <remitamine@gmail.com> | 2019-10-10 00:01:37 +0100 | 
|---|---|---|
| committer | Remita Amine <remitamine@gmail.com> | 2019-10-10 00:01:51 +0100 | 
| commit | c317b6163b294f4cdc2d1dff96e1a63da1bae910 (patch) | |
| tree | e7930eb65537f755db52920aa769120f14563cef | |
| parent | 2765c47a8c4e7154fa0a9be0bb63f3bcba592b10 (diff) | |
[vessel] remove extractor
| -rw-r--r-- | youtube_dl/extractor/extractors.py | 1 | ||||
| -rw-r--r-- | youtube_dl/extractor/generic.py | 6 | ||||
| -rw-r--r-- | youtube_dl/extractor/vessel.py | 157 | 
3 files changed, 0 insertions, 164 deletions
| diff --git a/youtube_dl/extractor/extractors.py b/youtube_dl/extractor/extractors.py index f393683da..7a1e0dad6 100644 --- a/youtube_dl/extractor/extractors.py +++ b/youtube_dl/extractor/extractors.py @@ -1282,7 +1282,6 @@ from .varzesh3 import Varzesh3IE  from .vbox7 import Vbox7IE  from .veehd import VeeHDIE  from .veoh import VeohIE -from .vessel import VesselIE  from .vesti import VestiIE  from .vevo import (      VevoIE, diff --git a/youtube_dl/extractor/generic.py b/youtube_dl/extractor/generic.py index d1725d98b..ec43c5ae4 100644 --- a/youtube_dl/extractor/generic.py +++ b/youtube_dl/extractor/generic.py @@ -77,7 +77,6 @@ from .instagram import InstagramIE  from .liveleak import LiveLeakIE  from .threeqsdn import ThreeQSDNIE  from .theplatform import ThePlatformIE -from .vessel import VesselIE  from .kaltura import KalturaIE  from .eagleplatform import EaglePlatformIE  from .facebook import FacebookIE @@ -2491,11 +2490,6 @@ class GenericIE(InfoExtractor):          if tp_urls:              return self.playlist_from_matches(tp_urls, video_id, video_title, ie='ThePlatform') -        # Look for Vessel embeds -        vessel_urls = VesselIE._extract_urls(webpage) -        if vessel_urls: -            return self.playlist_from_matches(vessel_urls, video_id, video_title, ie=VesselIE.ie_key()) -          # Look for embedded rtl.nl player          matches = re.findall(              r'<iframe[^>]+?src="((?:https?:)?//(?:(?:www|static)\.)?rtl\.nl/(?:system/videoplayer/[^"]+(?:video_)?)?embed[^"]+)"', diff --git a/youtube_dl/extractor/vessel.py b/youtube_dl/extractor/vessel.py deleted file mode 100644 index 31eee0ba7..000000000 --- a/youtube_dl/extractor/vessel.py +++ /dev/null @@ -1,157 +0,0 @@ -# coding: utf-8 -from __future__ import unicode_literals - -import json -import re - -from .common import InfoExtractor -from ..utils import ( -    ExtractorError, -    parse_iso8601, -    sanitized_Request, -) - - -class VesselIE(InfoExtractor): -    _VALID_URL = r'https?://(?:www\.)?vessel\.com/(?:videos|embed)/(?P<id>[0-9a-zA-Z-_]+)' -    _API_URL_TEMPLATE = 'https://www.vessel.com/api/view/items/%s' -    _LOGIN_URL = 'https://www.vessel.com/api/account/login' -    _NETRC_MACHINE = 'vessel' -    _TESTS = [{ -        'url': 'https://www.vessel.com/videos/HDN7G5UMs', -        'md5': '455cdf8beb71c6dd797fd2f3818d05c4', -        'info_dict': { -            'id': 'HDN7G5UMs', -            'ext': 'mp4', -            'title': 'Nvidia GeForce GTX Titan X - The Best Video Card on the Market?', -            'thumbnail': r're:^https?://.*\.jpg$', -            'upload_date': '20150317', -            'description': 'Did Nvidia pull out all the stops on the Titan X, or does its performance leave something to be desired?', -            'timestamp': int, -        }, -    }, { -        'url': 'https://www.vessel.com/embed/G4U7gUJ6a?w=615&h=346', -        'only_matching': True, -    }, { -        'url': 'https://www.vessel.com/videos/F01_dsLj1', -        'only_matching': True, -    }, { -        'url': 'https://www.vessel.com/videos/RRX-sir-J', -        'only_matching': True, -    }] - -    @staticmethod -    def _extract_urls(webpage): -        return [url for _, url in re.findall( -            r'<iframe[^>]+src=(["\'])((?:https?:)?//(?:www\.)?vessel\.com/embed/[0-9a-zA-Z-_]+.*?)\1', -            webpage)] - -    @staticmethod -    def make_json_request(url, data): -        payload = json.dumps(data).encode('utf-8') -        req = sanitized_Request(url, payload) -        req.add_header('Content-Type', 'application/json; charset=utf-8') -        return req - -    @staticmethod -    def find_assets(data, asset_type, asset_id=None): -        for asset in data.get('assets', []): -            if not asset.get('type') == asset_type: -                continue -            elif asset_id is not None and not asset.get('id') == asset_id: -                continue -            else: -                yield asset - -    def _check_access_rights(self, data): -        access_info = data.get('__view', {}) -        if not access_info.get('allow_access', True): -            err_code = access_info.get('error_code') or '' -            if err_code == 'ITEM_PAID_ONLY': -                raise ExtractorError( -                    'This video requires subscription.', expected=True) -            else: -                raise ExtractorError( -                    'Access to this content is restricted. (%s said: %s)' % (self.IE_NAME, err_code), expected=True) - -    def _login(self): -        username, password = self._get_login_info() -        if username is None: -            return -        self.report_login() -        data = { -            'client_id': 'web', -            'type': 'password', -            'user_key': username, -            'password': password, -        } -        login_request = VesselIE.make_json_request(self._LOGIN_URL, data) -        self._download_webpage(login_request, None, False, 'Wrong login info') - -    def _real_initialize(self): -        self._login() - -    def _real_extract(self, url): -        video_id = self._match_id(url) - -        webpage = self._download_webpage(url, video_id) -        data = self._parse_json(self._search_regex( -            r'App\.bootstrapData\((.*?)\);', webpage, 'data'), video_id) -        asset_id = data['model']['data']['id'] - -        req = VesselIE.make_json_request( -            self._API_URL_TEMPLATE % asset_id, {'client': 'web'}) -        data = self._download_json(req, video_id) -        video_asset_id = data.get('main_video_asset') - -        self._check_access_rights(data) - -        try: -            video_asset = next( -                VesselIE.find_assets(data, 'video', asset_id=video_asset_id)) -        except StopIteration: -            raise ExtractorError('No video assets found') - -        formats = [] -        for f in video_asset.get('sources', []): -            location = f.get('location') -            if not location: -                continue -            name = f.get('name') -            if name == 'hls-index': -                formats.extend(self._extract_m3u8_formats( -                    location, video_id, ext='mp4', -                    entry_protocol='m3u8_native', m3u8_id='m3u8', fatal=False)) -            elif name == 'dash-index': -                formats.extend(self._extract_mpd_formats( -                    location, video_id, mpd_id='dash', fatal=False)) -            else: -                formats.append({ -                    'format_id': name, -                    'tbr': f.get('bitrate'), -                    'height': f.get('height'), -                    'width': f.get('width'), -                    'url': location, -                }) -        self._sort_formats(formats) - -        thumbnails = [] -        for im_asset in VesselIE.find_assets(data, 'image'): -            thumbnails.append({ -                'url': im_asset['location'], -                'width': im_asset.get('width', 0), -                'height': im_asset.get('height', 0), -            }) - -        return { -            'id': video_id, -            'title': data['title'], -            'formats': formats, -            'thumbnails': thumbnails, -            'description': data.get('short_description'), -            'duration': data.get('duration'), -            'comment_count': data.get('comment_count'), -            'like_count': data.get('like_count'), -            'view_count': data.get('view_count'), -            'timestamp': parse_iso8601(data.get('released_at')), -        } | 
