def get_tmdb_details_data(tmdb_api_key, tmdb_id):
        response = tools.retrieve_web_page('https://api.themoviedb.org/3/movie/'
                                           + str(tmdb_id) +
                                           '?api_key=' + tmdb_api_key +
                                           '&language=en-US', 'movie details')
        data = json.loads(response.read().decode('utf-8'))
        response.close()

        return data
    def get_tmdb_search_data(self, tmdb_api_key):

        response = tools.retrieve_web_page('https://api.themoviedb.org/3/search/movie' 
                                           '?api_key=' + tmdb_api_key +
                                           '&language=en-US&query='
                                           + self.movie_title.replace(' ', '+') +
                                           '&page=1&include_adult=false', 'tmdb movie search page')
        data = json.loads(response.read().decode('utf-8'))
        response.close()

        return data
        def youtube_search():

            for search in self.config.youtube_searches:
                query = apply_query_template(search['template']).replace(' ', '+')
                limit = search['limit']
                count = 0
                while True:
                    try:
                        response = tools.retrieve_web_page('https://www.youtube.com/results?search_query=' + query,
                                                           'youtube search result')
                    except UnicodeEncodeError:
                        print('youtube search query was faulty')
                        self.complete = False
                        return
                    except ValueError:
                        print('youtube search query was faulty')
                        self.complete = False
                        return
                    except URLError as e:
                        print('Failed to download youtube search result. Reason: ' + str(e))
                        if ExtraFinder.conn_errors > 2:
                            self.complete = False
                            raise
                        else:
                            ExtraFinder.conn_errors += 1
                    else:
                        break

                soup = BeautifulSoup(response, "html.parser")

                item_list = soup.findAll(attrs={'class': 'yt-uix-tile-link'})

                for item in item_list:
                    if count >= limit:
                        break
                    count += 1


                    url = 'https://www.youtube.com' + item['href']
                    print('Loading info for: "' + url + '".')

                    if not any(url in youtube_video.url or youtube_video.url in url
                               for youtube_video in self.youtube_videos):
                        youtube_video = YoutubeVideo(url)
                        self.youtube_videos.append(youtube_video)
                        youtube_video.search_source = 'youtube'
                        if youtube_video.is_play_trailer:
                            self.play_trailers.append(youtube_video)
                    else:
                        for youtube_video in self.youtube_videos:
                            if url in youtube_video.url or youtube_video.url in url:
                                youtube_video.search_source += ', youtube'