Fixed links in the Readme; changed parsing method

This commit is contained in:
Roman Miroshnychenko (Work) 2015-05-19 14:48:41 +03:00
parent f0bb82a9e5
commit 71d0717167
3 changed files with 15 additions and 14 deletions

View File

@ -1,9 +1,11 @@
Simple example plugin for Kodi mediacenter Simple example plugin for Kodi mediacenter
=== ===
This is a simple yet fully functional example of a video plugin for [Kodi](www.kodi.tv) mediacenter. This is a simple yet fully functional example of a video plugin for [Kodi](http://kodi.tv) mediacenter.
Please read the comments in the plugin code for more details. Please read the comments in the plugin code for more details.
**tests/** folder includes a simple example for partial unit testing of the plugin code. **tests/** folder includes a simple example for partial unit testing of the plugin code.
The plugin uses free sample videos are provided by [www.vidsplay.com](www.vidsplay.com). The plugin uses free sample videos are provided by [www.vidsplay.com](http://www.vidsplay.com/).
License: [GPL v.3](http://www.gnu.org/copyleft/gpl.html)

View File

@ -5,7 +5,7 @@
# License: GPL v.3 https://www.gnu.org/copyleft/gpl.html # License: GPL v.3 https://www.gnu.org/copyleft/gpl.html
import sys import sys
from urlparse import parse_qs from urlparse import parse_qsl
import xbmcgui import xbmcgui
import xbmcplugin import xbmcplugin
@ -146,16 +146,16 @@ def router(paramstring):
:return: :return:
""" """
# Parse a URL-encoded paramstring to the dictionary of # Parse a URL-encoded paramstring to the dictionary of
# {<parameter>: [<list of values>]} elements # {<parameter>: <value>} elements
params = parse_qs(paramstring) params = dict(parse_qsl(paramstring[1:]))
# Check the parameters passed to the plugin # Check the parameters passed to the plugin
if params: if params:
if params['action'][0] == 'listing': if params['action'] == 'listing':
# Display the list of videos in a provided category. # Display the list of videos in a provided category.
list_videos(params['category'][0]) list_videos(params['category'])
elif params['action'][0] == 'play': elif params['action'] == 'play':
# Play a video from a provided URL. # Play a video from a provided URL.
play_video(params['video'][0]) play_video(params['video'])
else: else:
# If the plugin is called from Kodi UI without any parameters, # If the plugin is called from Kodi UI without any parameters,
# display the list of video categories # display the list of video categories
@ -164,5 +164,4 @@ def router(paramstring):
if __name__ == '__main__': if __name__ == '__main__':
# Call the router function and pass the plugin call parameters to it. # Call the router function and pass the plugin call parameters to it.
# We use string slicing to remove starting "?" from the paramstring router(sys.argv[2])
router(sys.argv[2][1:])

View File

@ -40,7 +40,7 @@ class RouterTestCase(unittest.TestCase):
""" """
Test router for open a category request Test router for open a category request
""" """
default.router('action=listing&category=Animals') default.router('?action=listing&category=Animals')
mock_list_videos.assert_called_with('Animals') mock_list_videos.assert_called_with('Animals')
@mock.patch('default.play_video') @mock.patch('default.play_video')
@ -48,8 +48,8 @@ class RouterTestCase(unittest.TestCase):
""" """
Test router for a play video request Test router for a play video request
""" """
default.router('action=play&video=http://test') default.router('?action=play&video=http://test.mkv')
mock_play_video.assert_called_with('http://test') mock_play_video.assert_called_with('http://test.mkv')
# list_categories(), list_videos() and play_video() functions include # list_categories(), list_videos() and play_video() functions include
# mostly calls to Kody Python API with little or no custom logic. # mostly calls to Kody Python API with little or no custom logic.