mirror of
https://github.com/ytdl-org/youtube-dl.git
synced 2024-11-25 19:52:11 +00:00
[funk:channel] Improve extraction (closes #16285)
This commit is contained in:
parent
d3711b0050
commit
c84eae4f66
1 changed files with 40 additions and 11 deletions
|
@ -5,7 +5,10 @@ import re
|
||||||
|
|
||||||
from .common import InfoExtractor
|
from .common import InfoExtractor
|
||||||
from .nexx import NexxIE
|
from .nexx import NexxIE
|
||||||
from ..utils import int_or_none
|
from ..utils import (
|
||||||
|
int_or_none,
|
||||||
|
try_get,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class FunkBaseIE(InfoExtractor):
|
class FunkBaseIE(InfoExtractor):
|
||||||
|
@ -77,6 +80,20 @@ class FunkChannelIE(FunkBaseIE):
|
||||||
'params': {
|
'params': {
|
||||||
'skip_download': True,
|
'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/',
|
'url': 'https://www.funk.net/channel/59d5149841dca100012511e3/mein-erster-job-lovemilla-folge-1/lovemilla/',
|
||||||
'only_matching': True,
|
'only_matching': True,
|
||||||
|
@ -87,16 +104,28 @@ class FunkChannelIE(FunkBaseIE):
|
||||||
channel_id = mobj.group('id')
|
channel_id = mobj.group('id')
|
||||||
alias = mobj.group('alias')
|
alias = mobj.group('alias')
|
||||||
|
|
||||||
results = self._download_json(
|
headers = {
|
||||||
'https://www.funk.net/api/v3.0/content/videos/filter', channel_id,
|
|
||||||
headers={
|
|
||||||
'authorization': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjbGllbnROYW1lIjoiY3VyYXRpb24tdG9vbCIsInNjb3BlIjoic3RhdGljLWNvbnRlbnQtYXBpLGN1cmF0aW9uLWFwaSxzZWFyY2gtYXBpIn0.q4Y2xZG8PFHai24-4Pjx2gym9RmJejtmK6lMXP5wAgc',
|
'authorization': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjbGllbnROYW1lIjoiY3VyYXRpb24tdG9vbCIsInNjb3BlIjoic3RhdGljLWNvbnRlbnQtYXBpLGN1cmF0aW9uLWFwaSxzZWFyY2gtYXBpIn0.q4Y2xZG8PFHai24-4Pjx2gym9RmJejtmK6lMXP5wAgc',
|
||||||
'Referer': url,
|
'Referer': url,
|
||||||
}, query={
|
}
|
||||||
|
|
||||||
|
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,
|
'channelId': channel_id,
|
||||||
'size': 100,
|
'size': 100,
|
||||||
})['result']
|
})['result']
|
||||||
|
|
||||||
video = next(r for r in results if r.get('alias') == alias)
|
video = next(r for r in results if r.get('alias') == alias)
|
||||||
|
|
||||||
return self._make_url_result(video)
|
return self._make_url_result(video)
|
||||||
|
|
Loading…
Reference in a new issue