mirror of
				https://gitlab.com/ytdl-org/youtube-dl.git
				synced 2025-11-04 03:07:07 -05:00 
			
		
		
		
	[afreecatv] Use partial view only when necessary (closes #14450)
This commit is contained in:
		@@ -141,22 +141,22 @@ class AfreecaTVIE(InfoExtractor):
 | 
			
		||||
            'skip_download': True,
 | 
			
		||||
        },
 | 
			
		||||
    }, {
 | 
			
		||||
        # adult video
 | 
			
		||||
        'url': 'http://vod.afreecatv.com/PLAYER/STATION/26542731',
 | 
			
		||||
        # PARTIAL_ADULT
 | 
			
		||||
        'url': 'http://vod.afreecatv.com/PLAYER/STATION/32028439',
 | 
			
		||||
        'info_dict': {
 | 
			
		||||
            'id': '20171001_F1AE1711_196617479_1',
 | 
			
		||||
            'id': '20180327_27901457_202289533_1',
 | 
			
		||||
            'ext': 'mp4',
 | 
			
		||||
            'title': '[생]서아 초심 찾기 방송 (part 1)',
 | 
			
		||||
            'title': '[생]빨개요♥ (part 1)',
 | 
			
		||||
            'thumbnail': 're:^https?://(?:video|st)img.afreecatv.com/.*$',
 | 
			
		||||
            'uploader': 'BJ서아',
 | 
			
		||||
            'uploader': '[SA]서아',
 | 
			
		||||
            'uploader_id': 'bjdyrksu',
 | 
			
		||||
            'upload_date': '20171001',
 | 
			
		||||
            'duration': 3600,
 | 
			
		||||
            'age_limit': 18,
 | 
			
		||||
            'upload_date': '20180327',
 | 
			
		||||
            'duration': 3601,
 | 
			
		||||
        },
 | 
			
		||||
        'params': {
 | 
			
		||||
            'skip_download': True,
 | 
			
		||||
        },
 | 
			
		||||
        'expected_warnings': ['adult content'],
 | 
			
		||||
    }, {
 | 
			
		||||
        'url': 'http://www.afreecatv.com/player/Player.swf?szType=szBjId=djleegoon&nStationNo=11273158&nBbsNo=13161095&nTitleNo=36327652',
 | 
			
		||||
        'only_matching': True,
 | 
			
		||||
@@ -235,21 +235,41 @@ class AfreecaTVIE(InfoExtractor):
 | 
			
		||||
        video_id = self._search_regex(
 | 
			
		||||
            r'nTitleNo\s*=\s*(\d+)', webpage, 'title', default=video_id)
 | 
			
		||||
 | 
			
		||||
        video_xml = self._download_xml(
 | 
			
		||||
            'http://afbbs.afreecatv.com:8080/api/video/get_video_info.php',
 | 
			
		||||
            video_id, headers={
 | 
			
		||||
                'Referer': url,
 | 
			
		||||
            }, query={
 | 
			
		||||
        partial_view = False
 | 
			
		||||
        for _ in range(2):
 | 
			
		||||
            query = {
 | 
			
		||||
                'nTitleNo': video_id,
 | 
			
		||||
                'nStationNo': station_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)
 | 
			
		||||
        if flag and flag != 'SUCCEED':
 | 
			
		||||
            flag = xpath_text(video_xml, './track/flag', 'flag', default=None)
 | 
			
		||||
            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(
 | 
			
		||||
                '%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]
 | 
			
		||||
        if video_element is None or video_element.text is None:
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user