mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 06:35:12 +00:00 
			
		
		
		
	[funk:channel] Improve extraction (closes #16285)
This commit is contained in:
		| @@ -5,7 +5,10 @@ import re | ||||
|  | ||||
| from .common import InfoExtractor | ||||
| from .nexx import NexxIE | ||||
| from ..utils import int_or_none | ||||
| from ..utils import ( | ||||
|     int_or_none, | ||||
|     try_get, | ||||
| ) | ||||
|  | ||||
|  | ||||
| class FunkBaseIE(InfoExtractor): | ||||
| @@ -77,6 +80,20 @@ class FunkChannelIE(FunkBaseIE): | ||||
|         'params': { | ||||
|             'skip_download': True, | ||||
|         }, | ||||
|     }, { | ||||
|         # only available via byIdList API | ||||
|         'url': 'https://www.funk.net/channel/informr/martin-sonneborn-erklaert-die-eu', | ||||
|         'info_dict': { | ||||
|             'id': '205067', | ||||
|             'ext': 'mp4', | ||||
|             'title': 'Martin Sonneborn erklärt die EU', | ||||
|             'description': 'md5:050f74626e4ed87edf4626d2024210c0', | ||||
|             'timestamp': 1494424042, | ||||
|             'upload_date': '20170510', | ||||
|         }, | ||||
|         'params': { | ||||
|             'skip_download': True, | ||||
|         }, | ||||
|     }, { | ||||
|         'url': 'https://www.funk.net/channel/59d5149841dca100012511e3/mein-erster-job-lovemilla-folge-1/lovemilla/', | ||||
|         'only_matching': True, | ||||
| @@ -87,16 +104,28 @@ class FunkChannelIE(FunkBaseIE): | ||||
|         channel_id = mobj.group('id') | ||||
|         alias = mobj.group('alias') | ||||
|  | ||||
|         results = self._download_json( | ||||
|             'https://www.funk.net/api/v3.0/content/videos/filter', channel_id, | ||||
|             headers={ | ||||
|                 'authorization': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjbGllbnROYW1lIjoiY3VyYXRpb24tdG9vbCIsInNjb3BlIjoic3RhdGljLWNvbnRlbnQtYXBpLGN1cmF0aW9uLWFwaSxzZWFyY2gtYXBpIn0.q4Y2xZG8PFHai24-4Pjx2gym9RmJejtmK6lMXP5wAgc', | ||||
|                 'Referer': url, | ||||
|             }, query={ | ||||
|                 'channelId': channel_id, | ||||
|                 'size': 100, | ||||
|             })['result'] | ||||
|         headers = { | ||||
|             'authorization': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjbGllbnROYW1lIjoiY3VyYXRpb24tdG9vbCIsInNjb3BlIjoic3RhdGljLWNvbnRlbnQtYXBpLGN1cmF0aW9uLWFwaSxzZWFyY2gtYXBpIn0.q4Y2xZG8PFHai24-4Pjx2gym9RmJejtmK6lMXP5wAgc', | ||||
|             'Referer': url, | ||||
|         } | ||||
|  | ||||
|         video = next(r for r in results if r.get('alias') == alias) | ||||
|         video = None | ||||
|  | ||||
|         by_id_list = self._download_json( | ||||
|             'https://www.funk.net/api/v3.0/content/videos/byIdList', channel_id, | ||||
|             headers=headers, query={ | ||||
|                 'ids': alias, | ||||
|             }, fatal=False) | ||||
|         if by_id_list: | ||||
|             video = try_get(by_id_list, lambda x: x['result'][0], dict) | ||||
|  | ||||
|         if not video: | ||||
|             results = self._download_json( | ||||
|                 'https://www.funk.net/api/v3.0/content/videos/filter', channel_id, | ||||
|                 headers=headers, query={ | ||||
|                     'channelId': channel_id, | ||||
|                     'size': 100, | ||||
|                 })['result'] | ||||
|             video = next(r for r in results if r.get('alias') == alias) | ||||
|  | ||||
|         return self._make_url_result(video) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Sergey M․
					Sergey M․