def _get_watchmode(pathwatchmode, content): watchmode = None if pathwatchmode: # skip 'all videos' from path, prefer add-on settings if pathwatchmode.lower() in (WATCHMODE_UNWATCHED, WATCHMODE_WATCHED, WATCHMODE_ASKME): watchmode = pathwatchmode.lower() elif pathwatchmode == L(WATCHMODE_UNWATCHED_TEXT): watchmode = WATCHMODE_UNWATCHED elif pathwatchmode == L(WATCHMODE_WATCHED_TEXT): watchmode = WATCHMODE_WATCHED elif pathwatchmode == L(WATCHMODE_ASKME_TEXT): watchmode = WATCHMODE_ASKME if not watchmode: addonsetting = ('watchmodemovies' if content == 'movies' else 'watchmodetvshows' if content == 'tvshows' else 'watchmodemusicvideos' if content == 'musicvideos' else 'watchmodeother' if content == 'other' else None) if addonsetting: try: watchmode = WATCHMODES[int(get_main_addon().getSetting(addonsetting))] except ValueError: pass if watchmode == WATCHMODE_ASKME: return _ask_me() elif watchmode: return watchmode else: return WATCHMODE_ALLVIDEOS
def play(pathinfo): content, info = _parse_path(pathinfo) if not content: xbmcgui.Dialog().notification(L(34201), pathinfo['full path']) return singlevideo = pathinfo.get('singlevideo', False) try: showbusy = get_main_addon().getSetting('hidebusydialog') == 'false' get_player(get_generator(content, info, singlevideo), showbusy).run() except quickjson.JSONException as ex: # json_result['error']['code'] == -32602 is the best we get, invalid params if content == 'other' and ex.json_result.get('error', {}).get('code', 0) == -32602 \ and not any(1 for source in quickjson.get_sources('video') if info['path'].startswith(source['file'])): xbmcgui.Dialog().ok(L(ADD_SOURCE_HEADER), L(ADD_SOURCE_MESSAGE).format(info['path'])) else: raise