def tmdb_list(self, url):
        next = url
        try:
            result = self.get_request(url % self.tmdb_key)
            items = result['results']
        except:
            return

        # try:
        # page = int(result['page'])
        # total = int(result['total_pages'])
        # if page >= total: raise Exception()
        # url2 = '%s&page=%s' % (url.split('&page=', 1)[0], str(page+1))
        # result = self.get_request(url2 % self.tmdb_key)
        # # result = client.request(url2 % self.tmdb_key)
        # # result = json.loads(result)
        # items += result['results']
        # except: pass
        try:
            page = int(result['page'])
            total = int(result['total_pages'])
            if page >= total: raise Exception()
            if not 'page=' in url: raise Exception()
            next = '%s&page=%s' % (next.split('&page=', 1)[0], str(page + 1))
            next = next.encode('utf-8')
        except:
            next = ''

        for item in items:
            try:
                title = item['title']
                title = client.replaceHTMLCodes(title)
                title = title.encode('utf-8')

                try:
                    originaltitle = item['original_title']
                    originaltitle = client.replaceHTMLCodes(title)
                    originaltitle = title.encode('utf-8')
                except:
                    originaltitle = title

                year = item['release_date']
                year = re.compile('(\d{4})').findall(year)[-1]
                year = year.encode('utf-8')

                tmdb = item['id']
                tmdb = re.sub('[^0-9]', '', str(tmdb))
                tmdb = tmdb.encode('utf-8')

                # try:
                # meta_chk = []
                # meta_chk.append({'tmdb': tmdb, 'imdb': '0', 'tvdb': '0'})
                # meta_chk = metacache.fetch(meta_chk, self.lang, self.tmdb_key)
                # log_utils.log('meta_chk = %s' % str(meta_chk), __name__, log_utils.LOGDEBUG)

                # for i in meta_chk:
                # if 'metacache' in i:
                # if i['metacache'] is True:
                # item = meta_chk
                # log_utils.log('metacache = %s' % i['metacache'], __name__, log_utils.LOGDEBUG)
                # raise Exception()

                poster = item['poster_path']
                if poster == '' or poster is None:
                    poster = '0'
                if not poster == '0':
                    poster = '%s%s' % (self.tmdb_poster, poster)
                poster = poster.encode('utf-8')

                fanart = item['backdrop_path']
                if fanart == '' or fanart is None:
                    fanart = '0'
                if not fanart == '0':
                    fanart = '%s%s' % (self.tmdb_image, fanart)
                fanart = fanart.encode('utf-8')

                premiered = item['release_date']
                try:
                    premiered = re.compile('(\d{4}-\d{2}-\d{2})').findall(
                        premiered)[0]
                except:
                    premiered = '0'
                premiered = premiered.encode('utf-8')

                try:
                    rating = str(item['vote_average']).encode('utf-8')
                except:
                    rating = '0'

                try:
                    votes = str(format(int(item['vote_count']),
                                       ',d')).encode('utf-8')
                except:
                    votes = '0'

                plot = item['overview']
                if plot == '' or plot is None:
                    plot = '0'
                plot = client.replaceHTMLCodes(plot)
                plot = plot.encode('utf-8')

                try:
                    tagline = item['tagline']
                    tagline = re.compile('[.!?][\s]{1,2}(?=[A-Z])').split(
                        plot)[0]
                    tagline = tagline.encode('utf-8')
                except:
                    tagline = '0'


##--TMDb additional info
                url = self.tmdb_info_link % tmdb
                item = self.get_request(url)

                imdb = item['external_ids']['imdb_id']
                if imdb == '' or imdb is None: imdb = '0'
                imdb = imdb.encode('utf-8')

                # studio = item['production_companies']
                # try: studio = [x['name'] for x in studio][0]
                # except: studio = '0'
                # if studio == '' or studio is None: studio = '0'
                # studio = studio.encode('utf-8')

                try:
                    genre = item['genres']
                    genre = [x['name'] for x in genre]
                    genre = (' / '.join(genre)).encode('utf-8')
                except:
                    genre = 'NA'

                try:
                    duration = (str(item['runtime'])).encode('utf-8')
                except:
                    duration = '0'

                mpaa = item['release_dates']['results']
                mpaa = [i for i in mpaa if i['iso_3166_1'] == 'US']
                try:
                    mpaa = mpaa[0].get('release_dates')[-1].get(
                        'certification')
                    if not mpaa:
                        mpaa = mpaa[0].get('release_dates')[0].get(
                            'certification')
                        if not mpaa:
                            mpaa = mpaa[0].get('release_dates')[1].get(
                                'certification')
                    mpaa = str(mpaa).encode('utf-8')
                except:
                    mpaa = '0'

                director = item['credits']['crew']
                try:
                    director = [
                        x['name'] for x in director
                        if x['job'].encode('utf-8') == 'Director'
                    ]
                except:
                    director = '0'
                if director == '' or director is None or director == []:
                    director = '0'
                director = (' / '.join(director)).encode('utf-8')

                writer = item['credits']['crew']
                try:
                    writer = [
                        x['name'] for x in writer if x['job'].encode('utf-8')
                        in ['Writer', 'Screenplay']
                    ]
                except:
                    writer = '0'
                try:
                    writer = [
                        x for n, x in enumerate(writer) if x not in writer[:n]
                    ]
                except:
                    writer = '0'
                if writer == '' or writer is None or writer == []: writer = '0'
                writer = (' / '.join(writer)).encode('utf-8')

                cast = item['credits']['cast']
                try:
                    cast = [(x['name'].encode('utf-8'),
                             x['character'].encode('utf-8')) for x in cast]
                except:
                    cast = []

                try:
                    if not imdb is None or not imdb == '0':
                        url = self.imdbinfo % imdb
                        item = client.request(url, timeout='30')
                        item = json.loads(item)

                        plot2 = item['Plot']
                        plot2 = client.replaceHTMLCodes(plot2)
                        plot2 = plot.encode('utf-8')
                        if plot == '0' or plot == '' or plot is None:
                            plot = plot2

                        rating2 = str(item['imdbRating'])
                        rating2 = rating2.encode('utf-8')
                        if rating == '0' or rating == '' or rating is None:
                            rating = rating2

                        votes2 = str(item['imdbVotes'])
                        votes2 = str(format(int(votes2), ',d'))
                        votes2 = votes2.encode('utf-8')
                        if votes == '0' or votes == '' or votes is None:
                            votes = votes2
                except:
                    pass

                item = {}
                item = {
                    'content': 'movie',
                    'title': title,
                    'originaltitle': originaltitle,
                    'year': year,
                    'premiered': premiered,
                    'studio': '0',
                    'genre': genre,
                    'duration': duration,
                    'rating': rating,
                    'votes': votes,
                    'mpaa': mpaa,
                    'director': director,
                    'writer': writer,
                    'cast': cast,
                    'plot': plot,
                    'tagline': tagline,
                    'code': tmdb,
                    'imdb': imdb,
                    'tmdb': tmdb,
                    'tvdb': '0',
                    'poster': poster,
                    'poster2': '0',
                    'poster3': '0',
                    'banner': '0',
                    'fanart': fanart,
                    'fanart2': '0',
                    'fanart3': '0',
                    'clearlogo': '0',
                    'clearart': '0',
                    'landscape': '0',
                    'metacache': False,
                    'next': next
                }
                meta = {}
                meta = {
                    'imdb': imdb,
                    'tmdb': tmdb,
                    'tvdb': '0',
                    'lang': self.lang,
                    'user': self.tmdb_key,
                    'item': item
                }

                # fanart_thread = threading.Thread
                from resources.lib.indexers import fanarttv
                extended_art = fanarttv.get_movie_art(tmdb)
                if not extended_art is None:
                    item.update(extended_art)
                    meta.update(item)

                self.list.append(item)
                self.meta.append(meta)
                metacache.insert(self.meta)
                # log_utils.log('self.list = %s' % str(self.list), __name__, log_utils.LOGDEBUG)
            except:
                pass
        return self.list
Beispiel #2
0
        def items_list(i):
            if i['metacache'] is True:
                return

            try:
                next, title, originaltitle, year, tmdb, poster, fanart, premiered, rating, votes, plot, tagline = i[
                    'next'], i['title'], i['originaltitle'], i['year'], i[
                        'tmdb'], i['poster'], i['fanart'], i['premiered'], i[
                            'rating'], i['votes'], i['plot'], i['tagline']

                url = self.tmdb_info_link % tmdb
                item = get_request(url)

                imdb = item.get('imdb_id', '0')
                if imdb == '' or imdb is None or imdb == 'None':
                    imdb = '0'

                # try:
                # studio = item.get('production_companies', None)[0]['name']
                # except:
                # studio = '0'

                genre = []
                for x in item['genres']:
                    genre.append(x.get('name'))
                if genre == []: genre = 'NA'

                duration = str(item.get('runtime', '0'))

                mpaa = item['release_dates']['results']
                mpaa = [x for x in mpaa if x['iso_3166_1'] == 'US']
                try:
                    mpaa = mpaa[0].get('release_dates')[-1].get(
                        'certification')
                    if not mpaa:
                        mpaa = mpaa[0].get('release_dates')[0].get(
                            'certification')
                        if not mpaa:
                            mpaa = mpaa[0].get('release_dates')[1].get(
                                'certification')
                    mpaa = str(mpaa)
                except:
                    mpaa = '0'

                credits = item['credits']
                director = writer = '0'
                for person in credits['crew']:
                    if 'Director' in person['job']:
                        director = ', '.join([
                            director['name'].encode('utf-8')
                            for director in credits['crew']
                            if director['job'].lower() == 'director'
                        ])
                    if person['job'] in [
                            'Writer', 'Screenplay', 'Author', 'Novel'
                    ]:
                        writer = ', '.join([
                            writer['name'].encode('utf-8')
                            for writer in credits['crew']
                            if writer['job'].lower() in
                            ['writer', 'screenplay', 'author', 'novel']
                        ])

                castandart = []
                for person in item['credits']['cast']:
                    try:
                        try:
                            castandart.append({
                                'name':
                                person['name'].encode('utf-8'),
                                'role':
                                person['character'].encode('utf-8'),
                                'thumbnail':
                                ((poster_path + person.get('profile_path'))
                                 if person.get('profile_path') is not None else
                                 '0')
                            })
                        except:
                            castandart.append({
                                'name':
                                person['name'],
                                'role':
                                person['character'],
                                'thumbnail':
                                ((poster_path + person.get('profile_path'))
                                 if person.get('profile_path') is not None else
                                 '0')
                            })
                    except:
                        castandart = []
                    if len(castandart) == 150: break

                values = {
                    'content': 'movie',
                    'title': title,
                    'originaltitle': originaltitle,
                    'year': year,
                    'premiered': premiered,
                    'genre': genre,
                    'duration': duration,
                    'rating': rating,
                    'votes': votes,
                    'mpaa': mpaa,
                    'director': director,
                    'writer': writer,
                    'castandart': castandart,
                    'plot': plot,
                    'tagline': tagline,
                    'code': tmdb,
                    'imdb': imdb,
                    'tmdb': tmdb,
                    'tvdb': '0',
                    'poster': poster,
                    'poster2': '0',
                    'poster3': '0',
                    'banner': '0',
                    'fanart': fanart,
                    'fanart2': '0',
                    'fanart3': '0',
                    'clearlogo': '0',
                    'clearart': '0',
                    'landscape': fanart,
                    'metacache': False,
                    'next': next
                }

                meta = {
                    'imdb': imdb,
                    'tmdb': tmdb,
                    'tvdb': '0',
                    'lang': self.lang,
                    'user': API_key,
                    'item': values
                }

                if disable_fanarttv != 'true':
                    from resources.lib.indexers import fanarttv
                    # extended_art = cache.get(fanarttv.get_movie_art, 168, imdb, tmdb)
                    extended_art = fanarttv.get_movie_art(imdb, tmdb)
                    if extended_art is not None:
                        values.update(extended_art)
                        meta.update(values)

                values = dict(
                    (k, v) for k, v in values.iteritems() if v != '0')
                # self.list.append(values)

                for i in range(0, len(self.list)):
                    if str(self.list[i]['tmdb']) == str(tmdb):
                        self.list[i].update(values)

                if 'next' in meta.get('item'):
                    del meta['item']['next']

                self.meta.append(meta)
                metacache.insert(self.meta)
            except:
                pass
Beispiel #3
0
    def imdb_list(self, url):
        try:
            for i in re.findall('date\[(\d+)\]', url):
                url = url.replace('date[%s]' % i, (self.datetime - datetime.timedelta(days = int(i))).strftime('%Y-%m-%d'))

            def imdb_watchlist_id(url):
                return client.parseDOM(client.request(url), 'meta', ret='content', attrs = {'property': 'pageId'})[0]
            if url == self.imdbwatchlist_link:
                url = cache.get(imdb_watchlist_id, 8640, url)
                url = self.imdblist_link % url
            elif url == self.imdbwatchlist2_link:
                url = cache.get(imdb_watchlist_id, 8640, url)
                url = self.imdblist2_link % url
            result = client.request(url)
            result = result.replace('\n', ' ')
            result = result.decode('iso-8859-1').encode('utf-8')

            items = client.parseDOM(result, 'div', attrs = {'class': '.+? lister-item'}) + client.parseDOM(result, 'div', attrs = {'class': 'lister-item .+?'})
            items += client.parseDOM(result, 'div', attrs = {'class': 'list_item.+?'})
        except:
            return

        try:
            # HTML syntax error, " directly followed by attribute name. Insert space in between. parseDOM can otherwise not handle it.
            result = result.replace('"class="lister-page-next', '" class="lister-page-next')

#            next = client.parseDOM(result, 'a', ret='href', attrs = {'class': '.+?ister-page-nex.+?'})
            next = client.parseDOM(result, 'a', ret='href', attrs = {'class': 'lister-page-next.+?'})

            if len(next) == 0:
                next = client.parseDOM(result, 'div', attrs = {'class': 'pagination'})[0]
                next = zip(client.parseDOM(next, 'a', ret='href'), client.parseDOM(next, 'a'))
                next = [i[0] for i in next if 'Next' in i[1]]

            next = url.replace(urlparse.urlparse(url).query, urlparse.urlparse(next[0]).query)
            next = client.replaceHTMLCodes(next)
            next = next.encode('utf-8')
        except:
            next = ''

        for item in items:
            try:
                title = client.parseDOM(item, 'a')[1]
                title = client.replaceHTMLCodes(title)
                title = title.encode('utf-8')

                originaltitle = title

                year = client.parseDOM(item, 'span', attrs = {'class': 'lister-item-year.+?'})
                year = re.findall('(\d{4})', year[0])[0]
                year = year.encode('utf-8')

                try: show = '–'.decode('utf-8') in str(year).decode('utf-8') or '-'.decode('utf-8') in str(year).decode('utf-8')
                except: show = False
                if show: raise Exception() # Some lists contain TV shows.

                if int(year) > int((self.datetime).strftime('%Y')): raise Exception()

                try: mpaa = client.parseDOM(item, 'span', attrs = {'class': 'certificate'})[0]
                except: mpaa = '0'
                if mpaa == '' or mpaa == 'NOT_RATED': mpaa = '0'
                mpaa = mpaa.replace('_', '-')
                mpaa = client.replaceHTMLCodes(mpaa)
                mpaa = mpaa.encode('utf-8')

                imdb = client.parseDOM(item, 'a', ret='href')[0]
                imdb = re.findall('(tt\d*)', imdb)[0]
                imdb = imdb.encode('utf-8')

#                parseDOM cannot handle elements without a closing tag.
#                try: poster = client.parseDOM(item, 'img', ret='loadlate')[0]
#                except: poster = '0'
                try:
                    from bs4 import BeautifulSoup
                    html = BeautifulSoup(item, "html.parser")
                    poster = html.find_all('img')[0]['loadlate']
                except:
                    poster = '0'

                if '/nopicture/' in poster: poster = '0'
                poster = re.sub('(?:_SX|_SY|_UX|_UY|_CR|_AL)(?:\d+|_).+?\.', '_SX500.', poster)
                poster = client.replaceHTMLCodes(poster)
                poster = poster.encode('utf-8')

                try: genre = client.parseDOM(item, 'span', attrs = {'class': 'genre'})[0]
                except: genre = '0'
                genre = ' / '.join([i.strip() for i in genre.split(',')])
                if genre == '': genre = '0'
                genre = client.replaceHTMLCodes(genre)
                genre = genre.encode('utf-8')

                try: duration = re.findall('(\d+?) min(?:s|)', item)[-1]
                except: duration = '0'
                duration = duration.encode('utf-8')

                rating = '0'
                try: rating = client.parseDOM(item, 'span', attrs = {'class': 'rating-rating'})[0]
                except:
                    try: rating = client.parseDOM(rating, 'span', attrs = {'class': 'value'})[0]
                    except:
                        try: rating = client.parseDOM(item, 'div', ret='data-value', attrs = {'class': '.*?imdb-rating'})[0]
                        except: pass
                if rating == '' or rating == '-': rating = '0'
                if rating == '0':
                    try:
                        rating = client.parseDOM(item, 'span', attrs = {'class': 'ipl-rating-star__rating'})[0]
                        if rating == '' or rating == '-': rating = '0'
                    except: pass
                rating = client.replaceHTMLCodes(rating)
                rating = rating.encode('utf-8')

                votes = '0'
                try: votes = client.parseDOM(item, 'span', attrs = {'name': 'nv'})[0]
                except:
                    try: votes = client.parseDOM(item, 'div', ret='title', attrs = {'class': '.*?rating-list'})[0]
                    except:
                        try: votes = re.findall('\((.+?) vote(?:s|)\)', votes)[0]
                        except: pass
                if votes == '': votes = '0'
                votes = client.replaceHTMLCodes(votes)
                votes = votes.encode('utf-8')

                try: director = re.findall('Director(?:s|):(.+?)(?:\||</div>)', item)[0]
                except: director = '0'
                director = client.parseDOM(director, 'a')
                director = ' / '.join(director)
                if director == '': director = '0'
                director = client.replaceHTMLCodes(director)
                director = director.encode('utf-8')

                try: cast = re.findall('Stars(?:s|):(.+?)(?:\||</div>)', item)[0]
                except: cast = '0'
                cast = client.replaceHTMLCodes(cast)
                cast = cast.encode('utf-8')
                cast = client.parseDOM(cast, 'a')
                if cast == []: cast = '0'

                plot = '0'
                try: plot = client.parseDOM(item, 'p', attrs = {'class': 'text-muted'})[0]
                except:
                    try: plot = client.parseDOM(item, 'div', attrs = {'class': 'item_description'})[0]
                    except: pass
                plot = plot.rsplit('<span>', 1)[0].strip()
                plot = re.sub('<.+?>|</.+?>', '', plot)
                if plot == '': plot = '0'
                if plot == '0':
                    try:
                        plot = client.parseDOM(item, 'div', attrs = {'class': 'lister-item-content'})[0]
                        plot = re.sub('<p\s*class="">', '<p class="plot_">', plot)
                        plot = client.parseDOM(plot, 'p', attrs = {'class': 'plot_'})[0]
                        plot = re.sub('<.+?>|</.+?>', '', plot)
                        if plot == '': plot = '0'
                    except: pass
                plot = client.replaceHTMLCodes(plot)
                plot = plot.encode('utf-8')

                item = {}
                item = {'content': 'movie', 'title': title, 'originaltitle': originaltitle, 'year': year, 'premiered': premiered, 'studio': '0', 'genre': genre, 'duration': duration, 'rating': rating, 'votes': votes,
                                'mpaa': mpaa, 'director': director, 'writer': writer, 'cast': cast, 'plot': plot, 'tagline': tagline, 'code': tmdb, 'imdb': imdb, 'tmdb': tmdb, 'tvdb': '0', 'poster': poster,
                                'poster2': '0', 'poster3': '0', 'banner': '0', 'fanart': '0', 'fanart2': '0', 'fanart3': '0', 'clearlogo': '0', 'clearart': '0', 'landscape': '0', 'metacache': False, 'next': next}
                meta = {}
                meta = {'imdb': imdb, 'tmdb': tmdb, 'tvdb': '0', 'lang': self.lang, 'user': self.tmdb_key, 'item': item}

                # fanart_thread = threading.Thread
                from resources.lib.indexers import fanarttv
                extended_art = fanarttv.get_movie_art(tmdb)
                if not extended_art is None:
                    item.update(extended_art)
                    meta.update(item)

                self.list.append(item)
                self.meta.append(meta)
                metacache.insert(self.meta)
            except:
                pass
        return self.list
Beispiel #4
0
    def tmdb_collections_list(self, url):
        try:
            result = self.get_request(url)
            items = result['items']
        except:
            return
        next = ''
        for item in items:
            try:
                media_type = item['media_type']

                title = (item.get('title')).encode('utf-8')
                if not media_type == 'movie':
                    title = (item.get('name')).encode('utf-8')

                try:
                    originaltitle = (
                        item.get('original_title')).encode('utf-8')
                except:
                    originaltitle = title

                year = item['release_date']
                year = re.compile('(\d{4})').findall(year)[0]
                year = year.encode('utf-8')

                tmdb = item['id']
                tmdb = re.sub('[^0-9]', '', str(tmdb))
                tmdb = tmdb.encode('utf-8')

                poster = item.get('poster_path')
                if not poster == '' and not poster is None:
                    poster = ('%s%s' %
                              (self.tmdb_poster, poster)).encode('utf-8')
                else:
                    poster = '0'

                fanart = item.get('backdrop_path')
                if not fanart == '' and not fanart is None:
                    fanart = ('%s%s' %
                              (self.tmdb_fanart, fanart)).encode('utf-8')
                else:
                    fanart = '0'

                premiered = item['release_date']
                try:
                    premiered = re.compile('(\d{4}-\d{2}-\d{2})').findall(
                        premiered)[0]
                except:
                    premiered = '0'
                premiered = premiered.encode('utf-8')

                try:
                    rating = str(item['vote_average']).encode('utf-8')
                except:
                    rating = '0'

                try:
                    votes = str(format(int(item['vote_count']),
                                       ',d')).encode('utf-8')
                except:
                    votes = '0'

                plot = (item.get('overview')).encode('utf-8')

                try:
                    tagline = item['tagline']
                    if tagline == '' or tagline == '0' or tagline is None:
                        tagline = re.compile('[.!?][\s]{1,2}(?=[A-Z])').split(
                            plot)[0]
                    tagline = tagline.encode('utf-8')
                except:
                    tagline = '0'

                ##--TMDb additional info
                url = self.tmdb_info_link % tmdb
                item = self.get_request(url)

                imdb = item['external_ids']['imdb_id']
                if imdb == '' or imdb is None: imdb = '0'
                imdb = imdb.encode('utf-8')

                # studio = item['production_companies']
                # try: studio = [x['name'] for x in studio][0]
                # except: studio = '0'
                # if studio == '' or studio is None: studio = '0'
                # studio = studio.encode('utf-8')

                genre = item['genres']
                try:
                    genre = [x['name'] for x in genre]
                except:
                    genre = '0'
                genre = ' / '.join(genre)
                genre = genre.encode('utf-8')
                if not genre: genre = 'NA'

                try:
                    duration = str(item['runtime'])
                except:
                    duration = '0'
                if duration == '' or duration is None or duration == 'N/A':
                    duration = '0'
                duration = duration.encode('utf-8')

                mpaa = item['release_dates']['results']
                mpaa = [i for i in mpaa if i['iso_3166_1'] == 'US']
                try:
                    mpaa = mpaa[0].get('release_dates')[-1].get(
                        'certification')
                    if not mpaa:
                        mpaa = mpaa[0].get('release_dates')[0].get(
                            'certification')
                        if not mpaa:
                            mpaa = mpaa[0].get('release_dates')[1].get(
                                'certification')
                    mpaa = str(mpaa).encode('utf-8')
                except:
                    mpaa = '0'

                director = item['credits']['crew']
                try:
                    director = [
                        x['name'] for x in director
                        if x['job'].encode('utf-8') == 'Director'
                    ]
                except:
                    director = '0'
                if director == '' or director is None or director == []:
                    director = '0'
                director = ' / '.join(director)
                director = director.encode('utf-8')

                writer = item['credits']['crew']
                try:
                    writer = [
                        x['name'] for x in writer if x['job'].encode('utf-8')
                        in ['Writer', 'Screenplay']
                    ]
                except:
                    writer = '0'
                try:
                    writer = [
                        x for n, x in enumerate(writer) if x not in writer[:n]
                    ]
                except:
                    writer = '0'
                if writer == '' or writer is None or writer == []:
                    writer = '0'
                writer = ' / '.join(writer)
                writer = writer.encode('utf-8')

                cast = item['credits']['cast']
                try:
                    cast = [(x['name'].encode('utf-8'),
                             x['character'].encode('utf-8')) for x in cast]
                except:
                    cast = []

                item = {}
                item = {
                    'content': 'movie',
                    'title': title,
                    'originaltitle': originaltitle,
                    'year': year,
                    'premiered': premiered,
                    'studio': '0',
                    'genre': genre,
                    'duration': duration,
                    'rating': rating,
                    'votes': votes,
                    'mpaa': mpaa,
                    'director': director,
                    'writer': writer,
                    'cast': cast,
                    'plot': plot,
                    'tagline': tagline,
                    'code': tmdb,
                    'imdb': imdb,
                    'tmdb': tmdb,
                    'tvdb': '0',
                    'poster': poster,
                    'poster2': '0',
                    'poster3': '0',
                    'banner': '0',
                    'fanart': fanart,
                    'fanart2': '0',
                    'fanart3': '0',
                    'clearlogo': '0',
                    'clearart': '0',
                    'landscape': '0',
                    'metacache': False,
                    'next': next
                }
                meta = {}
                meta = {
                    'imdb': imdb,
                    'tmdb': tmdb,
                    'tvdb': '0',
                    'lang': self.lang,
                    'user': self.tmdb_key,
                    'item': item
                }

                # fanart_thread = threading.Thread
                if not self.disable_fanarttv == 'true':
                    from resources.lib.indexers import fanarttv
                    extended_art = fanarttv.get_movie_art(imdb, tmdb)
                    if not extended_art is None:
                        item.update(extended_art)
                        meta.update(item)

                self.list.append(item)
                self.meta.append(meta)
                metacache.insert(self.meta)

            except:
                pass
        return self.list