Esempio n. 1
0
def ChangeWatched(imdb_id, video_type, name, season, episode, year='', watched=''):
    from metahandler import metahandlers

    metaget = metahandlers.MetaData(False)
    metaget.change_watched(video_type, name, imdb_id, season=season, episode=episode, year=year, watched=watched)
def getSeasonIndicators2(tvshowtitle, imdb, tvdb, season):
    try:
        import sys, xbmc
        from resources.lib.modules import control

        if not trakt.getTraktIndicatorsInfo() == False: raise Exception()
        total = '6'
        from metahandler import metahandlers
        from resources.lib.indexers import episodes
        if not int('%01d' % int(season)) > 0: raise Exception()
        metaget = metahandlers.MetaData(preparezip=False)

        name = control.addonInfo('name')

        imdb = imdb.encode('utf-8')
        tvdb = tvdb.encode('utf-8')
        season = season.encode('utf-8')
        # metaget.get_meta('tvshow', '', imdb_id=imdb)

        items = episodes.episodes().get(tvshowtitle,
                                        '0',
                                        imdb,
                                        tvdb,
                                        '0',
                                        idx=False)
        try:
            items = [
                i for i in items
                if int('%01d' % int(season)) == int('%01d' % int(i['season']))
            ]
        except:
            pass
        season_playcount = []
        for i in range(len(items)):

            season, episode = items[i]['season'], items[i]['episode']
            playcount = metaget._get_watched_episode({
                'imdb_id': imdb,
                'season': season,
                'episode': episode,
                'premiered': ''
            })
            playcount = str(playcount)

            if playcount == '7': play = '1'
            else: play = '0'

            season_playcount.append(playcount)

        season_file = control.seasons_meta
        try:
            from sqlite3 import dbapi2 as database
        except:
            from pysqlite2 import dbapi2 as database

        try:

            control.makeFile(control.dataPath)
            dbcon = database.connect(season_file)
            dbcur = dbcon.cursor()
            dbcur.execute("CREATE TABLE IF NOT EXISTS season_meta ("
                          "imdb TEXT, "
                          "tvdb TEXT, "
                          "season TEXT, "
                          "playcount TEXT, "
                          "UNIQUE(imdb, tvdb, season, playcount)"
                          ");")
            dbcon.commit()
        except:
            pass

        if "6" in season_playcount:
            total = '6'
            dbcon = database.connect(season_file)
            dbcur = dbcon.cursor()
            dbcur.execute(
                "DELETE FROM season_meta WHERE imdb = '%s' AND season = '%s'" %
                (imdb, season))
            dbcur.execute("INSERT INTO season_meta Values (?, ?, ?, ?)",
                          (imdb, tvdb, season, total))
            dbcon.commit()

        elif int(len(season_playcount)) > 0:
            if not "6" in season_playcount:
                total = '7'
                dbcon = database.connect(season_file)
                dbcur = dbcon.cursor()
                dbcur.execute(
                    "DELETE FROM season_meta WHERE imdb = '%s' AND season = '%s'"
                    % (imdb, season))
                dbcur.execute("INSERT INTO season_meta Values (?, ?, ?, ?)",
                              (imdb, tvdb, season, total))
                dbcon.commit()

            # metaget.change_watched('season', name='', imdb_id=imdb, season=season, watched=int(total))
        return total

    except:
        return total
def marktvshows(tvshowtitle, imdb, tvdb, watched):
    try:
        import sys, xbmc

        if not trakt.getTraktIndicatorsInfo() == False: raise Exception()
        watched = int(watched)
        from metahandler import metahandlers
        from resources.lib.indexers import episodes

        imdb = imdb.encode('utf-8')

        metaget = metahandlers.MetaData(preparezip=False)

        name = control.addonInfo('name')

        dialog = control.progressDialogBG
        dialog.create(str(name), str(tvshowtitle))
        dialog.update(0, str(name), str(tvshowtitle))

        items = episodes.episodes().get(tvshowtitle,
                                        '0',
                                        imdb,
                                        tvdb,
                                        '0',
                                        idx=False)
        try:
            items = [i for i in items]
        except:
            pass
        items = [{
            'label':
            '%s S%02dE%02d' %
            (tvshowtitle, int(i['season']), int(i['episode'])),
            'season':
            int('%01d' % int(i['season'])),
            'episode':
            int('%01d' % int(i['episode']))
        } for i in items]

        season_file = control.seasons_meta
        try:
            from sqlite3 import dbapi2 as database
        except:
            from pysqlite2 import dbapi2 as database
        try:
            if watched == 6:
                total = '6'
                dbcon = database.connect(season_file)
                dbcur = dbcon.cursor()
                dbcur.execute("DELETE FROM season_meta WHERE imdb = '%s'" %
                              (imdb))
                dbcon.commit()
        except:
            pass

        for i in range(len(items)):
            if xbmc.abortRequested == True: return sys.exit()
            dialog.update(int((100 / float(len(items))) * i), str(name),
                          str(items[i]['label']))
            season, episode = items[i]['season'], items[i]['episode']
            metaget.get_episode_meta('', imdb, season, episode)
            metaget.change_watched('episode',
                                   '',
                                   imdb,
                                   season=season,
                                   episode=episode,
                                   year='',
                                   watched=watched)
            try:
                if watched == 7:
                    total = '7'
                    dbcon = database.connect(season_file)
                    dbcur = dbcon.cursor()
                    dbcur.execute(
                        "DELETE FROM season_meta WHERE imdb = '%s' AND season = '%s'"
                        % (imdb, season))
                    dbcur.execute(
                        "INSERT INTO season_meta Values (?, ?, ?, ?)",
                        (imdb, tvdb, season, total))
                    dbcon.commit()
            except:
                pass

        try:
            dialog.close()
        except:
            pass
    except:
        try:
            dialog.close()
        except:
            pass

    try:
        import sys, xbmc
        watched = int(watched)
        imdb = imdb.encode('utf-8')
        from metahandler import metahandlers
        from resources.lib.indexers import episodes

        metaget = metahandlers.MetaData(preparezip=False)
        metaget.get_meta('tvshow', name='', imdb_id=imdb)
        metaget._update_watched(imdb, 'tvshow', watched)
        metaget.change_watched('tvshow', '', imdb, watched=watched)

    except:
        pass

    control.refresh()
Esempio n. 4
0
    def getMeta(self,
                mediaType,
                imdbID='',
                TVShowTitle='',
                season='',
                episode='',
                mode='add'):
        '''
        Fetch metainformations for GuiElement.
        Args:
            mediaType(str): 'movie'/'tvshow'/'season'/'episode'

        Kwargs:
            imdbID (str)        :
            TVShowTitle (str)   :
            mode (str)          : 'add'/'replace' defines if fetched metainformtions should be added to existing informations, or if they should replace them.
        '''

        if cConfig().getSetting('metahandler') == 'false':
            return False
        if not self._mediaType:
            self.setMediaType(mediaType)
        if not mode in ['add', 'replace']:
            logger.info('Wrong meta set mode')
        if not season and self._season:
            season = self._season
        if not episode and self._episode:
            episode = self._episode

        try:
            from metahandler import metahandlers
        except:
            import traceback
            logger.info(traceback.format_exc())
            return False
        if not self._mediaType:
            logger.info(
                'Could not get MetaInformations for %s, mediaType not defined'
                % self.getTitle())
            return False
        oMetaget = metahandlers.MetaData()
        if self._mediaType == 'movie' or self._mediaType == 'tvshow':
            meta = oMetaget.get_meta(self._mediaType, self.__sTitle)
            #if self._mediaType == 'tvshow' and not self.__aItemValues['TVShowTitle']:
            #    self.setTVShowTitle(self.__sTitle)
        elif self._mediaType == 'season':
            meta = oMetaget.get_seasons(TVShowTitle, imdbID, str(season))
        elif self._mediaType == 'episode':
            meta = oMetaget.get_episode_meta(TVShowTitle, imdbID, str(season),
                                             str(episode))
        else:
            return False

        if not meta:
            return False

        if self._mediaType == 'season':
            meta = meta[0]

        if mode == 'replace':
            self.setItemValues(meta)
            if not meta['cover_url'] == '':
                self.setThumbnail(meta['cover_url'])
            if not meta['backdrop_url'] == '':
                self.setFanart(meta['backdrop_url'])
        else:
            meta.update(self.__aItemValues)
            meta.update(self.__aProperties)
            if meta['cover_url'] != '' and self.__sThumbnail == '':
                self.setThumbnail(meta['cover_url'])
            if meta['backdrop_url'] != '' and self.__sFanart == self.DEFAULT_FANART:
                self.setFanart(meta['backdrop_url'])
            self.setItemValues(meta)

        if meta['imdb_id']:
            self._imdbID = meta['imdb_id']

        self._isMetaSet = True
        return meta
Esempio n. 5
0
def tvshows(tvshowtitle, imdb, tvdb, season, watched):
    control.busy()
    try:
        import sys, xbmc

        if not trakt.getTraktIndicatorsInfo() == False: raise Exception()

        from metahandler import metahandlers
        from resources.lib.indexers import episodes

        metaget = metahandlers.MetaData(preparezip=False)

        name = control.addonInfo('name')

        dialog = control.progressDialogBG
        dialog.create(str(name), str(tvshowtitle))
        dialog.update(0, str(name), str(tvshowtitle))

        metaget.get_meta('tvshow', name='', imdb_id=imdb)

        items = episodes.episodes().get(tvshowtitle,
                                        '0',
                                        imdb,
                                        tvdb,
                                        '0',
                                        idx=False)
        try:
            items = [
                i for i in items
                if int('%01d' % int(season)) == int('%01d' % int(i['season']))
            ]
        except:
            pass
        items = [{
            'label':
            '%s S%02dE%02d' %
            (tvshowtitle, int(i['season']), int(i['episode'])),
            'season':
            int('%01d' % int(i['season'])),
            'episode':
            int('%01d' % int(i['episode']))
        } for i in items]

        for i in range(len(items)):
            if xbmc.abortRequested == True: return sys.exit()

            dialog.update(int((100 / float(len(items))) * i), str(name),
                          str(items[i]['label']))

            season, episode = items[i]['season'], items[i]['episode']
            metaget.get_episode_meta('',
                                     imdb_id=imdb,
                                     season=season,
                                     episode=episode)
            metaget.change_watched('episode',
                                   '',
                                   imdb_id=imdb,
                                   season=season,
                                   episode=episode,
                                   watched=int(watched))

        try:
            dialog.close()
        except:
            pass
    except:
        try:
            dialog.close()
        except:
            pass

    try:
        if trakt.getTraktIndicatorsInfo() == False: raise Exception()

        if season:
            from resources.lib.indexers import episodes
            items = episodes.episodes().get(tvshowtitle,
                                            '0',
                                            imdb,
                                            tvdb,
                                            season,
                                            idx=False)
            items = [(int(i['season']), int(i['episode'])) for i in items]
            items = [
                i[1] for i in items
                if int('%01d' % int(season)) == int('%01d' % i[0])
            ]
            for i in items:
                if int(watched) == 7:
                    trakt.markEpisodeAsWatched(tvdb, season, i)
                else:
                    trakt.markEpisodeAsNotWatched(tvdb, season, i)
        else:
            if int(watched) == 7: trakt.markTVShowAsWatched(tvdb)
            else: trakt.markTVShowAsNotWatched(tvdb)
        trakt.cachesyncTVShows()
    except:
        pass

    control.refresh()
Esempio n. 6
0
def subDirectory(name, url, audio, image, fanart, playable, tvshow, content):
    match = re.compile('<sublink>(.+?)</sublink>').findall(url)
    if len(match) == 0: return

    try:
        title = cleantitle(name).encode('utf-8')
        data = {'title': title}
    except:
        pass

    try:
        if not content == 'movies': raise Exception()

        title = cleantitle(name).encode('utf-8')
        data = {'title': title}

        title, year = re.compile('(.+?)[(](\d{4})[)]').findall(name)[0]
        title = cleantitle(title).encode('utf-8')
        data = {'title': title, 'year': year}

        from metahandler import metahandlers
        metaget = metahandlers.MetaData(preparezip=False)

        #data = metaget.get_meta('movie', title, year=year)
        data = cachemeta.get(metaget.get_meta, 24, 'movie', title, '', '',
                             year)

        metaimage = data['cover_url']
        if not metaimage == '': image = metaimage
        metafanart = data['backdrop_url']
        if not metafanart == '': fanart = metafanart
    except:
        pass

    try:
        if tvshow == '0' and not content == 'episodes': raise Exception()

        try:
            title = cleantitle(name).encode('utf-8')
            data = {'title': title, 'tvshowtitle': tvshow}
        except:
            pass
        try:
            i = cleaneptitle(tvshow, title)
            title, season, episode = i[0].encode('utf-8'), i[1], i[2]
            data = {
                'title': title,
                'tvshowtitle': tvshow,
                'season': season,
                'episode': episode
            }
        except:
            pass

        from metahandler import metahandlers
        metaget = metahandlers.MetaData(preparezip=False)
        tvd = metaget.get_meta('tvshow', tvshow)
        tvd = cachemeta.get(metaget.get_meta, 24, 'tvshow', tvshow, '', '', '')

        data.update({
            'year': tvd['year'],
            'imdb_id': tvd['imdb_id'],
            'tvdb_id': tvd['tvdb_id'],
            'tvshowtitle': tvd['TVShowTitle'],
            'genre': tvd['genre'],
            'studio': tvd['studio'],
            'status': tvd['status'],
            'duration': tvd['duration'],
            'rating': tvd['rating'],
            'mpaa': tvd['mpaa'],
            'plot': tvd['plot'],
            'cast': tvd['cast']
        })

        metafanart = tvd['backdrop_url']
        if not metafanart == '': image = fanart = metafanart
    except:
        pass

    for i in range(0, len(match)):
        url = match[i]
        label = '%s %s %s' % (name, control.lang(30704).encode('utf-8'),
                              str(i + 1))
        addDirectoryItem(label,
                         url,
                         'resolveUrl',
                         image,
                         image,
                         fanart,
                         '0',
                         content,
                         data,
                         isFolder=False)

    control.directory(int(sys.argv[1]), cacheToDisc=True)
Esempio n. 7
0
def i1IiIiiI(name, url, mode, iconimage, itemcount, isFolder=False):
    if mm == 'true':
        if not 'COLOR' in name:
            I1iiIii = name.partition('(')
            mmmmkK = ""
            mKmKmkmmkmkKKmk = ""
            if len(I1iiIii) > 0:
                mmmmkK = I1iiIii[0]
                mKmKmkmmkmkKKmk = I1iiIii[2].partition(')')
            if len(mKmKmkmmkmkKKmk) > 0:
                mKmKmkmmkmkKKmk = mKmKmkmmkmkKKmk[0]
            i1I1ii = metahandlers.MetaData()
            mKKmmk = i1I1ii.get_meta('movie',
                                     name=mmmmkK,
                                     year=mKmKmkmmkmkKKmk)
            mKmkmkmmk = sys.argv[0] + "?url=" + urllib.quote_plus(
                url) + "&site=" + str(mmmkmkKmkmkmK) + "&mode=" + str(
                    mode) + "&name=" + urllib.quote_plus(name)
            mmmkKmmKKmmk = True
            mmkKKmkmkmK = xbmcgui.ListItem(name,
                                           iconImage=mKKmmk['cover_url'],
                                           thumbnailImage=mKKmmk['cover_url'])
            mmkKKmkmkmK.setInfo(type="Video", infoLabels=mKKmmk)
            mmkKKmkmkmK.setProperty("IsPlayable", "true")
            iIiIIIi = []
            iIiIIIi.append(('Movie Information', 'XBMC.Action(Info)'))
            iIiIIIi.append(
                ('[COLOR white]Add to UK Turk Favourites[/COLOR]',
                 'XBMC.RunPlugin(%s?mode=6&name=%s&url=%s&iconimage=%s)' %
                 (sys.argv[0], name, url, mKKmmk['cover_url'])))
            mmkKKmkmkmK.addContextMenuItems(iIiIIIi, replaceItems=True)
            if not mKKmmk['backdrop_url'] == '':
                mmkKKmkmkmK.setProperty('fanart_image', mKKmmk['backdrop_url'])
            else:
                mmkKKmkmkmK.setProperty('fanart_image', Kmk)
            mmmkKmmKKmmk = xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),
                                                       url=mKmkmkmmk,
                                                       listitem=mmkKKmkmkmK,
                                                       isFolder=isFolder,
                                                       totalItems=itemcount)
            return mmmkKmmKKmmk
    else:
        mKmkmkmmk = sys.argv[0] + "?url=" + urllib.quote_plus(
            url) + "&site=" + str(mmmkmkKmkmkmK) + "&mode=" + str(
                mode) + "&name=" + urllib.quote_plus(name)
        mmmkKmmKKmmk = True
        mmkKKmkmkmK = xbmcgui.ListItem(name,
                                       iconImage=iconimage,
                                       thumbnailImage=iconimage)
        mmkKKmkmkmK.setInfo(type="Video", infoLabels={"Title": name})
        mmkKKmkmkmK.setProperty('fanart_image', Kmk)
        mmkKKmkmkmK.setProperty("IsPlayable", "true")
        KKmmmkK = []
        KKmmmkK.append(
            ('[COLOR white]Add to UK Turk Favourites[/COLOR]',
             'XBMC.RunPlugin(%s?mode=6&name=%s&url=%s&iconimage=%s)' %
             (sys.argv[0], name, url, iconimage)))
        mmkKKmkmkmK.addContextMenuItems(items=KKmmmkK, replaceItems=True)
        mmmkKmmKKmmk = xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),
                                                   url=mKmkmkmmk,
                                                   listitem=mmkKKmkmkmK,
                                                   isFolder=isFolder)
        return mmmkKmmKKmmk
        if 93 - 93: iiIiIiIi
Esempio n. 8
0
    def movieDirectory(self, items, provider=None, lang=None):
        if items == None or len(items) == 0: return

        isFolder = True if control.setting('autoplay') == 'false' and control.setting('host_select') == '1' else False
        isFolder = False if control.window.getProperty('PseudoTVRunning') == 'True' else isFolder

        playbackMenu = control.lang(30204).encode('utf-8') if control.setting('autoplay') == 'true' else control.lang(30203).encode('utf-8')

        cacheToDisc = False if not action == 'movieSearch' else True

        addonPoster, addonBanner = control.addonPoster(), control.addonBanner()
        addonFanart, settingFanart = control.addonFanart(), control.setting('fanart')
        sysaddon = sys.argv[0]

        try:
            from metahandler import metahandlers
            metaget = metahandlers.MetaData(tmdb_api_key=self.tmdb_key, preparezip=False)
        except:
            pass

        for i in items:
            try:
                label = i['name']
                sysname = urllib.quote_plus(label)
                systitle = urllib.quote_plus(i['title'])
                imdb, tmdb, year = i['imdb'], i['tmdb'], i['year']


                poster, banner, fanart = i['poster'], i['banner'], i['fanart']
                if poster == '0': poster = addonPoster
                if banner == '0' and poster == '0': banner = addonBanner
                elif banner == '0': banner = poster


                meta = dict((k,v) for k, v in i.iteritems() if not v == '0')
                meta.update({'trailer': '%s?action=trailer&name=%s' % (sysaddon, sysname)})
                if i['duration'] == '0': meta.update({'duration': '120'})
                try: meta.update({'duration': str(int(meta['duration']) * 60)})
                except: pass
                sysmeta = urllib.quote_plus(json.dumps(meta))


                url = '%s?action=play&name=%s&title=%s&year=%s&imdb=%s&tmdb=%s&meta=%s&t=%s' % (sysaddon, sysname, systitle, year, imdb, tmdb, sysmeta, self.systime)
                sysurl = urllib.quote_plus(url)

                if isFolder == True:
                    url = '%s?action=sources&name=%s&title=%s&year=%s&imdb=%s&tmdb=%s&meta=%s' % (sysaddon, sysname, systitle, year, imdb, tmdb, sysmeta)


                try:
                    playcount = metaget._get_watched('movie', imdb, '', '')
                    if playcount == 7: meta.update({'playcount': 1, 'overlay': 7})
                    else: meta.update({'playcount': 0, 'overlay': 6})
                except:
                    pass

                cm = []

                cm.append((playbackMenu, 'RunPlugin(%s?action=alterSources&url=%s&meta=%s)' % (sysaddon, sysurl, sysmeta)))

                cm.append((control.lang(30214).encode('utf-8'), 'RunPlugin(%s?action=trailer&name=%s)' % (sysaddon, sysname)))
                cm.append((control.lang(30205).encode('utf-8'), 'Action(Info)'))

                if not action == 'movieSearch':
                    cm.append((control.lang(30206).encode('utf-8'), 'RunPlugin(%s?action=moviePlaycount&title=%s&year=%s&imdb=%s&query=7)' % (sysaddon, systitle, year, imdb)))
                    cm.append((control.lang(30207).encode('utf-8'), 'RunPlugin(%s?action=moviePlaycount&title=%s&year=%s&imdb=%s&query=6)' % (sysaddon, systitle, year, imdb)))#

                cm.append((control.lang(30212).encode('utf-8'), 'RunPlugin(%s?action=addView&content=movies)' % sysaddon))


                item = control.item(label=label, iconImage=poster, thumbnailImage=poster)

                try: item.setArt({'poster': poster, 'banner': banner})
                except: pass

                if settingFanart == 'true' and not fanart == '0':
                    item.setProperty('Fanart_Image', fanart)
                elif not addonFanart == None:
                    item.setProperty('Fanart_Image', addonFanart)

                item.setInfo(type='Video', infoLabels = meta)
                item.setProperty('Video', 'true')
                #item.setProperty('IsPlayable', 'true')
                item.addContextMenuItems(cm, replaceItems=True)
                control.addItem(handle=int(sys.argv[1]), url=url, listitem=item, isFolder=isFolder)
            except:
                pass

        try:
            url = items[0]['next']
            if url == '': raise Exception()
            url = '%s?action=movies&url=%s&provider=%s&lang=%s' % (sysaddon, urllib.quote_plus(url), provider, lang)
            addonNext = control.addonNext()
            item = control.item(label=control.lang(30213).encode('utf-8'), iconImage=addonNext, thumbnailImage=addonNext)
            item.addContextMenuItems([], replaceItems=False)
            if not addonFanart == None: item.setProperty('Fanart_Image', addonFanart)
            control.addItem(handle=int(sys.argv[1]), url=url, listitem=item, isFolder=True)
        except:
            pass


        control.content(int(sys.argv[1]), 'movies')
        views.setView('movies', {'skin.confluence': control.viewMode['thumbnails']})
        control.directory(int(sys.argv[1]), cacheToDisc=cacheToDisc)
Esempio n. 9
0
File: main.py Progetto: bialagary/mw
#=============END DLFUNCTION======================================================================================================================

# Global Stuff
settings = xbmcaddon.Addon(id=addon_id)


def nameCleaner(name):
    name = name.replace('&#8211;', '')
    name = name.replace("&#8217;", "")
    name = name.replace("&#039;s", "'s")
    #name = unicode(name, errors='ignore')
    return (name)


#Metadata
grab = metahandlers.MetaData()


def GRABMETA(name, year):
    meta = grab.get_meta('movie', name, year, None, None)
    infoLabels = {
        'rating': meta['rating'],
        'duration': meta['duration'],
        'genre': meta['genre'],
        'mpaa': "rated %s" % meta['mpaa'],
        'plot': meta['plot'],
        'title': meta['title'],
        'writer': meta['writer'],
        'cover_url': meta['cover_url'],
        'director': meta['director'],
        'cast': meta['cast'],
Esempio n. 10
0
def season_refresh(vidname, imdb, season_num):

    metaget = metahandlers.MetaData()
    metaget.update_season(vidname, imdb, season_num)
    xbmc.executebuiltin("XBMC.Container.Refresh")
Esempio n. 11
0
def tvshows(tvshowtitle, imdb, tvdb, season, watched):
    watched = int(watched)
    try:
        if traktIndicators:
            if watched == 5:
                trakt.watch(name=tvshowtitle,
                            imdb=imdb,
                            tvdb=tvdb,
                            season=season,
                            refresh=True)
            else:
                trakt.unwatch(name=tvshowtitle,
                              imdb=imdb,
                              tvdb=tvdb,
                              season=season,
                              refresh=True)
        else:
            from metahandler import metahandlers
            from resources.lib.menus import episodes
            from sys import exit as sysexit

            name = control.addonInfo('name')
            dialog = control.progressDialogBG
            dialog.create(str(name), str(tvshowtitle))
            dialog.update(0, str(name), str(tvshowtitle))

            metaget = metahandlers.MetaData(tmdb_api_key, omdb_api_key,
                                            tvdb_api_key)
            metaget.get_meta('tvshow', name='', imdb_id=imdb)

            items = episodes.Episodes().get(tvshowtitle,
                                            '0',
                                            imdb,
                                            tvdb,
                                            create_directory=False)
            for i in range(len(items)):
                items[i]['season'] = int(items[i]['season'])
                items[i]['episode'] = int(items[i]['episode'])
            try:
                items = [
                    i for i in items
                    if int('%01d' % int(season)) == int('%01d' % i['season'])
                ]
            except:
                pass

            items = [{
                'label':
                '%s S%02dE%02d' % (tvshowtitle, i['season'], i['episode']),
                'season':
                int('%01d' % i['season']),
                'episode':
                int('%01d' % i['episode'])
            } for i in items]
            count = len(items)
            for i in range(count):
                if control.monitor.abortRequested(): return sysexit()
                dialog.update(int(100.0 / count * i), str(name),
                              str(items[i]['label']))
                season, episode = items[i]['season'], items[i]['episode']
                metaget.get_episode_meta('',
                                         imdb_id=imdb,
                                         season=season,
                                         episode=episode)
                metaget.change_watched('episode',
                                       '',
                                       imdb_id=imdb,
                                       season=season,
                                       episode=episode,
                                       watched=watched)
            tvshowsUpdate(imdb=imdb, tvdb=tvdb)

            try:
                dialog.close()
            except:
                pass
    except:
        log_utils.error()
Esempio n. 12
0
def episode_refresh(vidname, imdb, season_num, episode_num):
    #refresh info for an episode

    metaget = metahandlers.MetaData()
    metaget.update_episode_meta(vidname, imdb, season_num, episode_num)
    xbmc.executebuiltin("XBMC.Container.Refresh")
Esempio n. 13
0
def superSearch(keyword='', image=BLANK, fanart=FANART, imdb=''):
    if len(keyword) < 1:
        kb = xbmc.Keyboard(keyword, GETTEXT(30054))
        kb.doModal()
        if kb.isConfirmed():
            keyword = kb.getText()

            if len(keyword) > 0:
                mode = _SUPERSEARCH
                cmd = '%s?mode=%d&keyword=%s&image=%s&fanart=%s' % (
                    sys.argv[0], mode, keyword, image, fanart)
                xbmc.executebuiltin('XBMC.Container.Update(%s)' % cmd)
                return False

    if len(keyword) < 1:
        return

    if keyword == ISEARCH_EMPTY:
        keyword = ''

    if not SHOW_FANART:
        fanart = BLANK

    menu = []
    menu.append(
        (GETTEXT(30057), 'XBMC.Container.Update(%s?mode=%d&keyword=%s)' %
         (sys.argv[0], _EDITTERM, keyword)))

    infolabels = {}

    if METARECOMMEND and len(imdb) > 0:
        from metahandler import metahandlers
        grabber = metahandlers.MetaData()
        infolabels = getMeta(grabber, '', 'movie', year=None, imdb=imdb)
        getMovieMenu(infolabels, menu)

    addDir(GETTEXT(30066) % keyword.strip(),
           _EDITTERM,
           thumbnail=image,
           isFolder=True,
           menu=menu,
           fanart=fanart,
           keyword=keyword,
           infolabels=infolabels)

    #reset menu, since adddir call will have added to it
    menu = []
    menu.append(
        (GETTEXT(30057), 'XBMC.Container.Update(%s?mode=%d&keyword=%s)' %
         (sys.argv[0], _EDITTERM, keyword)))
    addSeparatorItem(menu)

    if SHOWRECOMMEND:
        menu = []
        menu.append(
            (GETTEXT(30057), 'XBMC.Container.Update(%s?mode=%d&keyword=%s)' %
             (sys.argv[0], _EDITTERM, keyword)))
        getMovieMenu(infolabels, menu)

        if len(imdb) > 0:
            addDir(GETTEXT(30088),
                   _RECOMMEND_IMDB,
                   thumbnail=image,
                   isFolder=True,
                   menu=menu,
                   fanart=fanart,
                   keyword=keyword,
                   imdb=imdb,
                   infolabels=infolabels)
        else:
            addDir(GETTEXT(30088),
                   _RECOMMEND_KEY,
                   thumbnail=image,
                   isFolder=True,
                   menu=menu,
                   fanart=fanart,
                   keyword=keyword)

    keyword = urllib.quote_plus(keyword.replace('&', ''))

    file = os.path.join(xbmc.translatePath(ROOT), 'Search', FILENAME)
    faves = favourite.getFavourites(file, superSearch=True)

    if len(faves) == 0:
        #try shipped search file
        file = os.path.join(xbmc.translatePath(HOME), 'resources', 'Search',
                            FILENAME)
        faves = favourite.getFavourites(file)

    for fave in faves:
        label = fave[0]
        thumb = fave[1]
        cmd = fave[2].replace('[%SF%]', keyword)

        fan = fanart
        if SHOW_FANART:
            fan = favourite.getFanart(cmd)
            if len(fan) == 0:
                fan = fanart

        menu = []
        menu.append(
            (GETTEXT(30057), 'XBMC.Container.Update(%s?mode=%d&keyword=%s)' %
             (sys.argv[0], _EDITTERM, keyword)))
        menu.append(
            (GETTEXT(30103),
             'XBMC.RunPlugin(%s?mode=%d&file=%s&cmd=%s&name=%s&thumb=%s)' %
             (sys.argv[0], _EDITSEARCH, urllib.quote_plus(file),
              urllib.quote_plus(cmd), urllib.quote_plus(label),
              urllib.quote_plus(thumb))))

        #special fix for GlobalSearch, use local launcher (globalsearch.py) to bypass keyboard
        cmd = cmd.replace('script.globalsearch',
                          os.path.join(HOME, 'globalsearch.py'))

        addDir(label,
               _ACTIVATESEARCH,
               cmd=cmd,
               thumbnail=thumb,
               isFolder=True,
               menu=menu,
               fanart=fan)

    return True
def showEpisodes():
    oGui = cGui()
    oParams = ParameterHandler()
    sShowTitle = oParams.getValue('Title')
    sUrl = oParams.getValue('siteUrl')
    sImdb = oParams.getValue('imdbID')
    sSeason = oParams.getValue('Season')

    logger.info("%s: show episodes of '%s' season '%s' " %
                (SITE_NAME, sShowTitle, sSeason))

    oRequestHandler = cRequestHandler(sUrl)
    sHtmlContent = oRequestHandler.request()

    sPattern = '<table>(.*?)</table>'
    oParser = cParser()
    aResult = oParser.parse(sHtmlContent, sPattern)
    if (aResult[0] == True):
        sHtmlContent = aResult[1][0]
        sPattern = '<td>([^<]+)</td>\s*<td><a href="([^"]+)">(.*?)</a>.*?<td class="nowrap">(\s*<a|\s*</td).*?</tr>'
        aResult = oParser.parse(sHtmlContent, sPattern)
        if (aResult[0] == True):
            for aEntry in aResult[1]:
                if aEntry[3].strip() == '</td':
                    continue
                sNumber = str(aEntry[0]).strip()
                oGuiElement = cGuiElement('Episode ' + sNumber,
                                          SITE_IDENTIFIER, 'showHosters')
                if META == True and not sImdb == '':
                    oMetaget = metahandlers.MetaData()
                    meta = oMetaget.get_episode_meta(sShowTitle, sImdb,
                                                     sSeason, sNumber)
                    meta['TVShowTitle'] = sShowTitle
                    oGuiElement.setItemValues(meta)
                    oGuiElement.setThumbnail(meta['cover_url'])
                    oGuiElement.setFanart(meta['backdrop_url'])

                sPattern = '<strong>(.*?)</strong>'
                aResultTitle = oParser.parse(str(aEntry[2]), sPattern)
                if (aResultTitle[0] == True):
                    sTitleName = str(aResultTitle[1][0]).strip()
                else:
                    sPattern = '<span lang="en">(.*?)</span>'
                    aResultTitle = oParser.parse(str(aEntry[2]), sPattern)
                    if (aResultTitle[0] == True):
                        sTitleName = str(aResultTitle[1][0]).strip()
                    else:
                        sTitleName = ''
                sTitle = sNumber
                sTitleName = cUtil().unescape(
                    sTitleName.decode('utf-8')).encode('utf-8')
                oParams.setParam('EpisodeTitle', sTitleName)
                sTitle = sTitle + ' - ' + sTitleName

                oGuiElement.setTitle(sTitle)
                oParams.setParam('siteUrl', URL_MAIN + '/' + str(aEntry[1]))
                oParams.setParam('EpisodeNr', sNumber)

                oParams.setParam('Title',
                                 sShowTitle + ' - S' + sSeason + 'E' + sTitle)
                oGui.addFolder(oGuiElement, oParams, iTotal=len(aResult[1]))

    oGui.setView('episodes')
    oGui.setEndOfDirectory()
Esempio n. 15
0
import urllib, urllib2, re, xbmcplugin, xbmcgui, os
import settings
import time
from datetime import date, datetime
from threading import Timer
from hashlib import md5
from helpers import clean_file_name
import shutil
from hashlib import md5
import hashlib
from threading import Thread
import requests
import urlresolver
from helpers import clean_file_name
from metahandler import metahandlers
metainfo = metahandlers.MetaData()

ADDON = settings.addon()
TVO_USER = settings.tvo_user()
TVO_PASSWORD = settings.tvo_pass()
TVO_EMAIL = settings.tvo_email()
ENABLE_SUBS = settings.enable_subscriptions()
ENABLE_META = settings.enable_meta()
TV_PATH = settings.tv_directory()
CACHE_PATH = settings.cache_path()
FAV = settings.favourites_file()
SUB = settings.subscription_file()
addon_path = os.path.join(xbmc.translatePath('special://home/addons'), '')
fanart = xbmc.translatePath(
    os.path.join('special://home/addons/plugin.video.tvonline.cc', 'art',
                 'Fanart2.jpg'))
Esempio n. 16
0
def build_features_list(save_page):
    metaget = metahandlers.MetaData()
    form_data = {'page': save_page}
    data = getUrl('http://www.traileraddict.com/ajax/features_home.php',
                  form_data=form_data)
    movie_info = re.compile(
        'class="featured_box[ sp rb]*">(.+?)</a>[\\r\\n\\t]+</div>',
        re.DOTALL).findall(data)
    for movie in movie_info:
        url_thumb_x_title = re.compile(
            '<a href="(.+?)" class="movie_img" title="(.+?)"><img alt=".+?" src="(.+?)" />'
        ).findall(movie)
        totalItems = len(url_thumb_x_title)
        for url, title, thumb in url_thumb_x_title:
            title = title.rsplit(' - ')
            name1 = clean(title[0])
            if len(title) > 1:
                name2 = clean(title[0]) + ' (' + clean(title[1]) + ')'
            else:
                name2 = clean(title[0])
            url = 'http://www.traileraddict.com' + url
            thumb = 'http:' + thumb
            cm = []
            run = sys.argv[0] + '?' + urllib.urlencode({
                'mode': '5',
                'name': name2,
                'url': url,
                'download': 'True'
            })
            cm.append((settings.getLocalizedString(30059),
                       "XBMC.RunPlugin(%s)" % run))
            cm.append((settings.getLocalizedString(
                30014
            ), "XBMC.RunPlugin(plugin://plugin.video.couchpotato_manager/movies/add?title=%s)"
                       % name1))
            cm.append(('Show Information', 'XBMC.Action(Info)'))
            u = {'mode': '5', 'name': name2, 'url': url}

            #Try to clean up the name as best we can before grabbing meta data
            scrape_name = name1.lower().replace(
                'theatrical trailer',
                '').replace('feature trailer',
                            '').replace('international trailer', '').replace(
                                'final trailer',
                                '').replace('red band', '').replace(
                                    'feature red band',
                                    '').replace('international red band ',
                                                '').replace('trailer', '')
            meta = metaget.get_meta('movie', scrape_name)
            meta['title'] = name1
            meta['trailer'] = ''

            addListItem(label=name1,
                        image=thumb,
                        url=u,
                        isFolder=False,
                        totalItems=totalItems,
                        infoLabels=meta,
                        cm=cm)
    if save_page < 94:
        u = {'mode': '6', 'page': str(int(save_page) + 1)}
        addListItem(label='[Next Page (' + str(int(save_page) + 1) + ')]',
                    image=next_thumb,
                    url=u,
                    isFolder=True,
                    totalItems=0,
                    infoLabels=False)
    xbmcplugin.addSortMethod(handle=int(sys.argv[1]),
                             sortMethod=xbmcplugin.SORT_METHOD_NONE)
    setViewMode("500", "movies")
    xbmcplugin.endOfDirectory(int(sys.argv[1]))
Esempio n. 17
0
    def repair_meta_images(self):
        from metahandler import metahandlers
        from metahandler import metacontainers
        import xbmcgui
        __metaget__ = metahandlers.MetaData()

        cont = metacontainers.MetaContainer()
        if self.db_type == DB_TYPES.MYSQL:
            db = db_lib.connect(database=self.dbname,
                                user=self.username,
                                password=self.password,
                                host=self.address,
                                buffered=True)
        else:
            db = db_lib.connect(cont.videocache)
        dbcur = db.cursor()
        dlg = xbmcgui.DialogProgress()
        dlg.create('Repairing Images', '', '', '')
        for video_type in ('tvshow', 'movie'):
            total = 'SELECT count(*) from %s_meta WHERE ' % video_type
            total += 'imgs_prepacked = "true"'
            total = dbcur.execute(total).fetchone()[0]
            statement = 'SELECT title,cover_url,backdrop_url'
            if video_type == 'tvshow': statement += ',banner_url'
            statement += ' FROM %s_meta WHERE imgs_prepacked = "true"' % video_type
            complete = 1.0
            start_time = time.time()
            already_existing = 0

            for row in dbcur.execute(statement):
                title = row[0]
                cover = row[1]
                backdrop = row[2]
                if video_type == 'tvshow':
                    banner = row[3]
                else:
                    banner = False
                percent = int((complete * 100) / total)
                entries_per_sec = (complete - already_existing)
                entries_per_sec /= max(float((time.time() - start_time)), 1)
                total_est_time = total / max(entries_per_sec, 1)
                eta = total_est_time - (time.time() - start_time)

                eta = utils.format_eta(eta)
                dlg.update(percent, eta + title, '')
                if cover:
                    dlg.update(percent, eta + title, cover)
                    img_name = __metaget__._picname(cover)
                    img_path = os.path.join(__metaget__.mvcovers,
                                            img_name[0].lower())
                    file_path = os.path.join(img_path, img_name)
                    if not os.path.isfile(file_path):
                        retries = 4
                        while retries:
                            try:
                                __metaget__._downloadimages(
                                    cover, img_path, img_name)
                                break
                            except:
                                retries -= 1
                    else:
                        already_existing -= 1
                if backdrop:
                    dlg.update(percent, eta + title, backdrop)
                    img_name = __metaget__._picname(backdrop)
                    img_path = os.path.join(__metaget__.mvbackdrops,
                                            img_name[0].lower())
                    file_path = os.path.join(img_path, img_name)
                    if not os.path.isfile(file_path):
                        retries = 4
                        while retries:
                            try:
                                __metaget__._downloadimages(
                                    backdrop, img_path, img_name)
                                break
                            except:
                                retries -= 1
                    else:
                        already_existing -= 1
                if banner:
                    dlg.update(percent, eta + title, banner)
                    img_name = __metaget__._picname(banner)
                    img_path = os.path.join(__metaget__.tvbanners,
                                            img_name[0].lower())
                    file_path = os.path.join(img_path, img_name)
                    if not os.path.isfile(file_path):
                        retries = 4
                        while retries:
                            try:
                                __metaget__._downloadimages(
                                    banner, img_path, img_name)
                                break
                            except:
                                retries -= 1
                    else:
                        already_existing -= 1
                if dlg.iscanceled(): return False
                complete += 1
Esempio n. 18
0
REQUESTS_LOC = xbmc.translatePath(os.path.join(SETTINGS_LOC, 'requests', ''))
ICON = os.path.join(ADDON_PATH, 'icon.png')
FANART = os.path.join(ADDON_PATH, 'fanart.jpg')
DEBUG = REAL_SETTINGS.getSetting('Enable_Debugging') == 'true'
KODI_MONITOR = xbmc.Monitor()
YOUTUBE_PLAYER = 'plugin://plugin.video.youtube/play/?video_id='
YT_API_KEY = REAL_SETTINGS.getSetting('YT_API_KEY')
TMDB_API_KEY = REAL_SETTINGS.getSetting('TMDB_API_KEY')

# pyfscache globals
from pyfscache import *
cache_daily = FSCache(REQUESTS_LOC, days=1, hours=0, minutes=0)

try:
    from metahandler import metahandlers
    METAGET = metahandlers.MetaData(preparezip=False,
                                    tmdb_api_key=TMDB_API_KEY)
    ENHANCED_DATA = REAL_SETTINGS.getSetting('Enable_Metahandler') == 'true'
except Exception, e:
    ENHANCED_DATA = False
    xbmc.log("plugin.video.bringthepopcorn: metahandler Import failed! " +
             str(e))


def log(msg, level=xbmc.LOGDEBUG):
    if DEBUG == True:
        xbmc.log(ADDON_ID + '-' + ADDON_VERSION + '-' + msg, level)


def uni(string):
    if isinstance(string, basestring):
        if isinstance(string, unicode):
Esempio n. 19
0
def getDirectory(name,
                 url,
                 audio,
                 image,
                 fanart,
                 playable,
                 content,
                 close=True,
                 local=False):
    if local == True:
        f = control.openFile(url)
        result = f.read()
        f.close()
    else:
        result = cache.get(client.request, 0, url)

    result = str(result).replace('\r', '').replace('\n', '').replace(
        '\t', '').replace('&nbsp;', '')

    try:
        fanart = re.findall('<fanart>(.+?)</fanart>', result)[0]
    except:
        fanart = '0'

    try:
        notify = re.compile('<notify>(.+?)</notify>').findall(result)[0]

        vip = re.findall('<poster>(.+?)</poster>', result)[0]
        if not re.search('[a-zA-Z]', vip): raise Exception()

        def message(vip):
            return (vip + version)

        check = cache.get(message, 600000000, vip, table='rel_vip')

        version = re.findall('<new>(.+?)</new>', notify)[0]
        if not version.isdigit(): raise Exception()

        if check == (vip + version): raise Exception()

        title = '[B]Announcement From %s![/B]' % vip
        msg1 = re.findall('<message1>(.+?)</message1>', notify)[0]
        msg2 = re.findall('<message2>(.+?)</message2>', notify)[0]
        msg3 = re.findall('<message3>(.+?)</message3>', notify)[0]

        check = cache.get(message, 0, vip, table='rel_vip')

        control.dialog.ok(str(title), str(msg1), str(msg2), str(msg3))
    except:
        pass

    infos = re.compile('<info>(.+?)</info>').findall(result)

    for info in infos:
        try:
            name = re.findall('<message>(.+?)</message>', info)[0]

            try:
                image = re.findall('<thumbnail>(.+?)</thumbnail>', info)[0]
            except:
                image = '0'

            addDirectoryItem(name, '0', '0', image, image, fanart, '0', '0',
                             {})
        except:
            pass

    popups = re.compile('<popup>(.+?)</popup>').findall(result)

    for popup in popups:
        try:
            name = re.findall('<name>(.+?)</name>', popup)[0]

            url = re.findall('<popImage>(.+?)</popImage>', popup)[0]

            try:
                image = re.findall('<thumbnail>(.+?)</thumbnail>', popup)[0]
            except:
                image = '0'

            try:
                audio = re.findall('<sound>(.+?)</sound>', popup)[0]
            except:
                audio = '0'

            addDirectoryItem(name, url, 'openDialog', image, image, fanart,
                             audio, '0', {})
        except:
            pass

    special = re.compile(
        '<name>([^<]+)</name><link>([^<]+)</link><thumbnail>([^<]+)</thumbnail><date>([^<]+)</date>'
    ).findall(result)
    for name, url, image, date in special:
        if re.search(r'\d+', date):
            name += ' [COLOR red] Updated %s[/COLOR]' % date
        addDirectoryItem(name, url, 'ndmode', image, image, fanart, '0', '0',
                         {})

    special = re.compile(
        '<name>([^<]+)</name><link>([^<]+)</link><thumbnail>([^<]+)</thumbnail><mode>([^<]+)</mode>'
    ).findall(result)
    for name, url, image, action in special:
        if not url == phNews:
            addDirectoryItem(name, url, action, image, image, fanart, '0', '0',
                             {})

    meta = False

    try:
        content = re.findall('<meta>(.+?)</meta>', result)[0]
    except:
        content = '0'

    try:
        tvshow = re.findall('<tvshow>(.+?)</tvshow>', result)[0]
    except:
        tvshow = '0'

    if content in ['seasons', 'episodes'] and tvshow == '0':
        content = '0'

    if content in ['movies', 'tvshows'] and control.setting('meta') == 'true':
        try:
            from metahandler import metahandlers
            metaget = metahandlers.MetaData(preparezip=False)
            meta = True
        except:
            meta = False

    elif content in ['seasons', 'episodes']:
        try:
            from metahandler import metahandlers
            metaget = metahandlers.MetaData(preparezip=False)
            #tvd = metaget.get_meta('tvshow', tvshow)
            tvd = cachemeta.get(metaget.get_meta, 24, 'tvshow', tvshow, '', '',
                                '')
        except:
            tvd = {}

    dirs = re.compile('<dir>(.+?)</dir>').findall(result)

    totalItems = len(dirs)

    for dir in dirs:
        try:
            data = {}

            name = re.findall('<name>(.+?)</name>', dir)[0]

            url = re.findall('<link>(.+?)</link>', dir)[0]

            try:
                image = re.findall('<thumbnail>(.+?)</thumbnail>', dir)[0]
            except:
                image = '0'

            try:
                fanart2 = re.findall('<fanart>(.+?)</fanart>', dir)[0]
            except:
                fanart2 = fanart

            if meta == True and content == 'tvshows':
                try:
                    title = cleantitle(name).encode('utf-8')
                    data = {'title': title, 'tvshowtitle': title}

                    #data = metaget.get_meta('tvshow', title)
                    data = cachemeta.get(metaget.get_meta, 24, 'tvshow', title,
                                         '', '', '')

                    metafanart = data['backdrop_url']
                    if not metafanart == '': fanart2 = metafanart
                except:
                    pass

            elif content == 'tvshows':
                try:
                    title = cleantitle(name).encode('utf-8')
                    data = {'title': title, 'tvshowtitle': title}
                except:
                    pass

            elif content == 'seasons':
                try:
                    title = cleantitle(tvshow).encode('utf-8')
                    data = {'title': title, 'tvshowtitle': title}

                    data.update(tvd)

                    metafanart = tvd['backdrop_url']
                    if not metafanart == '': fanart2 = metafanart
                except:
                    pass

            addDirectoryItem(name,
                             url,
                             'ndmode',
                             image,
                             image,
                             fanart2,
                             '0',
                             content,
                             data,
                             totalItems=totalItems)
        except:
            pass

    items = re.compile('<item>(.+?)</item>').findall(result)

    try:
        sort = re.findall('<sort>(.+?)</sort>', result)[0]
    except:
        sort = ''
    if sort == 'yes': items = sorted(items)
    totalItems = len(items)

    for item in items:
        try:

            data = {}

            name = re.findall('<title>(.+?)</title>', item)[0]

            url = re.findall('<link>(.+?)</link>', item)[0]

            try:
                image = image2 = re.findall('<thumbnail>(.+?)</thumbnail>',
                                            item)[0]
            except:
                image = image2 = '0'

            try:
                fanart2 = re.findall('<fanart>(.+?)</fanart>', item)[0]
            except:
                fanart2 = fanart

            if meta == True and content == 'movies':
                try:
                    title = cleantitle(name).encode('utf-8')
                    data = {'title': title}

                    title, year = re.compile('(.+?)[(](\d{4})[)]').findall(
                        name)[0]
                    title = cleantitle(title).encode('utf-8')
                    data = {'title': title, 'year': year}

                    #data = metaget.get_meta('movie', title, year=year)
                    data = cachemeta.get(metaget.get_meta, 24, 'movie', title,
                                         '', '', year)

                    metaimage = data['cover_url']
                    if not metaimage == '': image = metaimage
                    metafanart = data['backdrop_url']
                    if not metafanart == '': fanart2 = metafanart
                except:
                    pass

            elif content == 'movies':
                try:
                    title = cleantitle(name).encode('utf-8')
                    data = {'title': title}

                    title, year = re.compile('(.+?)[(](\d{4})[)]').findall(
                        name)[0]
                    title = cleantitle(title).encode('utf-8')
                    data = {'title': title, 'year': year}
                except:
                    pass

            elif content == 'episodes':
                try:
                    title = cleantitle(name).encode('utf-8')
                    data = {'title': title, 'tvshowtitle': tvshow}
                except:
                    pass
                try:
                    i = cleaneptitle(tvshow, title)
                    title, season, episode = i[0].encode('utf-8'), i[1], i[2]
                    data = {
                        'title': title,
                        'tvshowtitle': tvshow,
                        'season': season,
                        'episode': episode
                    }
                except:
                    pass
                try:
                    data.update({
                        'year': tvd['year'],
                        'imdb_id': tvd['imdb_id'],
                        'tvdb_id': tvd['tvdb_id'],
                        'tvshowtitle': tvd['TVShowTitle'],
                        'genre': tvd['genre'],
                        'studio': tvd['studio'],
                        'status': tvd['status'],
                        'duration': tvd['duration'],
                        'rating': tvd['rating'],
                        'mpaa': tvd['mpaa'],
                        'plot': tvd['plot'],
                        'cast': tvd['cast']
                    })

                    metafanart = tvd['backdrop_url']
                    if not metafanart == '': image = fanart2 = metafanart
                except:
                    pass

            if 'sublink' in url:
                addDirectoryItem(name,
                                 url,
                                 'subDirectory',
                                 image,
                                 image2,
                                 fanart2,
                                 '0',
                                 content,
                                 data,
                                 tvshow=tvshow,
                                 totalItems=totalItems,
                                 isFolder=True)
            else:
                addDirectoryItem(name,
                                 url,
                                 'resolveUrl',
                                 image,
                                 image2,
                                 fanart2,
                                 '0',
                                 content,
                                 data,
                                 totalItems=totalItems,
                                 isFolder=False)
        except:
            pass

    endDirectory(content, close)
Esempio n. 20
0
def tvshows(tvshowtitle, year, imdb, tvdb, season, watched):
    watched = int(watched)

    try:
        from metahandler import metahandlers
        from resources.lib.indexers import episodes

        metaget = metahandlers.MetaData(preparezip=False)

        dialog = control.progressDialog
        dialog.create(control.addonInfo('name'), str(tvshowtitle))
        dialog.update(0, str(tvshowtitle),
                      control.lang(30451).encode('utf-8') + '...')

        metaget.get_meta('tvshow', '', imdb_id=imdb)

        items = episodes.episodes().get(tvshowtitle,
                                        year,
                                        imdb,
                                        '0',
                                        tvdb,
                                        '0',
                                        idx=False)
        try:
            items = [
                i for i in items
                if int('%01d' % int(season)) == int('%01d' % int(i['season']))
            ]
        except:
            pass
        items = [{
            'name': i['name'],
            'season': int('%01d' % int(i['season'])),
            'episode': int('%01d' % int(i['episode']))
        } for i in items]

        for i in range(len(items)):
            if xbmc.abortRequested == True: return sys.exit()
            if dialog.iscanceled(): return dialog.close()

            dialog.update(int((100 / float(len(items))) * i), str(tvshowtitle),
                          str(items[i]['name']))

            season, episode = items[i]['season'], items[i]['episode']
            metaget.get_episode_meta('', imdb, season, episode)
            metaget.change_watched('episode',
                                   '',
                                   imdb,
                                   season=season,
                                   episode=episode,
                                   year='',
                                   watched=watched)

        try:
            dialog.close()
        except:
            pass
    except:
        try:
            dialog.close()
        except:
            pass

    control.refresh()
Esempio n. 21
0
import urllib, urllib2, re, xbmcplugin, xbmcgui, urlresolver, sys, xbmc, xbmcaddon, os, base64
from t0mm0.common.addon import Addon
from metahandler import metahandlers

addon_id = 'plugin.video.movienight'
selfAddon = xbmcaddon.Addon(id=addon_id)
metaget = metahandlers.MetaData(preparezip=False)
addon = Addon(addon_id, sys.argv)
ADDON2 = xbmcaddon.Addon(id='plugin.video.movienight')
fanart = xbmc.translatePath(
    os.path.join('special://home/addons/' + addon_id, 'fanart.jpg'))
icon = xbmc.translatePath(
    os.path.join('special://home/addons/' + addon_id, 'icon.png'))
metaset = selfAddon.getSetting('enable_meta')


def CATEGORIES():
    addDir2('New Releases', 'http://movienight.ws/', 1, icon, '', fanart)
    addDir2('Drama', 'http://movienight.ws/category/drama/', 4, icon, '',
            fanart)
    addDir2('Action', 'http://movienight.ws/category/Action/', 4, icon, '',
            fanart)
    addDir2('Thriller', 'http://movienight.ws/category/Thriller/', 4, icon, '',
            fanart)
    addDir2('Crime', 'http://movienight.ws/category/Crime/', 4, icon, '',
            fanart)
    addDir2('Mystery', 'http://movienight.ws/category/Mystery/', 4, icon, '',
            fanart)
    addDir2('Science Fiction',
            'http://movienight.ws/category/science-fiction/', 4, icon, '',
            fanart)
Esempio n. 22
0
    def WindowsBoxes(self, sTitle, sFileName, num, year=''):

        if (xbmcaddon.Addon('script.extendedinfo')
                and self.getSetting('extendedinfo-view') == 'true'):
            self.showInfo('vStream', 'Lancement de ExtendInfo')
            xbmc.executebuiltin(
                'XBMC.RunScript(script.extendedinfo, info=extendedinfo, name=%s)'
                % sFileName)
            return

        if self.getSetting('meta-view') == 'true':
            xbmc.executebuiltin("Action(Info)")
            return

        if num == "1":
            try:
                from metahandler import metahandlers
                grab = metahandlers.MetaData(
                    preparezip=False,
                    tmdb_api_key='92ab39516970ab9d86396866456ec9b6')
                meta = grab.get_meta('movie', sFileName)
            except:
                xbmc.executebuiltin("Action(Info)")
                return
        elif num == "2":
            try:
                from metahandler import metahandlers
                grab = metahandlers.MetaData(
                    preparezip=False,
                    tmdb_api_key='92ab39516970ab9d86396866456ec9b6')
                meta = grab.get_meta('tvshow', sFileName)
            except:
                xbmc.executebuiltin("Action(Info)")
                return

        if (not meta['imdb_id']):
            xbmc.executebuiltin("Action(Info)")
            return

        class XMLDialog(xbmcgui.WindowXMLDialog):
            """
            Dialog class that asks user about rating of movie.
            """
            def __init__(self, *args, **kwargs):
                xbmcgui.WindowXMLDialog.__init__(self)
                pass

            # def message(self, message):
            # """
            # Shows xbmc dialog with OK and message.
            # """
            # dialog = xbmcgui.Dialog()
            # dialog.ok(" My message title", message)
            # self.close()

            def onInit(self):
                #par default le resumer#
                self.getControl(50).setVisible(False)
                #title
                #self.getControl(1).setLabel(meta['title'])
                meta['title'] = sTitle

                self.getControl(49).setVisible(True)
                #self.getControl(2).setImage(meta['cover_url'])
                #self.getControl(3).setLabel(meta['rating'])
                for e in meta:
                    property = 'ListItem.%s' % (e)
                    if isinstance(meta[e], unicode):
                        xbmcgui.Window(10000).setProperty(
                            property, meta[e].encode('utf-8'))
                    else:
                        if (property == "ListItem.cast"):
                            cast = ''
                            try:
                                for real, act in meta[e]:
                                    cast += real + ' est ' + act + ',  '
                                xbmcgui.Window(10000).setProperty(
                                    property, cast.encode('utf-8'))
                            except:
                                for act in meta[e]:
                                    cast += act + ', '
                                xbmcgui.Window(10000).setProperty(
                                    property, str(cast))

                        else:
                            xbmcgui.Window(10000).setProperty(
                                property, str(meta[e]))

                #description
                #self.getControl(400).setText(meta['plot'])

            def onClick(self, controlId):
                if controlId == 5:
                    self.getControl(400).setVisible(False)
                    self.getControl(50).setVisible(True)
                    return
                elif controlId == 20:
                    self.getControl(50).setVisible(False)
                    self.getControl(400).setVisible(True)
                    return
                elif controlId == 15:
                    return
                self.close()

            def onFocus(self, controlId):
                self.controlId = controlId

            def _close_dialog(self):
                self.close()

            def onAction(self, action):
                if action.getId() in (
                        9,
                        10,
                        92,
                        216,
                        247,
                        257,
                        275,
                        61467,
                        61448,
                ):
                    self.close()

        wd = XMLDialog('DialogInfo.xml', self.__oPath, 'default', '720p')
        wd.doModal()
        del wd
Esempio n. 23
0
#   This program is distributed in the hope that it will be useful,
#   but WITHOUT ANY WARRANTY; without even the implied warranty of
#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#   GNU General Public License for more details.

#   You should have received a copy of the GNU General Public License
#   along with this program.  If not, see <http://www.gnu.org/licenses/>.

import ast,operator,os,re,shutil,sys,string,time,urllib,urlparse
import xbmc,xbmcaddon,xbmcgui,xbmcplugin,xbmcvfs

from metahandler import metahandlers
from md_view import setView
from common import Addon

metaget = metahandlers.MetaData()
dialog = xbmcgui.Dialog()







class md:




	def __init__(self, addon_id, argv=None):
		
Esempio n. 24
0
import urllib, urllib2, re, xbmcplugin, xbmcgui, urlresolver, sys, xbmc, xbmcaddon, os
from t0mm0.common.addon import Addon
from metahandler import metahandlers
addon_id = 'plugin.video.giaitritv'
selfAddon = xbmcaddon.Addon(id=addon_id)
metaget = metahandlers.MetaData(preparezip=False)
addon = Addon(addon_id, sys.argv)
ADDON2 = xbmcaddon.Addon(id='plugin.video.giaitritv')
fanart = xbmc.translatePath(
    os.path.join('special://home/addons/' + addon_id, 'fanart.jpg'))
icon = xbmc.translatePath(
    os.path.join('special://home/addons/' + addon_id, 'icon.png'))
metaset = selfAddon.getSetting('enable_meta')

def CATEGORIES():
    addDir2('Latest Cinema Releases', 'http://www.moviexk.net/cinema/', 1,
            icon, '', fanart)
    addDir2('Recently Added', 'http://www.moviexk.net/new-movies/', 1, icon,
            '', fanart)
    addDir2('Most Viewed', 'http://www.moviexk.net/popular-movies/', 1, icon,
            '', fanart)
    addDir2('HD Movies', 'http://www.moviexk.net/movies-hd/', 1, icon, '',
            fanart)
    addDir2('Genres', 'http://www.moviexk.net', 2, icon, '', fanart)
    addDir2('Search', 'url', 3, icon, '', fanart)
    xbmc.executebuiltin('Container.SetViewMode(50)')

def GETMOVIES(url, name):
    metaset = selfAddon.getSetting('enable_meta')
    link = open_url(url)
Esempio n. 25
0
def tvshows(tvshowtitle, imdb, tvdb, season, watched):
	watched = int(watched)

	try:
		if traktIndicators is True:
			raise Exception()

		from metahandler import metahandlers
		from resources.lib.menus import episodes

		name = control.addonInfo('name')

		dialog = control.progressDialogBG
		dialog.create(str(name), str(tvshowtitle))
		dialog.update(0, str(name), str(tvshowtitle))

		metaget = metahandlers.MetaData()
		metaget.get_meta('tvshow', name='', imdb_id=imdb)

		items = episodes.Episodes().get(tvshowtitle, '0', imdb, tvdb, idx = False)

		for i in range(len(items)):
			items[i]['season'] = int(items[i]['season'])
			items[i]['episode'] = int(items[i]['episode'])

		try:
			items = [i for i in items if int('%01d' % int(season)) == int('%01d' % i['season'])]
		except:
			pass

		items = [{'label': '%s S%02dE%02d' % (tvshowtitle, i['season'], i['episode']), 'season': int('%01d' % i['season']), 'episode': int('%01d' % i['episode'])} for i in items]

		count = len(items)

		for i in range(count):
			if xbmc.abortRequested is True:
				return sys.exit()
			dialog.update(int(100.0 / count * i), str(name), str(items[i]['label']))
			season, episode = items[i]['season'], items[i]['episode']
			metaget.get_episode_meta('', imdb_id = imdb, season = season, episode = episode)
			metaget.change_watched('episode', '', imdb_id = imdb, season = season, episode = episode, watched = watched)

		tvshowsUpdate(imdb = imdb, tvdb = tvdb)

		try:
			dialog.close()
		except:
			pass
	except:
		try:
			dialog.close()
		except:
			pass

	try:
		if traktIndicators is False:
			raise Exception()
		if watched == 7:
			trakt.watch(imdb = imdb, tvdb = tvdb, season = season, refresh = True, notification = trakt.notification)
		else:
			trakt.unwatch(imdb = imdb, tvdb = tvdb, season = season, refresh = True, notification = trakt.notification)
	except:
		# import traceback
		# traceback.print_exc()
		# pass
		from resources.lib.modules import log_utils
		log_utils.error()
Esempio n. 26
0
def updateMeta(params):
    if not cConfig().getSetting('metahandler') == 'true':
        return
    #videoType, name, imdbID, season=season, episode=episode, year=year, watched=watched
    try:
        from metahandler import metahandlers
    except Exception as e:
        logger.info("Could not import package 'metahandler'")
        logger.info(e)
        return
    meta = metahandlers.MetaData()
    season = ''
    episode = ''
    mediaType = params.getValue('mediaType')
    imdbID = params.getValue('imdbID')
    name = str(params.getValue('title'))
    year = params.getValue('year')
    print "MedienType: " + mediaType
    if (mediaType == 'movie' or mediaType == 'tvshow'):
        # show meta search input
        oGui = cGui()
        sSearchText = oGui.showKeyBoard(name)
        if (sSearchText != False and sSearchText != ''):
            if mediaType == 'movie':
                try:
                    foundInfo = meta.search_movies(sSearchText)
                except:
                    logger.info('error or nothing found')
                    foundInfo = False
            elif mediaType == 'tvshow':
                foundInfo = metahandlers.TheTVDB().get_matching_shows(
                    sSearchText, language="all")
            else:
                return
        else:
            return
        if not foundInfo:
            oGui.showInfo('xStream', 'Suchanfrage lieferte kein Ergebnis')
            return
        # select possible match
        dialog = xbmcgui.Dialog()
        items = []
        for item in foundInfo:
            if mediaType == 'movie':
                items.append(
                    str(item['title'].encode('utf-8')) + ' (' +
                    str(item['year']) + ')')
            elif mediaType == 'tvshow':
                items.append(str(item[1]))
            else:
                return
        index = dialog.select('Film/Serie wählen', items)
        if index > -1:
            item = foundInfo[index]
        else:
            return False

    if not imdbID:
        imdbID = ''
    if not year:
        year = ''
    if mediaType == 'movie':
        meta.update_meta(mediaType,
                         name,
                         imdbID,
                         new_imdb_id=str(item['imdb_id']),
                         new_tmdb_id=str(item['tmdb_id']),
                         year=year)
    elif mediaType == 'tvshow':
        if params.exist('season'):
            season = params.getValue('season')
            meta.update_season(name, imdbID, season)
        if params.exist('episode'):
            episode = params.getValue('episode')
        if season and episode:
            meta.update_episode_meta(name, imdbID, season, episode)
        elif season:
            meta.update_season(name, imdbID, season)
        else:
            meta.update_meta(mediaType,
                             name,
                             imdbID,
                             new_imdb_id=str(item[2]),
                             new_tmdb_id=str(item[0]),
                             year=year)
    #print params.getAllParameters()
    xbmc.executebuiltin("XBMC.Container.Refresh")
    return
Esempio n. 27
0
def tvshows(tvshowtitle, imdb, tvdb, season, watched):
    try:
        import sys, xbmc

        if not trakt.getTraktIndicatorsInfo() == False: raise Exception()
        watched = int(watched)
        from metahandler import metahandlers
        from resources.lib.indexers import episodes
        imdb = imdb.encode('utf-8')
        metaget = metahandlers.MetaData(preparezip=False)

        name = control.addonInfo('name')

        dialog = control.progressDialogBG
        dialog.create(str(name), str(tvshowtitle))
        dialog.update(0, str(name), str(tvshowtitle))

        items = episodes.episodes().get(tvshowtitle,
                                        '0',
                                        imdb,
                                        tvdb,
                                        '0',
                                        idx=False)
        try:
            items = [
                i for i in items
                if int('%01d' % int(season)) == int('%01d' % int(i['season']))
            ]
        except:
            pass
        items = [{
            'label':
            '%s S%02dE%02d' %
            (tvshowtitle, int(i['season']), int(i['episode'])),
            'season':
            int('%01d' % int(i['season'])),
            'episode':
            int('%01d' % int(i['episode']))
        } for i in items]

        for i in range(len(items)):
            if xbmc.abortRequested == True: return sys.exit()

            dialog.update(int((100 / float(len(items))) * i), str(name),
                          str(items[i]['label']))

            season, episode = items[i]['season'], items[i]['episode']
            metaget.get_episode_meta('', imdb, season, episode)
            metaget.change_watched('episode',
                                   '',
                                   imdb,
                                   season=season,
                                   episode=episode,
                                   year='',
                                   watched=watched)

        try:
            dialog.close()
        except:
            pass
    except:
        try:
            dialog.close()
        except:
            pass

    control.refresh()
Esempio n. 28
0
    def setWatchedStatus(self):
        if self.content == 'movie':
            try:
                control.jsonrpc(
                    '{"jsonrpc": "2.0", "method": "VideoLibrary.SetMovieDetails", "params": {"movieid" : %s, "playcount" : 1 }, "id": 1 }'
                    % str(self.DBID))
                if not self.folderPath.startswith('plugin://'):
                    control.refresh()
            except:
                pass

            try:
                from metahandler import metahandlers
                metaget = metahandlers.MetaData(preparezip=False)
                metaget.get_meta('movie', self.title, year=self.year)
                metaget.change_watched(self.content,
                                       '',
                                       self.imdb,
                                       season='',
                                       episode='',
                                       year='',
                                       watched=7)
            except:
                pass

            try:
                if trakt.getTraktAddonMovieInfo() == False:
                    trakt.markMovieAsWatched(self.imdb)
                trakt.syncMovies()
            except:
                pass

        elif self.content == 'episode':
            try:
                control.jsonrpc(
                    '{"jsonrpc": "2.0", "method": "VideoLibrary.SetEpisodeDetails", "params": {"episodeid" : %s, "playcount" : 1 }, "id": 1 }'
                    % str(self.DBID))
                if not self.folderPath.startswith('plugin://'):
                    control.refresh()
            except:
                pass

            try:
                from metahandler import metahandlers
                metaget = metahandlers.MetaData(preparezip=False)
                metaget.get_meta('tvshow', self.tvshowtitle, imdb_id=self.imdb)
                metaget.get_episode_meta(self.tvshowtitle, self.imdb,
                                         self.season, self.episode)
                metaget.change_watched(self.content,
                                       '',
                                       self.imdb,
                                       season=self.season,
                                       episode=self.episode,
                                       year='',
                                       watched=7)
            except:
                pass

            try:
                if trakt.getTraktAddonEpisodeInfo() == False:
                    trakt.markEpisodeAsWatched(self.tvdb, self.season,
                                               self.episode)
                trakt.syncTVShows()
            except:
                pass
Esempio n. 29
0
import urllib, urllib2, re, xbmcplugin, xbmcgui, sys, xbmc, xbmcaddon, os, random, urlparse, time, net
from t0mm0.common.addon import Addon
from metahandler import metahandlers
net = net.Net()
addon_id = 'plugin.video.xmovies8'
selfAddon = xbmcaddon.Addon(id=addon_id)
datapath = xbmc.translatePath(selfAddon.getAddonInfo('profile'))
metaget = metahandlers.MetaData(preparezip=False)
addon = Addon(addon_id, sys.argv)
fanart = xbmc.translatePath(
    os.path.join('special://home/addons/' + addon_id, 'fanart.jpg'))
icon = xbmc.translatePath(
    os.path.join('special://home/addons/' + addon_id, 'icon.png'))
metaset = selfAddon.getSetting('enable_meta')

def CATEGORIES():
    #addDir2('Cinema Movies','http://xmovies8.tv/cinema-movies/page/1',1,icon,'',fanart)
    addDir2('New Movies', 'http://xmovies8.tv/new/page/1', 1, icon, '', fanart)
    addDir2('HD Movies', 'http://xmovies8.tv/movie-quality/hd/page/1', 1, icon,
            '', fanart)
    addDir2('Movies By Year', 'http://xmovies8.tv/', 2, icon, '', fanart)
    addDir2('Movies By Genre', 'http://xmovies8.tv/', 4, icon, '', fanart)
    addDir2('Search', 'URL', 3, icon, '', fanart)
    xbmc.executebuiltin('Container.SetViewMode(50)')

def GETYEARS(url):
    link = open_url(url)
    link = link.replace('\n', '').replace('  ', '')
    match = re.compile('<a href="(.+?)">(.+?)</a>').findall(link)
    for url, name in match:
Esempio n. 30
0
def tvshows(tvshowtitle, imdb, tvdb, season, watched):
    watched = int(watched)
    watchedIs = watched == 7

    try:
        from metahandler import metahandlers
        from resources.lib.indexers import episodes

        if not trakt.getTraktIndicatorsInfo() == False: raise Exception()

        name = control.addonInfo('name')

        dialog = control.progressDialogBG()
        dialog.create(str(name), str(tvshowtitle))
        dialog.update(0, str(name), str(tvshowtitle))

        metaget = metahandlers.MetaData(preparezip=False)
        metaget.get_meta('tvshow', name='', imdb_id=imdb)

        items = episodes.episodes().get(tvshowtitle,
                                        '0',
                                        imdb,
                                        tvdb,
                                        idx=False)
        for i in range(len(items)):
            items[i]['season'] = int(items[i]['season'])
            items[i]['episode'] = int(items[i]['episode'])
        try:
            items = [
                i for i in items
                if int('%01d' % int(season)) == int('%01d' % i['season'])
            ]
        except:
            pass
        items = [{
            'label':
            '%s S%02dE%02d' % (tvshowtitle, i['season'], i['episode']),
            'season':
            int('%01d' % i['season']),
            'episode':
            int('%01d' % i['episode'])
        } for i in items]

        count = len(items)
        for i in range(count):
            if xbmc.abortRequested == True: return sys.exit()
            dialog.update(int(100.0 / count * i), str(name),
                          str(items[i]['label']))
            season, episode = items[i]['season'], items[i]['episode']
            metaget.get_episode_meta('',
                                     imdb_id=imdb,
                                     season=season,
                                     episode=episode)
            metaget.change_watched('episode',
                                   '',
                                   imdb_id=imdb,
                                   season=season,
                                   episode=episode,
                                   watched=watched)

        tvshowsUpdate(imdb=imdb, tvdb=tvdb)
        try:
            dialog.close()
        except:
            pass
    except:
        try:
            dialog.close()
        except:
            pass

    try:
        if trakt.getTraktIndicatorsInfo() == False: raise Exception()
        if watched == 7:
            trakt.watch(type=tools.Media.TypeShow,
                        imdb=imdb,
                        tvdb=tvdb,
                        season=season,
                        refresh=True,
                        notification=False)
        else:
            trakt.unwatch(type=tools.Media.TypeShow,
                          imdb=imdb,
                          tvdb=tvdb,
                          season=season,
                          refresh=True,
                          notification=False)
    except:
        tools.Logger.error()
        pass

    try:
        from resources.lib.extensions import video
        if watchedIs: video.Trailer().watch(imdb=imdb)
        else: video.Trailer().unwatch(imdb=imdb)
    except:
        tools.Logger.error()