You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
2.8 KiB
86 lines
2.8 KiB
# coding: utf-8 |
|
from __future__ import unicode_literals |
|
|
|
import json |
|
import re |
|
|
|
from .common import InfoExtractor |
|
from .kaltura import KalturaIE |
|
|
|
|
|
class AZMedienIE(InfoExtractor): |
|
IE_DESC = 'AZ Medien videos' |
|
_VALID_URL = r'''(?x) |
|
https?:// |
|
(?:www\.)? |
|
(?P<host> |
|
telezueri\.ch| |
|
telebaern\.tv| |
|
telem1\.ch |
|
)/ |
|
[^/]+/ |
|
(?P<id> |
|
[^/]+-(?P<article_id>\d+) |
|
) |
|
(?: |
|
\#video= |
|
(?P<kaltura_id> |
|
[_0-9a-z]+ |
|
) |
|
)? |
|
''' |
|
|
|
_TESTS = [{ |
|
'url': 'https://www.telezueri.ch/sonntalk/bundesrats-vakanzen-eu-rahmenabkommen-133214569', |
|
'info_dict': { |
|
'id': '1_anruz3wy', |
|
'ext': 'mp4', |
|
'title': 'Bundesrats-Vakanzen / EU-Rahmenabkommen', |
|
'uploader_id': 'TVOnline', |
|
'upload_date': '20180930', |
|
'timestamp': 1538328802, |
|
}, |
|
'params': { |
|
'skip_download': True, |
|
}, |
|
}, { |
|
'url': 'https://www.telebaern.tv/telebaern-news/montag-1-oktober-2018-ganze-sendung-133531189#video=0_7xjo9lf1', |
|
'only_matching': True |
|
}] |
|
|
|
_PARTNER_ID = '1719221' |
|
|
|
def _real_extract(self, url): |
|
mobj = re.match(self._VALID_URL, url) |
|
host = mobj.group('host') |
|
video_id = mobj.group('id') |
|
entry_id = mobj.group('kaltura_id') |
|
|
|
if not entry_id: |
|
api_url = 'https://www.%s/api/pub/gql/%s' % (host, host.split('.')[0]) |
|
payload = { |
|
'query': '''query VideoContext($articleId: ID!) { |
|
article: node(id: $articleId) { |
|
... on Article { |
|
mainAssetRelation { |
|
asset { |
|
... on VideoAsset { |
|
kalturaId |
|
} |
|
} |
|
} |
|
} |
|
} |
|
}''', |
|
'variables': {'articleId': 'Article:%s' % mobj.group('article_id')}, |
|
} |
|
json_data = self._download_json( |
|
api_url, video_id, headers={ |
|
'Content-Type': 'application/json', |
|
}, |
|
data=json.dumps(payload).encode()) |
|
entry_id = json_data['data']['article']['mainAssetRelation']['asset']['kalturaId'] |
|
|
|
return self.url_result( |
|
'kaltura:%s:%s' % (self._PARTNER_ID, entry_id), |
|
ie=KalturaIE.ie_key(), video_id=entry_id)
|
|
|