mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 06:35:12 +00:00 
			
		
		
		
	[ie/afreecatv:catchstory] Add extractor (#10235)
Closes #10112 Authored by: hui1601
This commit is contained in:
		| @@ -72,7 +72,7 @@ class AfreecaTVIE(AfreecaTVBaseIE): | ||||
|                             )\?.*?\bnTitleNo=| | ||||
|                             vod\.afreecatv\.com/(PLAYER/STATION|player)/ | ||||
|                         ) | ||||
|                         (?P<id>\d+) | ||||
|                         (?P<id>\d+)/?(?:$|[?#&]) | ||||
|                     ''' | ||||
|     _TESTS = [{ | ||||
|         'url': 'http://live.afreecatv.com:8079/app/index.cgi?szType=read_ucc_bbs&szBjId=dailyapril&nStationNo=16711924&nBbsNo=18605867&nTitleNo=36164052&szSkin=', | ||||
| @@ -253,6 +253,43 @@ class AfreecaTVIE(AfreecaTVBaseIE): | ||||
|         return self.playlist_result(entries, video_id, multi_video=True, **common_info) | ||||
| 
 | ||||
| 
 | ||||
| class AfreecaTVCatchStoryIE(AfreecaTVBaseIE): | ||||
|     IE_NAME = 'afreecatv:catchstory' | ||||
|     IE_DESC = 'afreecatv.com catch story' | ||||
|     _VALID_URL = r'https?://vod\.afreecatv\.com/player/(?P<id>\d+)/catchstory' | ||||
|     _TESTS = [{ | ||||
|         'url': 'https://vod.afreecatv.com/player/103247/catchstory', | ||||
|         'info_dict': { | ||||
|             'id': '103247', | ||||
|         }, | ||||
|         'playlist_count': 2, | ||||
|     }] | ||||
| 
 | ||||
|     def _real_extract(self, url): | ||||
|         video_id = self._match_id(url) | ||||
|         data = self._download_json( | ||||
|             'https://api.m.afreecatv.com/catchstory/a/view', video_id, headers={'Referer': url}, | ||||
|             query={'aStoryListIdx': '', 'nStoryIdx': video_id}, impersonate=True) | ||||
| 
 | ||||
|         return self.playlist_result(self._entries(data), video_id) | ||||
| 
 | ||||
|     @staticmethod | ||||
|     def _entries(data): | ||||
|         # 'files' is always a list with 1 element | ||||
|         yield from traverse_obj(data, ( | ||||
|             'data', lambda _, v: v['story_type'] == 'catch', | ||||
|             'catch_list', lambda _, v: v['files'][0]['file'], { | ||||
|                 'id': ('files', 0, 'file_info_key', {str}), | ||||
|                 'url': ('files', 0, 'file', {url_or_none}), | ||||
|                 'duration': ('files', 0, 'duration', {functools.partial(int_or_none, scale=1000)}), | ||||
|                 'title': ('title', {str}), | ||||
|                 'uploader': ('writer_nick', {str}), | ||||
|                 'uploader_id': ('writer_id', {str}), | ||||
|                 'thumbnail': ('thumb', {url_or_none}), | ||||
|                 'timestamp': ('write_timestamp', {int_or_none}), | ||||
|             })) | ||||
| 
 | ||||
| 
 | ||||
| class AfreecaTVLiveIE(AfreecaTVBaseIE): | ||||
|     IE_NAME = 'afreecatv:live' | ||||
|     IE_DESC = 'afreecatv.com livestreams' | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Dong Heon Hee
					Dong Heon Hee