python modernize.py --no-six -f libmodernize.fixes.fix_print -w With manual fixes as the import was put always on top.
109 lines
3.8 KiB
Python
109 lines
3.8 KiB
Python
# -*- coding: utf-8 -*-
|
|
from __future__ import print_function
|
|
import sys
|
|
from . import constants
|
|
|
|
from .base.actions import BaseAction
|
|
from .menu import MenuItem, MenuItemVideo, MenuItemPath
|
|
from threading import Thread
|
|
from .videoobmc import Videoobmc
|
|
|
|
if hasattr(sys.modules["__main__"], "common_xbmc"):
|
|
common_xbmc = sys.modules["__main__"].common_xbmc
|
|
else:
|
|
import common_xbmc
|
|
|
|
|
|
class VideoobBaseAction(BaseAction):
|
|
def __init__(self):
|
|
count = common_xbmc.get_settings('nbVideoPerBackend')
|
|
numbers = ["10", "25", "50", "100"]
|
|
self.videoobmc = Videoobmc(count=numbers[int(count)], nsfw=common_xbmc.get_settings('nsfw'))
|
|
|
|
|
|
class DisplayMenuAction(VideoobBaseAction):
|
|
def _do(self, param={}):
|
|
backends = self.videoobmc.backends
|
|
if backends:
|
|
MenuItem(common_xbmc.get_translation('30000'), constants.SEARCH).add_to_menu()
|
|
for backend in backends:
|
|
icon = self.videoobmc.get_backend_icon(backend)
|
|
MenuItem(backend, constants.DISPLAY_BACKENDS, backend=backend, iconimage=icon).add_to_menu()
|
|
common_xbmc.end_of_directory(False)
|
|
else:
|
|
common_xbmc.display_error(" Please install and configure weboob")
|
|
|
|
|
|
class DisplayCollectionMenuAction(VideoobBaseAction):
|
|
def _do(self, param={}):
|
|
path = param.get('path') if 'path' in param.keys() else ''
|
|
collections, videos = self.videoobmc.ls(param.get('backend'), path=path)
|
|
threads = []
|
|
|
|
for col in collections:
|
|
MenuItemPath(col).add_to_menu()
|
|
for video in videos:
|
|
aThread = Thread(target=self.add_videos, args=(video, video.backend))
|
|
threads.append(aThread)
|
|
aThread.start()
|
|
|
|
for t in threads:
|
|
t.join()
|
|
|
|
common_xbmc.end_of_directory(False)
|
|
|
|
def add_videos(self, _video, backend):
|
|
print(_video)
|
|
video = self.videoobmc.get_video(_video, backend)
|
|
if video:
|
|
MenuItemVideo(video).add_to_menu()
|
|
|
|
|
|
class DownloadAction(VideoobBaseAction):
|
|
def _do(self, param={}):
|
|
_id = param.get('id')
|
|
backend = param.get('backend')
|
|
if _id:
|
|
aThread = Thread(target=self.download, args=(_id, backend))
|
|
aThread.start()
|
|
common_xbmc.display_info(common_xbmc.get_translation('30301'))
|
|
common_xbmc.end_of_directory(False)
|
|
|
|
def download(self, _id, backend):
|
|
dl_dir = common_xbmc.get_settings('downloadPath')
|
|
self.videoobmc.download(_id, dl_dir if dl_dir else common_xbmc.get_addon_dir(), backend)
|
|
common_xbmc.display_info(common_xbmc.get_translation('30302'))
|
|
|
|
|
|
class SearchAction(VideoobBaseAction):
|
|
def _do(self, param={}):
|
|
pattern = common_xbmc.ask_user('', common_xbmc.get_translation('30001'))
|
|
if pattern:
|
|
for video in self.videoobmc.search(pattern, param.get('backend')):
|
|
MenuItemVideo(video).add_to_menu()
|
|
common_xbmc.end_of_directory(False)
|
|
|
|
|
|
class DisplayBackendsAction(VideoobBaseAction):
|
|
def _do(self, param={}):
|
|
backend = param.get('backend')
|
|
if backend:
|
|
MenuItem('Search', constants.SEARCH, backend=backend).add_to_menu()
|
|
DisplayCollectionMenuAction()._do(param)
|
|
else:
|
|
common_xbmc.end_of_directory(False)
|
|
|
|
|
|
class UpdateWeboobAction(VideoobBaseAction):
|
|
def _do(self, param={}):
|
|
common_xbmc.display_info(common_xbmc.get_translation('30551'))
|
|
self.videoobmc.update()
|
|
common_xbmc.display_info(common_xbmc.get_translation('30552'))
|
|
|
|
|
|
actions = {constants.DISPLAY_MENU: DisplayMenuAction,
|
|
constants.DISPLAY_COLLECTION_MENU: DisplayCollectionMenuAction,
|
|
constants.SEARCH: SearchAction,
|
|
constants.DOWNLOAD: DownloadAction,
|
|
constants.DISPLAY_BACKENDS: DisplayBackendsAction,
|
|
constants.UPDATE: UpdateWeboobAction}
|