diff options
Diffstat (limited to 'plugin.video.btsportvideo/addon.py')
-rw-r--r-- | plugin.video.btsportvideo/addon.py | 43 |
1 files changed, 34 insertions, 9 deletions
diff --git a/plugin.video.btsportvideo/addon.py b/plugin.video.btsportvideo/addon.py index d671ea6..ac0db52 100644 --- a/plugin.video.btsportvideo/addon.py +++ b/plugin.video.btsportvideo/addon.py @@ -26,10 +26,11 @@ import traceback # Workaround for 'Failed to import _strptime because the import lock is held by another thread.' +from datetime import datetime +import operator import _strptime # pylint: disable=unused-import from kodiswift import Plugin -import rollbar.kodi from resources.lib import api @@ -40,9 +41,9 @@ plugin = Plugin(addon_id='plugin.video.btsportvideo') def categories(): - yield {'label': '[B]{}[/B]'.format(plugin.get_string(30002)), + yield {'label': u'[B]{}[/B]'.format(plugin.get_string(30002)), 'path': plugin.url_for('search')} - yield {'label': '[B]{}[/B]'.format(plugin.get_string(30001)), + yield {'label': u'[B]{}[/B]'.format(plugin.get_string(30001)), 'path': plugin.url_for('show_videos_by_category_first_page', category='all')} for category in api.categories(): yield {'label': category, @@ -85,6 +86,16 @@ def show_videos(func, route, page, update_listing, **kwargs): ) +def previous_search_items(): + for search_term, _timestamp in sorted(plugin.get_storage('searches').items(), + key=operator.itemgetter(1), + reverse=True): + yield { + 'label': search_term, + 'path': plugin.url_for('show_search_results_first_page', term=search_term) + } + + @plugin.cached_route('/') def index(): return list(categories()) @@ -98,30 +109,44 @@ def show_videos_by_category(category, page='1', update_listing=True): update_listing, category=category) -@plugin.route('/search/<term>', name='show_search_results_first_page', +@plugin.route('/search/term/<term>', name='show_search_results_first_page', options={'update_listing': False}) -@plugin.route('/search/<term>/<page>') +@plugin.route('/search/term/<term>/<page>') def show_search_results(term, page='1', update_listing=True): + plugin.get_storage('searches')[term] = datetime.now() return show_videos(api.search_results, 'show_search_results', int(page), update_listing, term=term) -@plugin.route('/search') -def search(): +@plugin.route('/search/input') +def new_search(): term = plugin.keyboard(heading=plugin.get_string(30002)) if term: url = plugin.url_for('show_search_results_first_page', term=term) - plugin.redirect(url) + plugin.request.url = url + return plugin.redirect(url) + return plugin.redirect(plugin.url_for('search')) + + +@plugin.route('/search') +def search(): + yield { + 'label': u'[B]{}[/B]'.format(plugin.get_string(30005)), + 'path': plugin.url_for('new_search') + } + for item in previous_search_items(): + yield item if __name__ == '__main__': + import rollbar.kodi try: plugin.run() except Exception as exc: + plugin.log.error(traceback.format_exc()) if rollbar.kodi.error_report_requested(exc): rollbar.kodi.report_error( access_token='cc56a52c62c5418ebc87f97b1aa44669', version=plugin.addon.getAddonInfo('version'), url=plugin.request.url ) - plugin.log.error(traceback.format_exc()) |