64 lines
2.0 KiB
Python
64 lines
2.0 KiB
Python
from collections import OrderedDict
|
|
import requests
|
|
|
|
from addon import PluginInformation
|
|
|
|
_base_api_url = 'http://www.arte.tv/hbbtvv2/services/web/index.php'
|
|
_base_headers = {
|
|
'user-agent': PluginInformation.name + '/' + PluginInformation.version
|
|
}
|
|
_endpoints = {
|
|
'categories': '/EMAC/teasers/categories/v2/{lang}',
|
|
'category': '/EMAC/teasers/category/v2/{category_code}/{lang}',
|
|
'subcategory': '/OPA/v3/videos/subcategory/{sub_category_code}/page/1/limit/100/{lang}',
|
|
'magazines': '/OPA/v3/magazines/{lang}',
|
|
'collection': '/OPA/v3/videos/collection/{kind}/{collection_id}/{lang}',
|
|
'streams': '/OPA/v3/streams/{program_id}/{kind}/{lang}',
|
|
|
|
|
|
'daily': '/OPA/v3/programs/{date}/{lang}'
|
|
}
|
|
|
|
|
|
def categories(lang):
|
|
url = _endpoints['categories'].format(lang=lang)
|
|
return _load_json(url).get('categories', {})
|
|
|
|
|
|
def magazines(lang):
|
|
url = _endpoints['magazines'].format(lang=lang)
|
|
return _load_json(url).get('magazines', {})
|
|
|
|
|
|
def category(category_code, lang):
|
|
url = _endpoints['category'].format(category_code=category_code, lang=lang)
|
|
return _load_json(url).get('category', {})
|
|
|
|
|
|
def subcategory(sub_category_code, lang):
|
|
url = _endpoints['subcategory'].format(
|
|
sub_category_code=sub_category_code, lang=lang)
|
|
return _load_json(url).get('videos', {})
|
|
|
|
|
|
def collection(kind, collection_id, lang):
|
|
url = _endpoints['collection'].format(kind=kind,
|
|
collection_id=collection_id, lang=lang)
|
|
return _load_json(url).get('videos', [])
|
|
|
|
|
|
def streams(kind, program_id, lang):
|
|
url = _endpoints['streams'] .format(
|
|
kind=kind, program_id=program_id, lang=lang)
|
|
return _load_json(url).get('videoStreams', [])
|
|
|
|
|
|
def daily(date, lang):
|
|
url = _endpoints['daily'].format(date=date, lang=lang)
|
|
return _load_json(url).get('programs', [])
|
|
|
|
|
|
def _load_json(url, params=None, headers=_base_headers):
|
|
r = requests.get(_base_api_url + url, params=params, headers=headers)
|
|
return r.json(object_pairs_hook=OrderedDict)
|