|
@ -9,7 +9,7 @@ from ..utils import ( |
|
|
|
|
|
|
|
|
class DotsubIE(InfoExtractor): |
|
|
class DotsubIE(InfoExtractor): |
|
|
_VALID_URL = r'https?://(?:www\.)?dotsub\.com/view/(?P<id>[^/]+)' |
|
|
_VALID_URL = r'https?://(?:www\.)?dotsub\.com/view/(?P<id>[^/]+)' |
|
|
_TEST = { |
|
|
|
|
|
|
|
|
_TESTS = [{ |
|
|
'url': 'https://dotsub.com/view/9c63db2a-fa95-4838-8e6e-13deafe47f09', |
|
|
'url': 'https://dotsub.com/view/9c63db2a-fa95-4838-8e6e-13deafe47f09', |
|
|
'md5': '21c7ff600f545358134fea762a6d42b6', |
|
|
'md5': '21c7ff600f545358134fea762a6d42b6', |
|
|
'info_dict': { |
|
|
'info_dict': { |
|
@ -24,7 +24,24 @@ class DotsubIE(InfoExtractor): |
|
|
'upload_date': '20131130', |
|
|
'upload_date': '20131130', |
|
|
'view_count': int, |
|
|
'view_count': int, |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
}, { |
|
|
|
|
|
'url': 'https://dotsub.com/view/747bcf58-bd59-45b7-8c8c-ac312d084ee6', |
|
|
|
|
|
'md5': '2bb4a83896434d5c26be868c609429a3', |
|
|
|
|
|
'info_dict': { |
|
|
|
|
|
'id': '168006778', |
|
|
|
|
|
'ext': 'mp4', |
|
|
|
|
|
'title': 'Apartments and flats in Raipur the white symphony', |
|
|
|
|
|
'description': 'md5:784d0639e6b7d1bc29530878508e38fe', |
|
|
|
|
|
'thumbnail': 're:^https?://dotsub.com/media/747bcf58-bd59-45b7-8c8c-ac312d084ee6/p', |
|
|
|
|
|
'duration': 290, |
|
|
|
|
|
'timestamp': 1476767794.2809999, |
|
|
|
|
|
'upload_date': '20160525', |
|
|
|
|
|
'uploader': 'parthivi001', |
|
|
|
|
|
'uploader_id': 'user52596202', |
|
|
|
|
|
'view_count': int, |
|
|
|
|
|
}, |
|
|
|
|
|
'add_ie': ['Vimeo'], |
|
|
|
|
|
}] |
|
|
|
|
|
|
|
|
def _real_extract(self, url): |
|
|
def _real_extract(self, url): |
|
|
video_id = self._match_id(url) |
|
|
video_id = self._match_id(url) |
|
@ -37,12 +54,23 @@ class DotsubIE(InfoExtractor): |
|
|
webpage = self._download_webpage(url, video_id) |
|
|
webpage = self._download_webpage(url, video_id) |
|
|
video_url = self._search_regex( |
|
|
video_url = self._search_regex( |
|
|
[r'<source[^>]+src="([^"]+)"', r'"file"\s*:\s*\'([^\']+)'], |
|
|
[r'<source[^>]+src="([^"]+)"', r'"file"\s*:\s*\'([^\']+)'], |
|
|
webpage, 'video url') |
|
|
|
|
|
|
|
|
webpage, 'video url', default=None) |
|
|
|
|
|
info_dict = { |
|
|
|
|
|
'id': video_id, |
|
|
|
|
|
'url': video_url, |
|
|
|
|
|
'ext': 'flv', |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
return { |
|
|
|
|
|
'id': video_id, |
|
|
|
|
|
'url': video_url, |
|
|
|
|
|
'ext': 'flv', |
|
|
|
|
|
|
|
|
if not video_url: |
|
|
|
|
|
setup_data = self._parse_json(self._html_search_regex( |
|
|
|
|
|
r'(?s)data-setup=([\'"])(?P<content>(?!\1).+?)\1', |
|
|
|
|
|
webpage, 'setup data', group='content'), video_id) |
|
|
|
|
|
info_dict = { |
|
|
|
|
|
'_type': 'url_transparent', |
|
|
|
|
|
'url': setup_data['src'], |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
info_dict.update({ |
|
|
'title': info['title'], |
|
|
'title': info['title'], |
|
|
'description': info.get('description'), |
|
|
'description': info.get('description'), |
|
|
'thumbnail': info.get('screenshotURI'), |
|
|
'thumbnail': info.get('screenshotURI'), |
|
@ -50,4 +78,6 @@ class DotsubIE(InfoExtractor): |
|
|
'uploader': info.get('user'), |
|
|
'uploader': info.get('user'), |
|
|
'timestamp': float_or_none(info.get('dateCreated'), 1000), |
|
|
'timestamp': float_or_none(info.get('dateCreated'), 1000), |
|
|
'view_count': int_or_none(info.get('numberOfViews')), |
|
|
'view_count': int_or_none(info.get('numberOfViews')), |
|
|
} |
|
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
return info_dict |