[afreecatv] Use partial view only when necessary (closes #14450)

This commit is contained in:
Sergey M․ 2018-04-02 00:00:45 +07:00
parent d563fb32ba
commit 86693c4930
No known key found for this signature in database
GPG Key ID: 2C393E0F18A9236D
1 changed files with 38 additions and 18 deletions

View File

@ -141,22 +141,22 @@ class AfreecaTVIE(InfoExtractor):
'skip_download': True, 'skip_download': True,
}, },
}, { }, {
# adult video # PARTIAL_ADULT
'url': 'http://vod.afreecatv.com/PLAYER/STATION/26542731', 'url': 'http://vod.afreecatv.com/PLAYER/STATION/32028439',
'info_dict': { 'info_dict': {
'id': '20171001_F1AE1711_196617479_1', 'id': '20180327_27901457_202289533_1',
'ext': 'mp4', 'ext': 'mp4',
'title': '[생]서아 초심 찾기 방송 (part 1)', 'title': '[생]빨개요♥ (part 1)',
'thumbnail': 're:^https?://(?:video|st)img.afreecatv.com/.*$', 'thumbnail': 're:^https?://(?:video|st)img.afreecatv.com/.*$',
'uploader': 'BJ서아', 'uploader': '[SA]서아',
'uploader_id': 'bjdyrksu', 'uploader_id': 'bjdyrksu',
'upload_date': '20171001', 'upload_date': '20180327',
'duration': 3600, 'duration': 3601,
'age_limit': 18,
}, },
'params': { 'params': {
'skip_download': True, 'skip_download': True,
}, },
'expected_warnings': ['adult content'],
}, { }, {
'url': 'http://www.afreecatv.com/player/Player.swf?szType=szBjId=djleegoon&nStationNo=11273158&nBbsNo=13161095&nTitleNo=36327652', 'url': 'http://www.afreecatv.com/player/Player.swf?szType=szBjId=djleegoon&nStationNo=11273158&nBbsNo=13161095&nTitleNo=36327652',
'only_matching': True, 'only_matching': True,
@ -235,21 +235,41 @@ class AfreecaTVIE(InfoExtractor):
video_id = self._search_regex( video_id = self._search_regex(
r'nTitleNo\s*=\s*(\d+)', webpage, 'title', default=video_id) r'nTitleNo\s*=\s*(\d+)', webpage, 'title', default=video_id)
video_xml = self._download_xml( partial_view = False
'http://afbbs.afreecatv.com:8080/api/video/get_video_info.php', for _ in range(2):
video_id, headers={ query = {
'Referer': url,
}, query={
'nTitleNo': video_id, 'nTitleNo': video_id,
'nStationNo': station_id, 'nStationNo': station_id,
'nBbsNo': bbs_id, 'nBbsNo': bbs_id,
'partialView': 'SKIP_ADULT', }
}) if partial_view:
query['partialView'] = 'SKIP_ADULT'
video_xml = self._download_xml(
'http://afbbs.afreecatv.com:8080/api/video/get_video_info.php',
video_id, 'Downloading video info XML%s'
% (' (skipping adult)' if partial_view else ''),
video_id, headers={
'Referer': url,
}, query=query)
flag = xpath_text(video_xml, './track/flag', 'flag', default=None) flag = xpath_text(video_xml, './track/flag', 'flag', default=None)
if flag and flag != 'SUCCEED': if flag and flag == 'SUCCEED':
break
if flag == 'PARTIAL_ADULT':
self._downloader.report_warning(
'In accordance with local laws and regulations, underage users are restricted from watching adult content. '
'Only content suitable for all ages will be downloaded. '
'Provide account credentials if you wish to download restricted content.')
partial_view = True
continue
elif flag == 'ADULT':
error = 'Only users older than 19 are able to watch this video. Provide account credentials to download this content.'
else:
error = flag
raise ExtractorError( raise ExtractorError(
'%s said: %s' % (self.IE_NAME, flag), expected=True) '%s said: %s' % (self.IE_NAME, error), expected=True)
else:
raise ExtractorError('Unable to download video info')
video_element = video_xml.findall(compat_xpath('./track/video'))[-1] video_element = video_xml.findall(compat_xpath('./track/video'))[-1]
if video_element is None or video_element.text is None: if video_element is None or video_element.text is None: