astrXbian/.install/.kodi/addons/plugin.video.arteplussept/resources/lib/api.py

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)