From 3f55f3348788cbcbe2b47dfe0971b5e3ea5858af Mon Sep 17 00:00:00 2001 From: Yves Fischer Date: Thu, 26 May 2016 21:46:37 +0200 Subject: kodi plugin --- kodi-mediabrowser/addon.xml | 17 +++++++++ kodi-mediabrowser/icon.png | Bin 0 -> 30799 bytes kodi-mediabrowser/main.py | 62 +++++++++++++++++++++++++++++++ kodi-mediabrowser/resources/settings.xml | 3 ++ 4 files changed, 82 insertions(+) create mode 100644 kodi-mediabrowser/addon.xml create mode 100644 kodi-mediabrowser/icon.png create mode 100644 kodi-mediabrowser/main.py create mode 100644 kodi-mediabrowser/resources/settings.xml (limited to 'kodi-mediabrowser') diff --git a/kodi-mediabrowser/addon.xml b/kodi-mediabrowser/addon.xml new file mode 100644 index 0000000..4343427 --- /dev/null +++ b/kodi-mediabrowser/addon.xml @@ -0,0 +1,17 @@ + + + + + + + video + + + Kodi plugin for flask-mediabrowser + Allows to browse videos from kodi. + ... + + diff --git a/kodi-mediabrowser/icon.png b/kodi-mediabrowser/icon.png new file mode 100644 index 0000000..f3cdd9e Binary files /dev/null and b/kodi-mediabrowser/icon.png differ diff --git a/kodi-mediabrowser/main.py b/kodi-mediabrowser/main.py new file mode 100644 index 0000000..ad70506 --- /dev/null +++ b/kodi-mediabrowser/main.py @@ -0,0 +1,62 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# Module: default +import sys +from urlparse import parse_qsl +import xbmcgui +import xbmcplugin +import xbmcaddon +import requests +from urllib import quote +import logging + +logging.basicConfig(level=logging.INFO) + +# Get the plugin url in plugin:// notation. +_url = sys.argv[0] +# Get the plugin handle as an integer number. +_handle = int(sys.argv[1]) + +addon = xbmcaddon.Addon() + +endpoint = addon.getSetting('endpoint') + + +def list_files(path): + resp = requests.get(endpoint + path) + data = resp.json() + files = data['files'] + + listing = [] + for file in files: + list_item = xbmcgui.ListItem(label=file['name']) + + if file['type'] == 'directory': + list_item.setInfo('video', {'title': file['name'] + '/'}) + url = '{0}?action=list_files&path={1}'.format(_url, quote(file['path'])) + listing.append((url, list_item, True)) + else: + list_item.setInfo('video', {'title': file['name']}) + list_item.setArt({'thumb': endpoint + file['poster']}) + list_item.setProperty('IsPlayable', 'true') + url = endpoint + file['m3u8'] + listing.append((url, list_item, False)) + xbmcplugin.addDirectoryItems(_handle, listing, len(listing)) + xbmcplugin.addSortMethod(_handle, xbmcplugin.SORT_METHOD_LABEL_IGNORE_THE) + xbmcplugin.endOfDirectory(_handle) + + +def router(paramstring): + params = dict(parse_qsl(paramstring)) + if params: + if params['action'] == 'list_files': + # Display the list of videos in a provided category. + list_videos(params['path']) + else: + raise Exception('Invalid params') + else: + list_files('/json/') + + +if __name__ == '__main__': + router(sys.argv[2][1:]) diff --git a/kodi-mediabrowser/resources/settings.xml b/kodi-mediabrowser/resources/settings.xml new file mode 100644 index 0000000..af2b4e2 --- /dev/null +++ b/kodi-mediabrowser/resources/settings.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file -- cgit v1.2.1