Beispiel #1
0
    def keepAlive(self):
        for i in range(0, 480):
            if self.isPlayingVideo():
                break
            xbmc.sleep(250)


##        for i in range(0, 480):
##            if self.AVStarted:
##                break

        g.close_all_dialogs()

        try:
            audio_lang = self.getAvailableAudioStreams()
            if len(audio_lang) > 1:
                try:
                    preferred_audio = int(g.get_setting('general.audio'))
                    audio_int = audio_lang.index(g.lang(preferred_audio))
                    self.setAudioStream(audio_int)
                except:
                    pass
                try:
                    if preferred_audio == 40315:
                        self.setSubtitleStream(1)
                except:
                    pass
        except:
            pass

        if self.media_type == 'movie':
            return self.onWatchedPercent()

        if g.get_setting('smartplay.skipintrodialog') == 'true':
            while self.isPlaying():
                time_ = int(self.getTime())
                if time_ > 240:
                    break
                elif time_ >= 1:
                    PlayerDialogs()._show_skip_intro()
                    break
                else:
                    xbmc.sleep(250)

        scrobble = self.onWatchedPercent()

        if g.get_setting('smartplay.playingnextdialog') == 'true':
            endpoint = int(g.get_setting('playingnext.time'))
        else:
            endpoint = False

        if endpoint:
            while self.isPlaying():
                if int(self.getTotalTime()) - int(self.getTime()) <= endpoint:
                    xbmc.executebuiltin(
                        'RunPlugin("plugin://plugin.video.kaito/run_player_dialogs")'
                    )
                    break
                else:
                    xbmc.sleep(1000)
Beispiel #2
0
def SEARCH_HISTORY(payload, params):
    history = database.getSearchHistory('show')
    if "Yes" in g.get_setting('searchhistory'):
        return g.draw_items(_BROWSER.search_history(history),
                            contentType=g.get_setting("contenttype.menu"))
    else:
        return SEARCH(payload, params)
 def __init__(self):
     self.ClientID = g.get_setting('rd.client_id')
     if self.ClientID == '':
         self.ClientID = 'X245A4XAIBGVM'
     self.OauthUrl = 'https://api.real-debrid.com/oauth/v2/'
     self.DeviceCodeUrl = "device/code?%s"
     self.DeviceCredUrl = "device/credentials?%s"
     self.TokenUrl = "token"
     self.token = g.get_setting('rd.auth')
     self.refresh = g.get_setting('rd.refresh')
     self.DeviceCode = ''
     self.ClientSecret = g.get_setting('rd.secret')
     self.OauthTimeout = 0
     self.OauthTimeStep = 0
     self.BaseUrl = "https://api.real-debrid.com/rest/1.0/"
     self.cache_check_results = {}
Beispiel #4
0
    def wrapper(*args, **kwargs):
        if g.get_setting("general.divflavors") == "true":
            mal_dub = _get_mal_dub()

            return f(dub=mal_dub, *args, **kwargs)

        return f(*args, **kwargs)
Beispiel #5
0
def LIST_MENU(payload, params):
    return g.draw_items(
        [
            g.allocate_item(name, url, True, image)
            for name, url, image in MENU_ITEMS
        ],
        contentType=g.get_setting("contenttype.menu"),
    )
    def get_active_flavor():
        selected = g.get_setting(WatchlistFlavor.__LOGIN_FLAVOR_KEY)
        if not selected:
            return None

        if not WatchlistFlavor.__SELECTED:
            WatchlistFlavor.__SELECTED = \
                    WatchlistFlavor.__instance_flavor(selected)

        return WatchlistFlavor.__SELECTED
Beispiel #7
0
def SEARCH(payload, params):
    query = control.keyboard(g.lang(30010))
    if not query:
        return False

    # TODO: Better logic here, maybe move functionatly into router?
    if "Yes" in g.get_setting('searchhistory'):
        database.addSearchHistory(query, 'show')
        history = database.getSearchHistory('show')

    return g.draw_items(_ANILIST_BROWSER.get_search(query))
    def __instance_flavor(name):
        user_id = g.get_setting('%s.userid' % name)
        auth_var = g.get_setting('%s.authvar' % name)
        token = g.get_setting('%s.token' % name)
        refresh = g.get_setting('%s.refresh' % name)
        username = g.get_setting('%s.username' % name)
        password = g.get_setting('%s.password' % name)
        sort = g.get_setting('%s.sort' % name)
        title_lang = g.get_setting('%s.titles' % name)

        flavor_class = WatchlistFlavor.__get_flavor_class(name)
        return flavor_class(auth_var, username, password, user_id, token,
                            refresh, sort, title_lang)
Beispiel #9
0
 def refresh_token(self):
     oauth_url = 'https://myanimelist.net/v1/oauth2/token'
     data = {
         'client_id': 'a8d85a4106b259b8c9470011ce2f76bc',
         'grant_type': 'refresh_token',
         'refresh_token': g.get_setting('mal.refresh')
     }
     res = requests.post(oauth_url, data=data).json()
     g.set_setting('mal.token', res['access_token'])
     g.set_setting('mal.refresh', res['refresh_token'])
     g.set_setting('mal.expiry', str(time.time() + int(res['expires_in'])))
Beispiel #10
0
    def onInit(self):
        self.editor_list = self.getControl(2001)
        self.flavors_list = self.getControl(2000)

        if g.anilist_enabled():
            menu_item = xbmcgui.ListItem(label='%s' % 'AniList')
            menu_item.setProperty('username',
                                  g.get_setting('anilist.username'))
            self.flavors_list.addItem(menu_item)

            self.anime_list_entry[
                'anilist'] = WatchlistFlavor.watchlist_anime_entry_request(
                    'anilist', '235')

        if g.kitsu_enabled():
            menu_item = xbmcgui.ListItem(label='%s' % 'Kitsu')
            menu_item.setProperty('username', g.get_setting('kitsu.username'))
            self.flavors_list.addItem(menu_item)

            self.anime_list_entry[
                'kitsu'] = WatchlistFlavor.watchlist_anime_entry_request(
                    'kitsu', '235')

        if g.myanimelist_enabled():
            menu_item = xbmcgui.ListItem(label='%s' % 'MyAnimeList')
            menu_item.setProperty('username', g.get_setting('mal.username'))
            self.flavors_list.addItem(menu_item)

            self.anime_list_entry[
                'myanimelist'] = WatchlistFlavor.watchlist_anime_entry_request(
                    'mal', '235')

        selected_flavor_item = self.flavors_list.getSelectedItem()
        self.selected_flavor = (selected_flavor_item.getLabel()).lower()
        for _id, value in list(
                self.anime_list_entry[self.selected_flavor].items()):
            item = xbmcgui.ListItem(label='%s' % _id)
            item.setProperty(_id, str(value))
            self.editor_list.addItem(item)

        self.setFocusId(2000)
def refresh_apis():
    rd_token = g.get_setting('rd.auth')
    rd_expiry = int(float(g.get_setting('rd.expiry')))
    kitsu_token = g.get_setting('kitsu.token')
    mal_token = g.get_setting('mal.token')

    try:
        if rd_token != '':
            if time.time() > (rd_expiry - (10 * 60)):
                from resources.lib.debrid import real_debrid
                ##                tools.log('Service Refreshing Real Debrid Token')
                real_debrid.Debrid().refreshToken()
    except:
        pass

    try:
        if kitsu_token != '':
            kitsu_expiry = int(float(g.get_setting('kitsu.expiry')))
            if time.time() > (kitsu_expiry - (10 * 60)):
                from resources.lib.WatchlistFlavor import Kitsu
                Kitsu.KitsuWLF().refresh_token()
    except:
        pass

    try:
        if mal_token != '':
            mal_expiry = int(float(g.get_setting('mal.expiry')))
            if time.time() > (mal_expiry - (10 * 60)):
                from resources.lib.WatchlistFlavor import MyAnimeList
                MyAnimeList.MyAnimeListWLF().refresh_token()
    except:
        pass
Beispiel #12
0
    def __init__(self, xml_file, xml_location, actionArgs=None):

        try:
            super(PlayingNext, self).__init__(xml_file,
                                              xml_location,
                                              actionArgs=actionArgs)
            self.player = xbmc.Player()
            self.playing_file = self.player.getPlayingFile()
            self.duration = self.player.getTotalTime() - self.player.getTime()
            self.closed = False
            self.actioned = None
            self.default_action = g.get_setting('playingnext.defaultaction')
        except:
            import traceback
            traceback.print_exc()
Beispiel #13
0
def _add_last_watched():
    anilist_id = g.get_setting("addon.last_watched")
    if not anilist_id:
        return

    try:
        last_watched = ast.literal_eval(
            database.get_show(anilist_id)['kodi_meta'])
    except:
        return

    MENU_ITEMS.insert(
        0, ("%s[I]%s[/I]" %
            (g.lang(30000), control.decode_py2(last_watched['name'])),
            "animes/%s/null/" % anilist_id, last_watched['poster']))
Beispiel #14
0
    def refresh_token(self):
        params = {
            "grant_type": "refresh_token",
            "refresh_token": g.get_setting('kitsu.refresh'),
        }
        resp = self._post_request(self._to_url("oauth/token"), params=params)

        if resp.status_code != 200:
            return

        data = resp.json()
        g.set_setting('kitsu.token', data['access_token'])
        g.set_setting('kitsu.refresh', data['refresh_token'])
        g.set_setting('kitsu.expiry',
                      str(time.time() + int(data['expires_in'])))
    def __init__(self, xml_file, xml_location, actionArgs=None):

        try:
            super(SkipIntro, self).__init__(xml_file,
                                            xml_location,
                                            actionArgs=actionArgs)
            self.player = xbmc.Player()
            self.playing_file = self.player.getPlayingFile()
            self.duration = self.player.getTotalTime() - self.player.getTime()
            self.skip = int(g.get_setting('skipintro.time'))
            self.closed = False
            self.actioned = None
            self.default_action = '0'
        except:
            import traceback
            traceback.print_exc()
Beispiel #16
0
def TOOLS_MENU(payload, params):
    TOOLS_ITEMS = [
        (g.lang(30020), "settings", ''),
        (g.lang(30021), "clear_cache", ''),
        (g.lang(30022), "clear_torrent_cache", ''),
        (g.lang(30023), "clear_history", ''),
        (g.lang(30026), "rebuild_database", ''),
        (g.lang(30024), "wipe_addon_data", ''),
    ]

    return g.draw_items(
        [
            g.allocate_item(name, url, False, image)
            for name, url, image in TOOLS_ITEMS
        ],
        contentType=g.get_setting("contenttype.menu"),
    )
    def resolve_item(self):
        if g.get_setting('general.autotrynext') == 'true':
            sources = self.sources[self.position:]
        else:
            sources = [self.sources[self.position]]

        if self.rescrape:
            selected_source = self.sources[self.position]
            selected_source['name'] = selected_source['release_title']
            database.addTorrentList(self.anilist_id, [selected_source], 2)

        resolver = Resolver(*('resolver.xml', g.ADDON_DATA_PATH), actionArgs=self.actionArgs)

        self.stream_link = resolver.doModal(sources, {}, False)

        if self.stream_link is None:
            return
        else:
            self.close()
Beispiel #18
0
def PLAY(payload, params):
    anilist_id, episode, filter_lang = payload.rsplit("/")
    sources = _BROWSER.get_sources(anilist_id, episode, filter_lang, 'show')
    _mock_args = {"anilist_id": anilist_id}

    if g.get_setting('general.playstyle.episode') == '1' or params.get(
            'source_select'):

        from resources.lib.windows.source_select import SourceSelect

        link = SourceSelect(*('source_select.xml', g.ADDON_DATA_PATH),
                            actionArgs=_mock_args,
                            sources=sources).doModal()
    else:
        from resources.lib.windows.resolver import Resolver

        resolver = Resolver(*('resolver.xml', g.ADDON_DATA_PATH),
                            actionArgs=_mock_args)

        link = resolver.doModal(sources, {}, False)

    player.play_source(link, anilist_id, watchlist_update,
                       _BROWSER.get_episodeList, int(episode), filter_lang)
 def __init__(self):
     self.agent_identifier = 'test'
     self.apikey = g.get_setting('alldebrid.apikey')
Beispiel #20
0
def on_percent():
    return int(g.get_setting('watchlist.percent'))
Beispiel #21
0
def get_animes_contentType(seasons=None):
    contentType = g.get_setting("contenttype.episodes")
    if seasons and seasons[0]['is_dir']:
        contentType = g.get_setting("contenttype.seasons")

    return contentType
Beispiel #22
0
MENU_ITEMS = [
    (g.lang(30001), "anilist_airing", ''),
    (g.lang(30002), "airing_dub", ''),
    (g.lang(30003), "latest", ''),
    (g.lang(30004), "latest_dub", ''),
    (g.lang(30005), "anilist_trending", ''),
    (g.lang(30006), "anilist_popular", ''),
    (g.lang(30007), "anilist_upcoming", ''),
    (g.lang(30008), 'anilist_all_time_popular', ''),
    (g.lang(30009), "anilist_genres", ''),
    (g.lang(30010), "search_history", ''),
    (g.lang(30011), "tools", ''),
]

_TITLE_LANG = g.get_setting("titlelanguage")

_BROWSER = KaitoBrowser()

_ANILIST_BROWSER = AniListBrowser(_TITLE_LANG)


def _add_last_watched():
    anilist_id = g.get_setting("addon.last_watched")
    if not anilist_id:
        return

    try:
        last_watched = ast.literal_eval(
            database.get_show(anilist_id)['kodi_meta'])
    except: