summaryrefslogtreecommitdiff
path: root/plugin.video.vrt.nu/resources/lib
diff options
context:
space:
mode:
Diffstat (limited to 'plugin.video.vrt.nu/resources/lib')
-rw-r--r--plugin.video.vrt.nu/resources/lib/helperobjects/helperobjects.py8
-rw-r--r--plugin.video.vrt.nu/resources/lib/kodiwrappers/kodiwrapper.py20
-rw-r--r--plugin.video.vrt.nu/resources/lib/vrtplayer/metadatacreator.py2
-rw-r--r--plugin.video.vrt.nu/resources/lib/vrtplayer/urltostreamservice.py18
-rw-r--r--plugin.video.vrt.nu/resources/lib/vrtplayer/vrtplayer.py62
5 files changed, 65 insertions, 45 deletions
diff --git a/plugin.video.vrt.nu/resources/lib/helperobjects/helperobjects.py b/plugin.video.vrt.nu/resources/lib/helperobjects/helperobjects.py
index 599d3ef..9508545 100644
--- a/plugin.video.vrt.nu/resources/lib/helperobjects/helperobjects.py
+++ b/plugin.video.vrt.nu/resources/lib/helperobjects/helperobjects.py
@@ -16,14 +16,14 @@ class StreamURLS:
class Credentials:
- def __init__(self, addon):
- self.addon = addon
+ def __init__(self, kodi_wrapper):
+ self._kodi_wrapper = kodi_wrapper
self.reload()
def are_filled_in(self):
return not (self.username is None or self.password is None or self.username == "" or self.password == "")
def reload(self):
- self.username = self.addon.getSetting("username")
- self.password = self.addon.getSetting("password")
+ self.username = self._kodi_wrapper.get_setting("username")
+ self.password = self._kodi_wrapper.get_setting("password")
diff --git a/plugin.video.vrt.nu/resources/lib/kodiwrappers/kodiwrapper.py b/plugin.video.vrt.nu/resources/lib/kodiwrappers/kodiwrapper.py
index 7edcccd..6df324d 100644
--- a/plugin.video.vrt.nu/resources/lib/kodiwrappers/kodiwrapper.py
+++ b/plugin.video.vrt.nu/resources/lib/kodiwrappers/kodiwrapper.py
@@ -3,7 +3,6 @@ import xbmcgui
import xbmcplugin
from urllib import urlencode
from resources.lib.vrtplayer import vrtplayer
-from resources.lib.vrtplayer import urltostreamservice
from resources.lib.kodiwrappers import sortmethod
class KodiWrapper:
@@ -35,11 +34,7 @@ class KodiWrapper:
xbmcplugin.endOfDirectory(self._handle)
- def play_video(self, path):
- stream_service = urltostreamservice.UrlToStreamService(vrtplayer.VRTPlayer._VRT_BASE,
- vrtplayer.VRTPlayer._VRTNU_BASE_URL,
- self._addon)
- stream = stream_service.get_stream_from_url(path)
+ def play_video(self, stream):
if stream is not None:
play_item = xbmcgui.ListItem(path=stream.stream_url)
if stream.subtitle_url is not None:
@@ -49,3 +44,16 @@ class KodiWrapper:
def play_livestream(self, path):
play_item = xbmcgui.ListItem(path=path)
xbmcplugin.setResolvedUrl(self._handle, True, listitem=play_item)
+
+ def show_ok_dialog(self, title, message):
+ xbmcgui.Dialog().ok(self._addon.getAddonInfo('name'), title, message)
+
+ def get_localized_string(self, string_id):
+ return self._addon.getLocalizedString(string_id)
+
+ def get_setting(self, setting_id ):
+ return self._addon.getSetting(setting_id)
+
+ def open_settings(self):
+ self._addon.openSettings()
+
diff --git a/plugin.video.vrt.nu/resources/lib/vrtplayer/metadatacreator.py b/plugin.video.vrt.nu/resources/lib/vrtplayer/metadatacreator.py
index 44a3c35..7abfb9d 100644
--- a/plugin.video.vrt.nu/resources/lib/vrtplayer/metadatacreator.py
+++ b/plugin.video.vrt.nu/resources/lib/vrtplayer/metadatacreator.py
@@ -29,7 +29,7 @@ class MetadataCreator:
return self._datetime
@datetime.setter
- def datetime (self, value):
+ def datetime(self, value):
self._datetime = value
def get_video_dictionary(self):
diff --git a/plugin.video.vrt.nu/resources/lib/vrtplayer/urltostreamservice.py b/plugin.video.vrt.nu/resources/lib/vrtplayer/urltostreamservice.py
index f295d65..f14e5ae 100644
--- a/plugin.video.vrt.nu/resources/lib/vrtplayer/urltostreamservice.py
+++ b/plugin.video.vrt.nu/resources/lib/vrtplayer/urltostreamservice.py
@@ -1,6 +1,4 @@
-import xbmcgui
import requests
-import xbmc
import json
import cookielib
import urlparse
@@ -13,16 +11,16 @@ class UrlToStreamService:
_API_KEY ="3_qhEcPa5JGFROVwu5SWKqJ4mVOIkwlFNMSKwzPDAh8QZOtHqu6L4nD5Q7lk0eXOOG"
_BASE_GET_STREAM_URL_PATH = "https://mediazone.vrt.be/api/v1/vrtvideo/assets/"
- def __init__(self, vrt_base, vrtnu_base_url, addon):
+ def __init__(self, vrt_base, vrtnu_base_url, kodi_wrapper):
self._vrt_base = vrt_base
self._vrtnu_base_url = vrtnu_base_url
- self._addon = addon
+ self._kodi_wrapper = kodi_wrapper
self._session = requests.session()
def get_stream_from_url(self, url):
- cred = helperobjects.Credentials(self._addon)
+ cred = helperobjects.Credentials(self._kodi_wrapper)
if not cred.are_filled_in():
- self._addon.openSettings()
+ self._kodi_wrapper.open_settings()
cred.reload()
url = urlparse.urljoin(self._vrt_base, url)
r = self._session.post("https://accounts.eu1.gigya.com/accounts.login",
@@ -55,13 +53,13 @@ class UrlToStreamService:
stream_response = self._session.get(final_url)
hls = self.__get_hls(stream_response.json()['targetUrls']).replace("https", "http")
subtitle = None
- if self._addon.getSetting("showsubtitles") == "true":
+ if self._kodi_wrapper.get_setting("showsubtitles") == "true":
subtitle = self.__get_subtitle(stream_response.json()['subtitleUrls'])
return helperobjects.StreamURLS(hls, subtitle)
else:
- xbmcgui.Dialog().ok(self._addon.getAddonInfo('name'),
- self._addon.getLocalizedString(32051),
- self._addon.getLocalizedString(32052))
+ title = self._kodi_wrapper.get_localized_string(32051)
+ message = self._kodi_wrapper.get_localized_string(32052)
+ self._kodi_wrapper.show_ok_dialog(title, message)
@staticmethod
def __get_hls(dictionary):
diff --git a/plugin.video.vrt.nu/resources/lib/vrtplayer/vrtplayer.py b/plugin.video.vrt.nu/resources/lib/vrtplayer/vrtplayer.py
index 3b413ce..9315387 100644
--- a/plugin.video.vrt.nu/resources/lib/vrtplayer/vrtplayer.py
+++ b/plugin.video.vrt.nu/resources/lib/vrtplayer/vrtplayer.py
@@ -8,6 +8,8 @@ from resources.lib.vrtplayer import metadatacollector
from resources.lib.vrtplayer import statichelper
from resources.lib.vrtplayer import actions
from resources.lib.vrtplayer import metadatacreator
+from resources.lib.kodiwrappers import sortmethod
+
class VRTPlayer:
@@ -21,33 +23,38 @@ class VRTPlayer:
_VRTNU_BASE_URL = urljoin(_VRT_BASE, "/vrtnu/")
_VRTNU_SEARCH_URL = "https://search.vrt.be/suggest?facets[categories]="
- def __init__(self, addon, addon_path):
+ def __init__(self, addon_path, kodi_wrapper, url_to_stream_service):
self.metadata_collector = metadatacollector.MetadataCollector()
- self._addon = addon
self._addon_path = addon_path
+ self._kodi_wrapper = kodi_wrapper
+ self._url_toStream_service = url_to_stream_service
- def get_main_menu_items(self):
- return {helperobjects.TitleItem(self._addon.getLocalizedString(32091), {'action': actions.LISTING_AZ}, False,
+ def show_main_menu_items(self):
+ menu_items = {helperobjects.TitleItem(self._kodi_wrapper.get_localized_string(32091), {'action': actions.LISTING_AZ}, False,
None),
- helperobjects.TitleItem(self._addon.getLocalizedString(32092), {'action': actions.LISTING_CATEGORIES},
+ helperobjects.TitleItem(self._kodi_wrapper.get_localized_string(32092), {'action': actions.LISTING_CATEGORIES},
False, None),
- helperobjects.TitleItem(self._addon.getLocalizedString(32100), {'action': actions.LISTING_LIVE}, False,
+ helperobjects.TitleItem(self._kodi_wrapper.get_localized_string(32100), {'action': actions.LISTING_LIVE}, False,
None)}
+ self._kodi_wrapper.show_listing(menu_items, sortmethod.ALPHABET)
- def get_az_menu_items(self):
+ def show_az_menu_items(self):
joined_url = urljoin(self._VRTNU_BASE_URL, "./a-z/")
- return self.__get_menu_items(joined_url, {"class": "tile"}, actions.LISTING_VIDEOS, self.metadata_collector.get_az_metadata)
+ menu_items = self.__get_menu_items(joined_url, {"class": "tile"}, actions.LISTING_VIDEOS,
+ self.metadata_collector.get_az_metadata)
+ self._kodi_wrapper.show_listing(menu_items, sortmethod.ALPHABET)
- def get_category_menu_items(self):
+ def show_category_menu_items(self):
joined_url = urljoin(self._VRTNU_BASE_URL, "./categorieen/")
- return self.__get_menu_items(joined_url, {"class": "tile tile--category"}, actions.LISTING_CATEGORY_VIDEOS)
+ menu_items = self.__get_menu_items(joined_url, {"class": "tile tile--category"}, actions.LISTING_CATEGORY_VIDEOS)
+ self._kodi_wrapper.show_listing(menu_items, sortmethod.ALPHABET)
- def get_video_category_episodes(self, path):
+ def show_video_category_episodes(self, path):
category = path.split('/')[-2]
joined_url = self._VRTNU_SEARCH_URL + category
response = requests.get(joined_url)
programs = response.json()
- listing = []
+ menu_items = []
for program in programs:
title = program["title"]
plot = BeautifulSoup(program["description"], "html.parser").text
@@ -62,25 +69,33 @@ class VRTPlayer:
"")
item = helperobjects.TitleItem(title, {'action': actions.LISTING_VIDEOS, 'video': link_to_video},
False, thumbnail, video_dictionary)
- listing.append(item)
- return listing
+ menu_items.append(item)
+ self._kodi_wrapper.show_listing(menu_items, sortmethod.ALPHABET)
- def get_livestream_items(self):
- return {helperobjects.TitleItem(self._addon.getLocalizedString(32101),
+ def play_vrtnu_video(self, url):
+ stream = self._url_toStream_service.get_stream_from_url(url)
+ self._kodi_wrapper.play_video(stream)
+
+ def play_livestream(self, url):
+ self._kodi_wrapper.play_livestream(url)
+
+ def show_livestream_items(self):
+ livestream_items = {helperobjects.TitleItem(self._kodi_wrapper.get_localized_string(32101),
{'action': actions.PLAY_LIVE, 'video': self._EEN_LIVESTREAM},
True, self.__get_media("een.png")),
- helperobjects.TitleItem(self._addon.getLocalizedString(32102),
+ helperobjects.TitleItem(self._kodi_wrapper.get_localized_string(32102),
{'action': actions.PLAY_LIVE, 'video': self._CANVAS_LIVESTREAM_},
True, self.__get_media("canvas.png")),
- helperobjects.TitleItem(self._addon.getLocalizedString(32103),
+ helperobjects.TitleItem(self._kodi_wrapper.get_localized_string(32103),
{'action': actions.PLAY_LIVE, 'video': self._KETNET_LIVESTREAM},
True, self.__get_media("ketnet.png")),
- helperobjects.TitleItem(self._addon.getLocalizedString(32104),
+ helperobjects.TitleItem(self._kodi_wrapper.get_localized_string(32104),
{'action': actions.PLAY_LIVE, 'video': self._SPORZA_LIVESTREAM},
True, self.__get_media("sporza.png"))
}
+ self._kodi_wrapper.show_listing(livestream_items, sortmethod.ALPHABET)
- def get_videos(self, path):
+ def show_videos(self, path):
url = urljoin(self._VRT_BASE, path)
#xbmc.log(url, xbmc.LOGWARNING)
# go to url.relevant gets redirected and go on with this url
@@ -102,7 +117,7 @@ class VRTPlayer:
title_items.extend(self.__get_multiple_videos(soup))
else:
title_items.extend(self.__get_single_video(relevant_path.url, soup))
- return title_items
+ self._kodi_wrapper.show_listing(title_items)
def __get_episodes(self, option_tags):
@@ -118,7 +133,6 @@ class VRTPlayer:
title_items.append(helperobjects.TitleItem(title, {"action" : actions.LISTING_VIDEOS, 'video':path}, False))
return title_items
-
def __get_multiple_videos(self, tiles):
title_items = []
episode_list = tiles.find("div", {"id": "episodelist__slider"})
@@ -136,7 +150,7 @@ class VRTPlayer:
path = tile["href"]
video_dictionary = self.metadata_collector.get_multiple_layout_episode_metadata(tile)
- title_items.append(helperobjects.TitleItem(title, {"action": "play", "video": path}, True, thumbnail, video_dictionary))
+ title_items.append(helperobjects.TitleItem(title, {"action": actions.PLAY, "video": path}, True, thumbnail, video_dictionary))
return title_items
def __get_single_video(self, path, soup):
@@ -149,7 +163,7 @@ class VRTPlayer:
vrt_video = soup.find(class_="vrtvideo")
thumbnail = VRTPlayer.__format_image_url(vrt_video)
- title_items.append(helperobjects.TitleItem(list_item_title, {"action": "play", "video": path}, True, thumbnail, video_dictionary))
+ title_items.append(helperobjects.TitleItem(list_item_title, {"action": actions.PLAY, "video": path}, True, thumbnail, video_dictionary))
return title_items
def __get_media(self, file_name):