Exemple #1
0
def GetMeta(t, y):
    tmdb.API_KEY = 'b888b64c9155c26ade5659ea4dd60e64'
    search = tmdb.Search()
    search.movie(query=t)
    for s in search.results:
        year = s['release_date'].split('-', 2)
        if year[0] == y:
            d = s
            state = True
            break
        else:
            state = False

    imdb = Imdb()
    results = imdb.search_for_title(t)
    if state is True:
        for i in results:
            if i['type'] == 'feature' and i['year'] == y:
                result = i
                g = imdb.get_title_genres(result['imdb_id'])
                d['genre_ids'] = g['genres']
                break
            else:
                d['genre_ids'] = ''
        return d
    else:
        d = {}
        return d
Exemple #2
0
def detail(request, movie_id):
    if not request.user.is_authenticated():
        return render(request, 'movies/base.html')
    else:
        user = request.user
        imdb = Imdb()
        titledetails = imdb.get_title(movie_id)
        dlist = []
        detlist = []
        try:
            dlist.append(titledetails['base']['image']['url'])
        except:
            # insert a null image
            dlist.append(' ')

        detlist.append(titledetails['base']['title'])
        title = titledetails['base']['title']
        detlist.append(titledetails['base']['year'])
        try:
            min = int(titledetails['base']['runningTimeInMinutes'])
            hrs = int(min / 60)
            minutes = min - 60 * hrs
            time = str(hrs) + 'hr ' + str(minutes) + 'min'

            detlist.append(time)
        except:
            detlist.append('-')

        detlist.append(imdb.get_title_genres(movie_id)['genres'])
        try:
            detlist.append(titledetails['plot']['summaries'][0]['text'])
        except:
            detlist.append('-')
        try:
            #print('hello')
            castandcrew = imdb.get_title_credits(movie_id)
            castlist = []
            detdict = {}
            detdict['director'] = castandcrew['credits']['director'][0]['name']
            detdict['producer'] = castandcrew['credits']['producer'][0]['name']
            writers = []
            for i in castandcrew['credits']['writer']:
                writers.append(i['name'])
            writerset = set(writers)
            detdict['writers'] = list(writerset)

            detlist.append(detdict)
            for i in range(0, 6):
                castdict = {}
                castdict[castandcrew['credits']['cast'][i][
                    'name']] = castandcrew['credits']['cast'][i]['characters']
                castlist.append(castdict)
            detlist.append(castlist)
        except:
            detlist.append('-')
        dlist.append(detlist)
        return render(request, 'movies/moviedetails.html', {
            'dlist': dlist,
            'title': title
        })
Exemple #3
0
    def _fetch_metadata(self):
        searchtitle = self._title
        if searchtitle.endswith(", The"):
            searchtitle = "The {}".format(searchtitle[:-5])
        elif searchtitle.endswith(", A"):
            searchtitle = "A {}".format(searchtitle[:-3])

        imdb = Imdb()
        if "id" not in self._md:
            print("  * Searching IMDB")
            results = imdb.search_for_title(searchtitle)
            movie_results = [r for r in results if r["type"] == "feature" and r["year"] is not None]

            while len(movie_results) == 0:
                searchtitle = input("No results for \"%s\" Enter alternate/correct movie title >> " % searchtitle)

                results = imdb.search_for_title(searchtitle)
                movie_results = [r for r in results if r["type"] == "feature" and r["year"] is not None]

            exact_matches = [r for r in movie_results if r["title"].lower() == searchtitle.lower()]

            if len(exact_matches) > 0:
                movie_results = exact_matches

            if len(movie_results) > 1:
                choices=[("%s (%s)" % (r["title"], r["year"]), idx) for idx, r in enumerate(movie_results)]
                choices.append(("Not found", -1))
                answer = inquirer.prompt([
                    inquirer.List("index",
                        message="Multiple results found:",
                        choices=choices
                    )
                ])
                if answer["index"] == -1:
                    self._md["id"] = input("Enter IMDB id: ")
                    movie_results = []
                else:
                    movie_results = [movie_results[answer["index"]]]

            if len(movie_results) > 0:
                mpr = movie_results[0]
                self._md["id"] = mpr["imdb_id"]
                print("  * Fetching data for {} ({})".format(mpr["title"], mpr["year"]))
        else:
            print("  * Fetching data for %s" % self._md["id"])

        imdb_movie = imdb.get_title(self._md["id"])

        self._md["title"] = imdb_movie["base"]["title"]
        self._md["year"] = imdb_movie["base"]["year"]

        if "outline" in imdb_movie["plot"]:
            self._md["plot"] = imdb_movie["plot"]["outline"]["text"]
        else:
            self._md["plot"] = imdb_movie["plot"]["summaries"][0]["text"]

        self._md["genres"] = imdb.get_title_genres(self._md["id"])["genres"]

        self._write_nfo()
Exemple #4
0
def AddMovieToDB(imdbId):
    ia = Imdb()
    data = ia.get_title(imdbId)
    title = data['base']['title']
    imageUrl = data['base']['image']['url']
    genres = ia.get_title_genres(imdbId)['genres']
    year = data['base']['year']

    movie = Movie(imdbId = imdbId, year = year, poster = imageUrl, genre = genres, title = title)

    movie.save()

    return
Exemple #5
0
class MovieList:
    def __init__(self):
        tmdbsimple.API_KEY = settings.TMDB_API_KEY

        self.filename = "movies.db"
        self.full_path = db_full_path(self.filename)

        if self.filename not in db_cons or not db_cons[self.filename]:
            movie.Session.configure(
                bind=create_engine(f"sqlite:///{self.full_path}",
                                   echo=True,
                                   connect_args={"check_same_thread": False},
                                   json_serializer=lambda obj: json.dumps(
                                       obj, ensure_ascii=False)))
            self.session: Session = movie.Session()
            movie.Base.metadata.create_all(self.session.bind, checkfirst=True)

            db_locks[self.filename] = threading.Lock()
            db_cons[self.filename] = self.session
        else:
            self.session: Session = db_cons[self.filename]

        self.imdb = Imdb(exclude_episodes=True)

    def __iter__(self):
        for item in self.query.all():
            yield item

    def __getitem__(self, pk):
        return self.query.get(pk)

    def __contains__(self, pk):
        try:
            self.__getitem__(pk)
            return True
        except KeyError:
            return False

    @staticmethod
    def search_tmdb(query=None,
                    tmdb_id=None,
                    year=None,
                    language=None,
                    adult=False):
        if tmdb_id:
            results = [movies.Movies(id=tmdb_id)]
        elif query:
            tmdb_kwargs = dict(query=query,
                               year=year,
                               language=language,
                               adult=adult)
            tmdb_kwargs = {
                key: value
                for key, value in tmdb_kwargs.items() if value
            }
            results = search.Search().movie(**tmdb_kwargs)['results']
        else:
            raise Exception('Query or tmdb id is required!')

        return results

    @staticmethod
    def popular_tmdb(language=None):
        tmdb_kwargs = dict(language=language) if language else dict()
        return movies.Movies().popular(**tmdb_kwargs)['results']

    def search_imdb(self, query: str = ''):
        return self.imdb.search_for_title(title=query)

    def popular_imdb(self):
        return self.imdb.get_popular_movies()['ranks']

    def add_from_tmdb(self,
                      tmdb_id: str,
                      language: str = settings.INDEXER_DEFAULT_LANGUAGE):
        logger.debug(f'Adding movie from tmdb with id: {tmdb_id}')
        existing = self.session.query(
            movie.IndexerData).filter_by(pk=tmdb_id).first()
        if existing:
            logger.debug(f'Movie already existed as {existing.movie.name}')
            return existing.movie

        tmdb_object = tmdbsimple.movies.Movies(id=tmdb_id).info()
        return self.add_from_imdb(tmdb_object['imdb_id'],
                                  language,
                                  tmdb_primary=True)

    def add_from_imdb(self,
                      imdb_id: str,
                      language: str = settings.INDEXER_DEFAULT_LANGUAGE,
                      tmdb_primary=False):
        if not tmdb_primary:
            logger.debug(f'Adding movie from imdb id: {imdb_id}')

        existing = self.session.query(
            movie.IndexerData).filter_by(pk=imdb_id).first()
        if existing:
            logger.debug(f'Movie already existed as {existing.movie.name}')
            return existing.movie

        imdb_object = self.imdb.get_title(imdb_id)
        tmdb_id = tmdbsimple.find.Find(id=imdb_id).info(
            external_source='imdb_id')['movie_results'][0]['id']
        tmdb_object = tmdbsimple.movies.Movies(id=tmdb_id).info()

        if tmdb_primary:
            instance = movie.Movie(
                tmdb_object['title'],
                year=tmdb_object['release_date'].split('-')[0])
            if imdb_object['base']['title'] and not instance.name:
                instance.name = imdb_object['base']['title']
        else:
            instance = movie.Movie(imdb_object['base']['title'],
                                   year=imdb_object['base']['year']
                                   or tmdb_object)
            if tmdb_object['release_date'] and not instance.year:
                instance.year = tmdb_object['release_date'].split('-')[0]
            if tmdb_object['title'] and not instance.name:
                instance.name = tmdb_object['title']

        if tmdb_object['release_date']:
            instance.date = datetime.datetime.strptime(
                tmdb_object['release_date'], '%Y-%m-%d').date()

        instance.language = tmdb_object['original_language'] or language

        tmdb_data = movie.IndexerData(site='tmdb',
                                      data=tmdb_object,
                                      pk=tmdb_id)
        imdb_data = movie.IndexerData(site='imdb',
                                      data=imdb_object,
                                      pk=imdb_id)

        imdb_genres = self.imdb.get_title_genres(imdb_id)['genres']

        def add_imdb_genres():
            for genre in imdb_genres:
                logger.debug(f'Adding imdb genre {genre}')
                imdb_data.genres.append(movie.Genres(pk=genre))
            instance.indexer_data.append(imdb_data)

        def add_tmdb_genres():
            for genre in tmdb_object['genres']:
                if genre['name'] not in imdb_genres:
                    logger.debug(f'Adding tmdb genre {genre["name"]}')
                    tmdb_data.genres.append(movie.Genres(pk=genre['name']))
            instance.indexer_data.append(tmdb_data)

        if tmdb_primary:
            add_tmdb_genres()
            add_imdb_genres()
        else:
            add_imdb_genres()
            add_tmdb_genres()

        self.commit(instance)

        logger.debug(f'Returning instance for {instance.name}')
        return instance

    def commit(self, instance=None):
        logger.debug('Committing')
        if instance:
            self.session.add(instance)
        self.session.flush()
        self.session.commit()

    def delete(self, pk):
        instance = self.query.get(pk)
        if instance:
            self.session.delete(instance)

    @property
    def query(self):
        return self.session.query(movie.Movie)

    def by_slug(self, slug):
        return self.query.filter_by(slug=slug).first()

    def search_providers(self, movie_object: movie.Movie):
        # We should only need to support backlog for movies manually
        # Movies should be returned in the existing RSS searches if we have movies in our list
        strings = movie_object.search_strings()
        for provider in settings.providerList:
            if provider.can_backlog and provider.backlog_enabled and provider.supports_movies:
                results = provider.search(strings)
                for result in results:
                    movie.Result(result=result,
                                 provider=provider,
                                 movie=movie_object)

            self.commit(movie_object)
            # TODO: Check if we need to break out here and stop hitting providers if we found a good result

    def snatch_movie(self, result: movie.Result):
        pass

    def search_thread(self):
        pass
Exemple #6
0
count = 0
genre_dict = {}
seasons_dict = {}
imdb = Imdb()
for series in list_1:
    count += 1
    print(count)
    if series:
        try:
            title = re.sub(r"\B([A-Z])", r" \1", series)
            k = imdb.search_for_title(title)
            b = k[0]['imdb_id']
            year = k[0]['year']
            try:
                genre = imdb.get_title_genres(b)['genres']
                genre_dict[series] = genre
            except LookupError:
                print('LookupError for {}', series)
                genre_dict[series] = 'unknown'
            try:
                eps = len(imdb.get_title_episodes(b)['seasons'])
                seasons_dict[series] = eps
            except LookupError:
                print('LookupError for {}', series)
                seasons_dict[series] = 1
        except LookupError:
            print('LookupError for {}', series)
        except TimeoutError:
            print('TimeoutError for {}', series)
        new_path = os.path.join(base, f_name + f[-4:])
        if os.path.exists(new_path):
            print("File already exists: {0} : {1}".format(f, new_path))
            continue
        os.rename(os.path.join(root, f), new_path)
        if len(os.listdir(root)) < 1:
            try:
                os.rmdir(root)
            except:
                pass

        # ---------------------------------------------
        # Create a shortcut to the file based on genre
        # ---------------------------------------------
        desktop = winshell.desktop()
        genres = ia.get_title_genres(res[n]['imdb_id'])

        library = "Z:\Ripped\Movies"
        for genre in genres:
            genre_dir = os.path.join(library, "Genres", genre)
            if not os.path.exists(genre_dir):
                os.mkdir(genre_dir)
            s_path = os.path.join(genre_dir, f_name + ".lnk")
            if os.path.exists(s_path):
                os.remove(s_path)
            target = new_path
            wDir = base
            icon = new_path

            shell = Dispatch('WScript.Shell')
            shortcut = shell.CreateShortCut(s_path)
Exemple #8
0
def start_process(filenames, mode):
    """
    This is the main funtion of the script
    where it does its main processing.\n
    filenames is the list of files to be processed\n
    mode = 1,2,3 or 4\n
    1 means mp4 to tagged mp4\n
    2 means mp4 with sub to subbed and tagged mp4\n
    3 means mkv to tagged mp4\n
    4 means mkv with sub to subbed and tagged mp4
    """

    for filename in filenames:
        try:
            title = filename[:-4]
            
            stream_md = collect_stream_metadata(filename)
            streams_to_process = []
            dvdsub_exists=False
            for stream in stream_md['streams']:
                if not stream['codec_name'] in sub_codec_blacklist:
                    streams_to_process.append(stream['index'])
                else:
                    dvdsub_exists=True
            
            print('\nSearching IMDb for "{}"'.format(title))
            
            imdb = Imdb()
            movie_results = []
            results = imdb.search_for_title(title)
            for result in results:
                if result['type'] == "feature":
                    movie_results.append(result)
                    
            if not movie_results:
                while not movie_results:
                    title = input('\nNo results for "' + title +
                                  '" Enter alternate/correct movie title >> ')
                    
                    results = imdb.search_for_title(title)
                    for result in results:
                        if result['type'] == "feature":
                            movie_results.append(result)
                
            # The most prominent result is the first one
            # mpr - Most Prominent Result
            mpr = movie_results[0]
            print('\nFetching data for {} ({})'.format(mpr['title'],
                                                       mpr['year']))
                                                     
            # imdb_movie is a dict of info about the movie
            imdb_movie = imdb.get_title(mpr['imdb_id'])
            
            imdb_movie_title = imdb_movie['base']['title']
            imdb_movie_year = imdb_movie['base']['year']
            imdb_movie_id = mpr['imdb_id']
                        
            
            imdb_movie_rating = imdb_movie['ratings']['rating']
            
            if not 'outline' in imdb_movie['plot']:
                imdb_movie_plot_outline = (imdb_movie['plot']['summaries'][0]
                                           ['text'])
                print("\nPlot outline does not exist. Fetching plot summary "
                        "instead.\n\n")
            else:
                imdb_movie_plot_outline = imdb_movie['plot']['outline']['text']
            
            # Composing a string to have the rating and the plot of the
            # movie which will go into the 'comment' metadata of the 
            # mp4 file.
            imdb_rating_and_plot = str('IMDb rating ['
                                       + str(float(imdb_movie_rating))
                                       + '/10] - '
                                       + imdb_movie_plot_outline)
                                       
            
            imdb_movie_genres = imdb.get_title_genres(imdb_movie_id)['genres']
            
            # Composing the 'genre' string of the movie.
            # I use ';' as a delimeter to searate the multiple genre values
            genre = ';'.join(imdb_movie_genres)
            
            
            newfilename = (imdb_movie_title
                           + ' ('
                           + str(imdb_movie_year)
                           + ').mp4')
                           
            # We don't want the characters not allowed in a filename
            newfilename = (newfilename
                           .replace(':', ' -')
                           .replace('/', ' ')
                           .replace('?', ''))

            command = ""
            stream_map = []
            for f in streams_to_process:
                stream_map.append("-map 0:{}".format(f))
            stream_map_str = ' '.join(stream_map)           
            
            

            if mode == 1:
                # it is required to rename it as its already an mp4 file that
                # wasn't proccessed by ffmpeg
                os.rename(filename, newfilename)
            if mode == 2 or mode == 4:

                command = ('ffmpeg -i "'
                           + filename
                           + '" -sub_charenc UTF-8 -i "'
                           + filename[:-4]
                           + '.srt" '
                           + stream_map_str
                           + ' -map 1 -c copy -c:s mov_text '
                             '"' + newfilename + '"')
                subprocess.run(shlex.split(command))
            if mode == 3:
                command = ('ffmpeg -i '
                           + '"' + filename + '" '
                           + stream_map_str
                           + ' -c copy -c:s mov_text '
                             '"' + newfilename + '"')
                subprocess.run(shlex.split(command))
                
            if dvdsub_exists:
                print("\nRemoved DVD Subtitles due to uncompatibility with "
                      "mp4 file format")

            # The poster is fetched from tmdb only if there is no file
            # named " filename + '.jpg' " in the working directory
            # this way user can provide their own poster image to be used
            poster_filename = filename[:-4] + '.jpg'
            if not os.path.isfile(poster_filename):
                print('\nFetching the movie poster...')
                tmdb_find = tmdb.Find(imdb_movie_id)
                tmdb_find.info(external_source = 'imdb_id')
                
                path = tmdb_find.movie_results[0]['poster_path']
                complete_path = r'https://image.tmdb.org/t/p/w780' + path
                
                uo = urllib.request.urlopen(complete_path)
                with open(poster_filename, "wb") as poster_file:
                    poster_file.write(uo.read())
                    poster_file.close()
            
            

            video = MP4(newfilename)
            with open(poster_filename, "rb") as f:
                video["covr"] = [MP4Cover(
                                    f.read(),
                                    imageformat=MP4Cover.FORMAT_JPEG)]
                video['\xa9day'] = str(imdb_movie_year)
                video['\xa9nam'] = imdb_movie_title
                video['\xa9cmt'] = imdb_rating_and_plot
                video['\xa9gen'] = genre
                print('\nAdding poster and tagging file...')

            try:
                video.save()
                #  I have encounterd this error in pevious version
                #  of script, now I handle it by removing the metadata
                #  of the file. That seems to solve the probelem
            except OverflowError:
                remove_meta_command = ('ffmpeg -i "' + newfilename
                                       + '" -codec copy -map_metadata -1 "'
                                       + newfilename[:-4] + 'new.mp4"')
                subprocess.run(shlex.split(remove_meta_command))
                video_new = MP4(newfilename[:-4] + 'new.mp4')
                with open(poster_filename, "rb") as f:
                    video_new["covr"] = [MP4Cover(
                                            f.read(),
                                            imageformat=MP4Cover.FORMAT_JPEG)]
                    video_new['\xa9day'] = str(imdb_movie_year)
                    video_new['\xa9nam'] = imdb_movie_title
                    video_new['\xa9cmt'] = imdb_rating_and_plot
                    video_new['\xa9gen'] = genre
                    print('\nAdding poster and tagging file...')

                try:
                    video_new.save()
                    if not os.path.exists('auto fixed files'):
                        os.makedirs('auto fixed files')
                    os.rename(newfilename[:-4]
                              + 'new.mp4', 'auto fixed files\\'
                              + newfilename[:-4] + '.mp4')
                    os.remove(newfilename)

                except OverflowError:
                    errored_files.append(filename
                                         + (' - Could not save even after'
                                            'striping metadata'))
                    continue

            os.remove(poster_filename)
            print('\n' + filename
                       + (' was proccesed successfuly!\n\n===================='
                          '======================================'))
        except Exception as e:
            print('\nSome error occured while processing '
                  + filename
                  + '\n\n====================================================')
            errored_files.append(filename + ' - ' + str(e))
            PrintException()
Exemple #9
0
                tempData['rating'] = movie["ratings"]['rating']
        except:
            print("Couldn't get ratings")
        try:
            if tempData['duration'] == "":
                tempData['duration'] = movie['base']["runningTimeInMinutes"]
        except:
            print("Couldn't get duration")
        try:
            if tempData["release_date"] == "":
                tempData["release_date"] = movie["base"]['year']
        except:
            print("Couldn't get release date")
        try:
            if tempData["genres"] == []:
                tempData["genres"] = imdb.get_title_genres(
                    tempData["imdb_id"])["genres"]
        except:
            print("Couldn't get geners")

        tempData["progress"] = 0

        #Add main video file
        if tempData["main_id"] == "" or uDP:
            tempData["main_id"] = getPointer(
                glob.glob(os.path.join(path, '*.mp4'))[0])

        #Add trailer file, download if doesn't exist
        if tempData["trailer_id"] == "" or uDP:
            if (len(glob.glob(os.path.join(path, '*.trailer'))) == 0):
                print("No trailer found. Downloading.")
                url = imdb.get_title_videos(
Exemple #10
0
        def get_imdb_best_title(torrent_info, comparator):
            try:
                from operator import itemgetter
                from imdbpie import Imdb
                
                imdb            = Imdb()
                updated_imdb    = []
                imdb_selected   = []
                item_selected   = {}
                year_found      = None
                torrent_title   = torrent_info['torrent_title']

                ## Using torrent title until year,
                ##   only if torrent title has a year
                title_has_year  = re.match(r'.*([1-3][0-9]{3})', torrent_title)
                if title_has_year is not None:
                    year_found  = title_has_year.group(1)
                    
                    ## Adding torrent title year
                    torrent_info.update({'year':year_found})
                    splitted = str(torrent_title.split(year_found)[0])
                else:
                    splitted = str(torrent_title)
                    
                ## Remove non-required specific characters
                if not splitted.isalpha():
                    splitted = splitted.translate(None, "([_#@&*|~`%^<>").strip()
                torrent_info['torrent_title'] = splitted
                
                ## Getting IMDB information
                imdb_data       = imdb.search_for_title(splitted)
                self.logger.debug("+ Getting IMDB [%s] items"%(str(len(imdb_data))))
                
                ## Pre-selecting only IMDB titles that 
                ##   look very similar to torrent title
                ignored_items   = 0
                for imdb_item in imdb_data:
                    score = comparator.score(splitted, imdb_item['title'])
                    year_matches    = year_found == imdb_item['year']
                    item_type       = 'feature' == imdb_item['type']
                    
                    ## Adding only very similar titles
                    if score > 0.98:
                        imdb_item.update({'score':score})
                        imdb_item.update({'year_matches':year_matches})
                        updated_imdb.append(imdb_item)
                    else:
                        ignored_items += 1
                        self.logger.debug("      Ignored [%s] vs [%s] = %f"%
                                          (splitted, imdb_item['title'], score))

                self.logger.debug("+   Ignored [%s] item(s)"%(str(ignored_items)))
                
                ## Sorting IMDB retrieved items by similarity score
                sorted_imdb = sorted(updated_imdb, key=itemgetter('score'), reverse=True) 
                
                ## Checking if torrent year matches, otherwise 
                ##   provide only feature type IMDB items
                better_item_not_found           = False
                for imdb_item in sorted_imdb:
                    item_added                  = False
                    new_item                    = {}
                    if imdb_item['year_matches']:
                        better_item_not_found   = True
                        item_added              = True
                    elif not better_item_not_found and 'feature' == imdb_item['type']:
                        item_added              = True
                        
                    ## Retrieving additional IMDB information
                    ##   and adding item
                    if item_added:
                        imdb_id                 = imdb_item['imdb_id']
                        title_info              = imdb.get_title(imdb_id)
                        title_genres            = imdb.get_title_genres(imdb_id)
                        
                        
                        if title_genres is not None and 'genres' in title_genres:
                            genres_label         = str(', '.join(title_genres['genres']))
                            imdb_item.update({'genres': genres_label})

                        imdb_image_url          = ''
                        if 'image' in title_info['base'].keys():
                            imdb_image_url          = title_info['base']['image']['url']
                        else:
                            self.logger.debug("-   Image URL not found")
                            self.logger.debug("-   Looking in similarities for images...")
                            for similarity_item in title_info['similarities']:
                                itemKeys        = similarity_item.keys()
                                if 'image' in itemKeys:
                                    imageKey    = similarity_item['image'].keys()
                                    if 'url' in imageKey:
                                        imdb_image_url = similarity_item['image']['url']
                                        self.logger.debug("      Using image from similarities")
                                        break
                        imdb_raiting            = ''
                        if 'rating' in title_info['ratings'].keys():
                            imdb_raiting        = str(title_info['ratings']['rating'])
                        else:
                            self.logger.debug("-   Raiting not found")

                        imdb_plot               = ''
                        if 'outline' in title_info['plot'].keys():
                            imdb_plot           = title_info['plot']['outline']['text']
                        else:
                            self.logger.debug("-   Plot not found")

                        
                        imdb_title_url          = title_info['base']['id']

                        imdb_item.update({'raiting':    imdb_raiting})
                        imdb_item.update({'plot':       imdb_plot})
                        imdb_item.update({'image_url':  imdb_image_url})
                        imdb_item.update({'title_url':  'http://www.imdb.com/'+imdb_title_url})
                        imdb_selected.append(imdb_item)
                
                item_selected.update({'imdb_info':imdb_selected})
                item_selected.update({'torrent_info':torrent_info})
            except Exception as inst:
              Utilities.ParseException(inst, logger=self.logger)
            finally:
                return item_selected