def __init__(self): # key = self.load_api_key() tmdb = TMDb() tmdb.api_key = '76796d972576af7067d952e53839883b' tmdb.language = 'en' tmdb.debug = True self.tmdb = tmdb
def getMovies(self): tmdb = TMDb() tmdb.api_key = '1dc5bcb73c0781470cb348d5e02a05a5' tmdb.language = 'en' tmdb.debug = False movie = Movie() self.movie = movie self.popular = movie.popular() self.now = movie.now_playing() self.top = movie.top_rated() discover = Discover() self.movie_discovered = discover.discover_movies( {'sort_by': 'vote_average.desc'}) lists = [self.top, self.now, self.popular, self.movie_discovered] self.all_movies = [] for li in lists: for m in li: exist = False for r in self.all_movies: if r.id == m.id: exist = True if (not exist): self.all_movies.append(m)
def add_poster(self, movie_title): import requests from PyQt5.QtGui import QIcon, QPixmap from tmdbv3api import TMDb from tmdbv3api import Movie tmdb = TMDb() tmdb.api_key = '1437062848d1dda19bd3907cf120e9f4' tmdb.language = 'en' #tmdb.debug = True movie = Movie() m = movie.search(movie_title) for i in m: continue_path = i.poster_path if continue_path != "None": continue_path = i.poster_path #print(continue_path) break url = 'http://image.tmdb.org/t/p/w185' combine = url + continue_path #readlink href = combine r = requests.get(href, stream=True) pixmap = QPixmap() pixmap.loadFromData(r.content) self.poster.setPixmap(pixmap) self.poster.setScaledContents(True) #fullsizepic self.poster.show()
def discoverMedia(self, start_date, end_date): sd_str = datetime.strftime(start_date, '%Y-%m-%d') ed_str = datetime.strftime(end_date, '%Y-%m-%d') tmdb = TMDb() tmdb.api_key = tmdb_key tmdb.language = 'en' discover = Discover() movies = discover.discover_movies({ 'primary_release_date.gte': sd_str, 'primary_release_date.lte': ed_str }) for res in movies: try: Media.objects.get(external_id=res.id) continue except Media.DoesNotExist as ex: if res.release_date == '': res.release_date = None if res.poster_path == None: poster = "https://lascrucesfilmfest.com/wp-content/uploads/2018/01/no-poster-available-737x1024.jpg" else: poster = "https://www.themoviedb.org/t/p/w600_and_h900_bestv2" + res.poster_path Media.objects.create( title = res.title, description = res.overview, poster_url = poster, release_date = res.release_date, media_type= "Movie", external_id= res.id ) series = discover.discover_tv_shows({ 'first_air_date.gte': sd_str, 'first_air_date.lte': ed_str }) for res in series: if res.first_air_date == '': res.first_air_date = None if res.poster_path == None: poster = "https://lascrucesfilmfest.com/wp-content/uploads/2018/01/no-poster-available-737x1024.jpg" else: poster = "https://www.themoviedb.org/t/p/w600_and_h900_bestv2" + res.poster_path try: Media.objects.get(external_id=res.id) continue except Media.DoesNotExist as ex: Media.objects.create( title = res.name, description = res.overview, poster_url = poster, release_date = res.first_air_date, media_type= "TV", external_id= res.id )
def query_api(self, name): tmdb = TMDb() tmdb.api_key = tmdb_key tmdb.language = 'en' #search movies movie = Movie() search_movie = movie.search(name) for res in search_movie: try: Media.objects.get(external_id=res.id) continue except Media.DoesNotExist as ex: if res.release_date == '': res.release_date = None if res.poster_path == None: poster = "https://lascrucesfilmfest.com/wp-content/uploads/2018/01/no-poster-available-737x1024.jpg" else: poster = "https://www.themoviedb.org/t/p/w600_and_h900_bestv2" + res.poster_path Media.objects.create( title = res.title, description = res.overview, poster_url = poster, release_date = res.release_date, media_type= "Movie", external_id= res.id ) #search TV tv = TV() search_tv = tv.search(name) for res in search_tv: if res.first_air_date == '': res.first_air_date = None if res.poster_path == None: poster = "https://lascrucesfilmfest.com/wp-content/uploads/2018/01/no-poster-available-737x1024.jpg" else: poster = "https://www.themoviedb.org/t/p/w600_and_h900_bestv2" + res.poster_path try: Media.objects.get(external_id=res.id) continue except Media.DoesNotExist as ex: Media.objects.create( title = res.name, description = res.overview, poster_url = poster, release_date = res.first_air_date, media_type= "TV", external_id= res.id )
def initTmdb(api_key): """ Returns a TMDB object initialized with the given api key Args: api_key (str) : TMDB api key Returns: tmdb : TMDB object """ tmdb = TMDb() tmdb.api_key = api_key tmdb.language = 'en' return tmdb
def ViewGroup(request, pk): #When a groups is clicked on - all the details #pk is group id #Recommender is in group_recommender.py template_name = 'movies/group_details.html' tmdb = TMDb() tmdb.api_key = '69c1026aa20e6449c7a0f74f69dffd7d' tmdb.language = 'en' people = GroupUsers.objects.filter(group_id=pk) group_name = GroupInfo.objects.filter(group_id=pk) group_movies = GroupMovieList.objects.filter(group_id=pk) m = [] vote_score = [] test = [] #Getting movies for watch list for movie in group_movies: vote_score.append(movie.vote) my_movies = Movie.objects.filter(movie_id=movie.movie_id) for mov in my_movies: tmdbId = mov.tmdbId movs = tmdb_movie() m.append(movs.details(tmdbId)) #Appending the vote count to the TMDB api link of top movies for index, i in enumerate(m): test.append((i, vote_score[index])) #Getting recommendations for group merging = [] for user in people: u_id = user.user_id user_info = UserProfile.objects.filter(id=u_id) for users in user_info: user_age = users.Age user_occupation = users.Occupation rec_movs = group_rec(user_age, user_occupation) rec_movs = rec_movs.index.values.tolist() merging.extend(rec_movs) all_mov = [word for word, word_count in Counter(merging).most_common(10)] id = pk args = { 'id': id, 'test': test, 'people': people, 'group_name': group_name, 'group_movies': group_movies, 'm': m, 'merging': merging, 'all_mov': all_mov } return render(request, template_name, args)
def Top10(request): #Display top 10 rated movies template_name = 'movies/movie_list.html' top_movies = TopMovies.objects.all() tmdb = TMDb() tmdb.api_key = '69c1026aa20e6449c7a0f74f69dffd7d' tmdb.language = 'en' movie = tmdb_movie() m = [] for mov in top_movies: m.append(movie.details(mov.tmdbId)) args = {'top_movies': top_movies, 'm': m} return render(request, template_name, args)
def scrape_images(filepath, save_to='media/images/'): """ Takes path to a csv file as argument and uses TMDB API to download images by searching for title """ BASE_IMG_URL = 'https://image.tmdb.org/t/p/w500' tmdb = TMDb() tmdb.api_key = TMDB_API_KEY tmdb.language = 'en' tmdb.debug = True with open(filepath, 'r') as f: reader = csv.DictReader(f) movie = Movie() tv = TV() for i, row in enumerate(reader): title = row['title'] print(f'{i} Title: {title}') if row['type'] == 'TV Show': res = tv.search(title) else: res = movie.search(title) if len(res) == 0: print('No results found') continue elif len(res) > 1: print('Length of results: ', len(res)) print(res) # Check to see if image is available try: image_url = BASE_IMG_URL + res[0].poster_path except TypeError as e: print('No image available') continue image_response = requests.get(image_url) if image_response.status_code == 200: with open(save_to + row['show_id'] + '.jpg', 'wb') as f: f.write(image_response.content) else: print(f'Error retreiving image for: {title}') print(f'Status code: {image_response.status_code}') time.sleep(0.1)
def show_addmovie(self, inputdata): from tmdbv3api import TMDb, Movie tmdb = TMDb() tmdb.api_key = '1437062848d1dda19bd3907cf120e9f4' tmdb.language = 'en' if inputdata == "": msg = QtWidgets.QMessageBox() msg.setIcon(QtWidgets.QMessageBox.Information) msg.setText("{0}".format("กรุณากรอกข้อมูล")) msg.setWindowTitle("Messages") msg.exec_() else: movie = Movie() search = movie.search(inputdata) countrow = len(search) self.tableAddmovie.setRowCount(countrow) i = 0 for res in search: movie_title = res.title self.tableAddmovie.setItem( i, 0, QtWidgets.QTableWidgetItem(movie_title)) i = i + 1
def getAdditionalData(self, movieId): if "Url" not in self.movieID_to_info[movieId]: tmdb = TMDb() tmdb.api_key = '66a11b9611008995220d8300279b6011' tmdb.language = 'en' tmdb.debug = True base = "https://image.tmdb.org/t/p/w200" url = "" title = self.movieID_to_info[movieId]["Title"][:-6] search = Movie().search(title) if search != []: url = search[0].poster_path else: search = TV().search(title) if search != []: url = search[0].poster_path self.movieID_to_info[movieId]["Url"] = base + url return self.getChartData(movieId)
def search_movie_api(request): movie_title = request.POST.get("movie_title") tmdb = TMDb() tmdb.api_key = 'd624f6311529ea50a6238e7d7296610a' tmdb.language = 'ja-JA' movie = Movie() search = movie.search(movie_title) movie_genres = MovieGenreM.objects movie_list = [] for res in search: genre_names = None for genre_id in res.genre_ids: movie_genre = movie_genres.get(movie_genre_id=genre_id) if genre_names: genre_names = genre_names + ',' + movie_genre.movie_genre_name else: genre_names = movie_genre.movie_genre_name d = { 'id': res.id, 'title': res.title, 'release_date': res.release_date, 'genre_ids': res.genre_ids, 'genre_names': genre_names, 'summary': res.overview.replace('"', '').replace("'", "") } movie_list.append(d) movie_list.sort(key=lambda x: x['release_date']) movie_list_json = json.dumps(movie_list) return HttpResponse(movie_list_json)
def MovieDetails(request, pk): #Accessing the TMDB API template_name = 'movies/movie_details.html' tmdb = TMDb() tmdb.api_key = '69c1026aa20e6449c7a0f74f69dffd7d' tmdb.language = 'en' movie = tmdb_movie() m = movie.details(pk) movie_id = 2 my_movies = Movie.objects.filter(tmdbId=pk) for movie in my_movies: movie_id = movie.movie_id #Get the similar movies from recommender.py lists = SimilarMovies(movie_id) list_data = [] list_id = [] for list in lists: list_data.append(list[5]) list_id.append(int(list[4])) try: image = "https://image.tmdb.org/t/p/w1280" + m.poster_path except: image = "https://shenandoahcountyva.us/bos/wp-content/uploads/sites/4/2018/01/picture-not-available-clipart-12.jpg" #Get the rating from the user form = RatingForm(request.POST or None) try: if form.is_valid(): post = form.save(commit=False) post.user = UserProfile.objects.get(user_id=request.user) post.movie = Movie.objects.get(movie_id=movie_id) post.tmdbId = pk post.save() return redirect('/movies/movie_details/' + pk) except: messages.error(request, "You have already rated this movie") return redirect('/movies/movie_details/' + pk) #Allow users to add current movie to any group movie_form = AddMovieToGroup(request.POST or None) try: if movie_form.is_valid(): post2 = movie_form.save(commit=False) post2.user = UserProfile.objects.get(user_id=request.user) post2.movie = Movie.objects.get(movie_id=movie_id) post2.save() groupId = post2.group_id return redirect('/movies/my_group') except: messages.error(request, "This movie has already been added") return redirect('/movies/movie_details/' + pk) args = { 'm': m, 'image': image, "lists": lists, "list_data": list_data, "list_id": list_id, "movie_id": movie_id, "form": form, "movie_form": movie_form, "movie_id": movie_id } return render(request, template_name, args)
def add_to_radarr(config_path, missing): config_tmdb = config_tools.TMDB(config_path) config_radarr = config_tools.Radarr(config_path) tmdb = TMDb() tmdb.api_key = config_tmdb.apikey tmdb.language = config_tmdb.language movie = Movie() for m in missing: # Get TMDb ID data from IMDb ID search = movie.external(external_id=str(m), external_source="imdb_id")['movie_results'] if len(search) == 1: tmdb_details = search[0] else: print("| --- Unable to match TMDb ID for IMDb ID {}, skipping". format(m)) continue # Validate TMDb information (very few TMDb entries don't yet have basic information) try: tmdb_title = tmdb_details['title'] tmdb_id = tmdb_details['id'] except IndexError: print( "| --- Unable to fetch necessary TMDb information for IMDb ID {}, skipping" .format(m)) continue # Validate TMDb year (several TMDb entries don't yet have release dates) try: # This might be overly punitive tmdb_year = tmdb_details['release_date'].split("-")[0] except KeyError: print( "| --- {} does not have a release date on TMDb yet, skipping". format(tmdb_title)) continue if tmdb_year.isdigit() == False: print( "| --- {} does not have a release date on TMDb yet, skipping". format(tmdb_title)) continue tmdb_poster = "https://image.tmdb.org/t/p/original{}".format( tmdb_details['poster_path']) titleslug = "{} {}".format(tmdb_title, tmdb_year) titleslug = re.sub(r'([^\s\w]|_)+', '', titleslug) titleslug = titleslug.replace(" ", "-") titleslug = titleslug.lower() payload = { "title": tmdb_title, "qualityProfileId": config_radarr.quality_profile_id, "year": int(tmdb_year), "tmdbid": str(tmdb_id), "titleslug": titleslug, "monitored": "true", "rootFolderPath": config_radarr.root_folder_path, "images": [{ "covertype": "poster", "url": tmdb_poster }], "addOptions": { "searchForMovie": config_radarr.search_movie } } if config_radarr.version == "v3": slug = "/api/v3/movie" else: slug = "/api/movie" url = config_radarr.url + slug querystring = {"apikey": "{}".format(config_radarr.token)} response = requests.post(url, json=payload, params=querystring) if response.status_code < 400: print("| +++ {}: Added to Radarr".format(tmdb_title)) else: print("| --- {}: {} {}".format(tmdb_title, response.json()[0]['errorMessage'], response.status_code))
''' Модуль, в котором будут содержаться классы и функции, относящиеся к поиску и рекомендации фильмов ''' from tmdbv3api import TMDb, Movie import config tmdb = TMDb() tmdb.api_key = config.tmdb_api_key tmdb.language = config.tmdb_language def search_movie(request): ''' Функция поиска фильма (в названиях) по запросу. На вход получает строку запроса, на выходе выдает список, содержащий объекты-фильмы в виде словаря {поле-значение} :param request: :return search: ''' movie = Movie() search = movie.search(request) #print(len(search)) #for res in search: # print(res.id) # print(res.title, '['+res.original_title+']') # print(res.entries.items()) return search
def add_to_radarr(missing): config_path = os.path.join(os.getcwd(), 'config.yml') config = yaml.load(open(config_path), Loader=yaml.FullLoader) tmdb = TMDb() tmdb.api_key = config['tmdb']['apikey'] tmdb.language = "en" url = config['radarr']['url'] + "/api/movie" quality = config['radarr']['quality_profile_id'] token = config['radarr']['token'] search = config['radarr']['search'] querystring = {"apikey": "{}".format(token)} if "None" in (tmdb.api_key, url, quality, token): print( "All TMDB / Radarr details must be filled out in the configuration " "file to import missing movies into Radarr") print("\n") return movie = Movie() for m in missing: tmdb_details = movie.external( external_id=str(m), external_source="imdb_id")['movie_results'][0] tmdb_title = tmdb_details['title'] tmdb_year = tmdb_details['release_date'].split("-")[0] tmdb_id = tmdb_details['id'] tmdb_poster = "https://image.tmdb.org/t/p/original{}".format( tmdb_details['poster_path']) titleslug = "{} {}".format(tmdb_title, tmdb_year) titleslug = re.sub(r'([^\s\w]|_)+', '', titleslug) titleslug = titleslug.replace(" ", "-") titleslug = titleslug.lower() payload = { "title": tmdb_title, "qualityProfileId": quality, "year": int(tmdb_year), "tmdbid": str(tmdb_id), "titleslug": titleslug, "monitored": "true", "rootFolderPath": "//mnt//user//PlexMedia//movies", "images": [{ "covertype": "poster", "url": tmdb_poster }], "addOptions": { "searchForMovie": search } } headers = { 'Content-Type': "application/json", 'cache-control': "no-cache", 'Postman-Token': "0eddcc07-12ba-49d3-9756-3aa8256deaf3" } response = requests.request("POST", url, data=json.dumps(payload), headers=headers, params=querystring) r_json = json.loads(response.text) try: if r_json[0][ 'errorMessage'] == "This movie has already been added": print(tmdb_title + " already added to Radarr") except KeyError: print("+++ " + tmdb_title + " added to Radarr")
import functools from flask import (Blueprint, flash, g, redirect, render_template, request, url_for) from werkzeug.exceptions import abort from flaskr.db import get_db import json, requests from tmdbv3api import TMDb, TV, Movie, Season, Discover bp = Blueprint('pagina', __name__) apikey = "e00b72174e4ae097af808f34a8f220fc" tmdb = TMDb() # tmdb.api_key="e00b72174e4ae097af808f34a8f220fc" tmdb.api_key = apikey tmdb.language = 'es-ES' @bp.route('/') def index(): # discover = 'https://api.themoviedb.org/3/discover/movie' # ''' # Allowed Values: , popularity.asc, popularity.desc, release_date.asc, release_date.desc, revenue.asc, revenue.desc, primary_release_date.asc, primary_release_date.desc, original_title.asc, original_title.desc, vote_average.asc, vote_average.desc, vote_count.asc, vote_count.desc # default: popularity.desc # ''' # parameters = dict( # api_key=apikey, # language='es-ES' # # sort_by='release_date.desc' # ) # resp = requests.get(url=discover, params=parameters)
def add_to_radarr(config_path, missing): # config_path = os.path.join(os.getcwd(), 'config.yml') config = yaml.load(open(config_path), Loader=yaml.FullLoader) tmdb = TMDb() tmdb.api_key = config['tmdb']['apikey'] tmdb.language = "en" url = config['radarr']['url'] + "/api/movie" token = config['radarr']['token'] quality = config['radarr']['quality_profile_id'] rootfolder = config['radarr']['root_folder_path'] search = config['radarr']['search'] querystring = {"apikey": "{}".format(token)} if "None" in (tmdb.api_key, url, token, quality, rootfolder): print( "All TMDB / Radarr details must be filled out in the configuration " "file to import missing movies into Radarr") print("\n") return movie = Movie() for m in missing: # Validate TMDb information (very few TMDb entries don't yet have basic information) try: tmdb_details = movie.external( external_id=str(m), external_source="imdb_id")['movie_results'][0] tmdb_title = tmdb_details['title'] tmdb_id = tmdb_details['id'] except IndexError: print("Unable to fetch necessary external information") continue # Validate TMDb year (several TMDb entries don't yet have release dates) try: tmdb_year = tmdb_details['release_date'].split("-")[0] except KeyError: print(tmdb_title + " does not have a release date yet") continue if tmdb_year.isdigit() == False: print(tmdb_title + " does not have a release date yet") continue tmdb_poster = "https://image.tmdb.org/t/p/original{}".format( tmdb_details['poster_path']) titleslug = "{} {}".format(tmdb_title, tmdb_year) titleslug = re.sub(r'([^\s\w]|_)+', '', titleslug) titleslug = titleslug.replace(" ", "-") titleslug = titleslug.lower() payload = { "title": tmdb_title, "qualityProfileId": quality, "year": int(tmdb_year), "tmdbid": str(tmdb_id), "titleslug": titleslug, "monitored": "true", "rootFolderPath": rootfolder, "images": [{ "covertype": "poster", "url": tmdb_poster }], "addOptions": { "searchForMovie": search } } response = requests.post(url, json=payload, params=querystring) try: if response.json( )[0]['errorMessage'] == "This movie has already been added": print(tmdb_title + " already added to Radarr") except KeyError: print("+++ " + tmdb_title + " added to Radarr")
from bs4 import BeautifulSoup import requests from requests.utils import requote_uri import json import os import re import fnmatch from tmdbv3api import TMDb from tmdbv3api import Movie from requests.utils import requote_uri tmdb = TMDb() tmdb.api_key = 'be58b29465062a3b093bc17dacef8bf3' tmdb.language = 'es' tmdb.debug = True movie = Movie() combi_mi = [ 'a', 'A', 'b', 'B', 'c', 'C', 'd', 'D', 'e', 'E', 'f', 'F', 'g', 'G', 'h', 'H', 'i', 'I', 'j', 'J', 'k', 'K', 'l', 'L', 'm', 'M', 'n', 'N', 'o', 'O', 'p', 'P', 'q', 'Q', 'r', 'R', 's', 'S', 't', 'T', 'u', 'U', 'v', 'V', 'w', 'W', 'x', 'X', 'y', 'Y', 'z', 'Z' ] def ResultadoBusquedaPaginaPeli(name): base = 'https://pelisenhd.net/?s=' url = requote_uri(base + name) try:
"""Powered by deep-translator and TMDB Design by David Zhou For Raspberry Pi 4B and dCloud XT(X86) PS: Paddle and Papago is not working with python 3.8, so use fallback mode""" if __name__ =='__main__': from deep_translator import GoogleTranslator userinput = userinputfr = str(input("请输入英文进行翻译: ")) from tmdbv3api import TV from tmdbv3api import Movie from tmdbv3api import TMDb tmdb = TMDb() tmdb.api_key = 'your TMDB API here' tmdb.language = 'zh' tv = TV() movie = Movie() movies = movie.search(userinput) show = tv.search(userinput) print('\n') for result in movies: print(result.title) quit() for result in show: print(result.name) quit() translated1 = GoogleTranslator(source='en', target='ja').translate(userinput) translated2 = GoogleTranslator(source='ja', target='zh').translate(translated1) print("中文:",translated2)
from tmdbv3api import TMDb, Collection tmdb = TMDb() tmdb.api_key = "" tmdb.language = "en" collection = Collection() # Get collection details details = collection.details(10) print(details.id) print(details.name) print(details.overview) print(details.poster_path) for part in details.parts: print(part["id"]) print(part["title"]) # Get collection images # If tmdb.language is 'en-US' will not work. Set tmdb.language to 'en' images = collection.images(10) print(images.id) for image in images.backdrops: print(image["file_path"]) print(image["height"]) print(image["width"]) for image in images.posters: print(image["file_path"])
import pickle import streamlit as st from tmdbv3api import Movie, TMDb movie = Movie() tmdb = TMDb() tmdb.api_key = 'your api key' tmdb.language = 'ko-KR' def get_recommendations(title): # 영화 제목을 통해서 전체 데이터 기준 그 영화의 index 값을 얻기 idx = movies[movies['title'] == title].index[0] # 코사인 유사도 매트릭스 (cosine_sim) 에서 idx 에 해당하는 데이터를 (idx, 유사도) 형태로 얻기 sim_scores = list(enumerate(cosine_sim[idx])) # 코사인 유사도 기준으로 내림차순 정렬 sim_scores = sorted(sim_scores, key=lambda x: x[1], reverse=True) # 자기 자신을 제외한 10개의 추천 영화를 슬라이싱 sim_scores = sim_scores[1:11] # 추천 영화 목록 10개의 인덱스 정보 추출 movie_indices = [i[0] for i in sim_scores] # 인덱스 정보를 통해 영화 제목 추출 images = [] titles = [] for i in movie_indices: id = movies['id'].iloc[i]
def addnewmovie(self): from tmdbv3api import TMDb, Movie tmdb = TMDb() tmdb.api_key = '1437062848d1dda19bd3907cf120e9f4' tmdb.language = 'en' #tmdb.debug = True conn = pymongo.MongoClient("localhost", 27017) db = conn.get_database("movies") for currentQTableWidgetItem in self.tableAddmovie.selectedItems(): userselect = currentQTableWidgetItem.text() movie = Movie() search = movie.search(userselect) for res in search: title = res.title movieid = res.id break print(title, movieid) if title == userselect: searchM = movie.details(movieid) overview = searchM.overview score = searchM.vote_average date = searchM.release_date datecut = date.split("-") release_date = datecut[1] + "/" + datecut[2] + "/" + datecut[0] cursorall = db.myMovies.find_one(sort=[("ID", pymongo.DESCENDING)]) currentID = int(cursorall["ID"]) + 1 datadic = { "ID": currentID, "original_title": userselect, "cast": "", "director": "", "overview": overview, "runtime": "", "genres": "", "release_date": release_date, "release_year": datecut[0], "homepage": "", "vote_average": (float(score)) } cursorid = db.myMovies.find({"ID": currentID}) cursortitle = db.myMovies.find({"original_title": userselect}) countid = cursorid.count() counttitle = cursortitle.count() print(countid, counttitle) if countid == 0 and counttitle == 0: time.sleep(1) db.myMovies.insert_one(datadic) msg = QtWidgets.QMessageBox() msg.setIcon(QtWidgets.QMessageBox.Information) msg.setText("เพิ่มข้อมูลเรื่อง {0} สำเร็จ".format(userselect)) msg.setWindowTitle("Messages") msg.exec_() time.sleep(1) else: msg = QtWidgets.QMessageBox() msg.setIcon(QtWidgets.QMessageBox.Information) msg.setText("มีข้อมูลนี้ในระบบแล้ว") msg.setWindowTitle("Messages") msg.exec_()
def ready(self): tmdb = TMDb() tmdb.api_key = env('TMDB_API_KEY') tmdb.language = 'en' tmdb.debug = True
def initiate_api(api_key): tmdb = TMDb() tmdb.api_key = api_key tmdb.language = 'en' tmdb.debug = True
application = Flask(__name__) films_data = pd.read_csv("films.csv") morph = pymorphy2.MorphAnalyzer() logging.basicConfig(level=logging.DEBUG) # Хранилище данных о сессиях. sessionStorage = {} from tmdbv3api import TMDb, Movie tmdb = TMDb() tmdb.api_key = 'e1783cc13e6f2086cc492c5da6921749' tmdb.language = 'ru' movie = Movie() def get_movie_id_by_name(name): search = movie.search(name) if search: first = search[0] return first.id return None def get_similar_by_id(id_, topn=3): recommendations = movie.recommendations(movie_id=id_) if recommendations:
def handle(self, *args, **options): not_added = 0 added = 0 mov_id = 1 user_count = 1 from tmdbv3api import TMDb tmdb = TMDb() tmdb.api_key = '' # api_key tmdb.language = 'en' tmdb.debug = True from tmdbv3api import Movie mov = Movie() #file1 = open('film/management/commands/Attributes_Imdb_test1', 'r') #Lines = file1.readlines() imdb_id_list = [] """ f = open("recommendedfilm") recommend = {} for i in f: l = i.split("\n")[0].split("\t") recommend[l[0]] = eval(l[1]) """ f = open("film/management/commands/watchedfilms") watchedfilms = {} for i in f: l = i.split("\n")[0].split("\t") watchedfilms[l[0]] = eval(l[1]) """ for line in Lines: k = line.split('\t')[0] imdb_id_list.append(k) """ for user_id in watchedfilms.keys(): films = watchedfilms[user_id] user_email = "*****@*****.**" % user_count try: auth_user = User.objects.create_user(username=user_id, email=user_email, password='******') except: my_user = User.objects.get(username=user_id) user_profile = UserProfile.objects.create(user=my_user, spec_id=user_id) printed = 'User ID %d is added' % user_count print(printed) user_count = user_count + 1 for film in films: # film[0] = imdb_id ve film[1] = user_score imdb_id = film[0] user_score = Decimal(film[1]) control_exist = Mov.objects.filter(imdb=imdb_id) if control_exist: my_movie = Mov.objects.get(imdb=imdb_id) score = Score(user=my_user, movie=my_movie, score=user_score) score.save() user_profile.scores.add(score) user_profile.save() else: k = mov.details(imdb_id) try: m = k.poster_path img_path = "https://image.tmdb.org/t/p/w185%s" % m big_img_path = "https://image.tmdb.org/t/p/w500%s" % m except: error_id = "imdb id = %s can not be added" % imdb_id print(error_id) not_added = not_added+1 continue try: p = k.vote_average vote_average = Decimal(p) vote_average = vote_average/2 vote_average = round(vote_average, 1) except: vote_average = Decimal(0.0) genre_list = [] if k.original_title: title = k.original_title if k.overview: overview = k.overview for genre in k.genres: genre_list.append(genre) vid = mov.videos(imdb_id) key = "" if vid: key = vid[0].key yt_url = "https://www.youtube.com/embed/%s" % key rls_date = k.release_date rls_year = k.release_date.split('-')[0] credits = mov.credits(imdb_id) cast_list = [] for c in credits.cast: cast_list.append(c) if cast_list: print(cast_list[0]['name']) for c in cast_list: t = c['profile_path'] c['profile_path'] = "https://image.tmdb.org/t/p/w342%s" % t writer_list = [] director_list = [] for c in credits.crew: if c['department'] == "Writing": writer_list.append(c) if c['department'] == "Directing" and c['job'] == "Director": director_list.append(c) for c in writer_list: t = c['profile_path'] c['profile_path'] = "https://image.tmdb.org/t/p/w342%s" % t for c in director_list: t = c['profile_path'] c['profile_path'] = "https://image.tmdb.org/t/p/w342%s" % t movie = Mov(year=rls_year, date=rls_date, imdb=imdb_id, title=title, topic=overview,poster_url=img_path,poster_big_url=big_img_path, video_url=yt_url, avg_score=vote_average) try: movie.save() except: print("There is invalid field somewhere in movie fields. So this can not be added") not_added = not_added + 1 continue adding_control = "movie_id %d is added" % mov_id print(adding_control) mov_id = mov_id + 1 for i in cast_list: person_query = Person.objects.filter(id_unique = i['id']) if not person_query: person = Person(id_unique=i['id'], name=i['name'], portrait_url=i['profile_path'], type='Star') person.save() movie.starring.add(person) movie.save() else: person = Person.objects.get(id_unique = i['id']) movie.starring.add(person) movie.save() for i in writer_list: person_query = Person.objects.filter(id_unique=i['id']) if not person_query: person = Person(id_unique=i['id'], name=i['name'], portrait_url=i['profile_path'], type='Writer') person.save() movie.writer.add(person) movie.save() else: person = Person.objects.get(id_unique=i['id']) movie.writer.add(person) movie.save() for i in director_list: person_query = Person.objects.filter(id_unique=i['id']) if not person_query: person = Person(id_unique=i['id'], name=i['name'], portrait_url=i['profile_path'], type='Director') person.save() movie.director.add(person) movie.save() else: person = Person.objects.get(id_unique=i['id']) movie.director.add(person) movie.save() for i in genre_list: existing_genre = Genre.objects.filter(name__exact=i['name']) if not existing_genre: genre = Genre(name=i['name']) genre.save() movie.genres.add(genre) movie.save() else: genre = Genre.objects.get(name=i['name']) movie.genres.add(genre) movie.save() score = Score(user=my_user, movie=movie, score=user_score) score.save() user_profile.scores.add(score) user_profile.save() """ if user_count == 6: break """ not_added_result = 'Eklenmeyen sayisi = %d' % not_added print(not_added_result) self.stdout.write(self.style.SUCCESS('Successfully added'))
from tmdbv3api import TMDb, Movie, Discover, Search, TV from app.modules import load # ### Settings tmdb = TMDb() tmdb.api_key = load._cfg['extension']['tmdb']['API_TOKEN'] tmdb.language = 'zh-CN' tmdb.debug = False movie = Movie() discover = Discover() search = Search() tv = TV() # ### Movies def search_movie_by_title(query): result_movie = movie.search(query) return result_movie def search_movies(query, year): result_movie = search.movies({"query": query, "year": year}) return result_movie # ### TMDb_ID def search_movie_details(query):
# TMDb API from tmdbv3api import TMDb from tmdbv3api import Movie from tmdbv3api import TV # For loading JSON file import json # Open the JSON file with open('./everything.json', encoding='utf-8') as fh: file = json.load(fh) tmdb = TMDb() tmdb.api_key = 'a9545ec1bd745e79c447cdadf22cb82c' tmdb.language = 'en' tmdb.debug = True tv = TV() movie = Movie() data = [] for i in range(1): print(obj['title']) if (obj['type'] == "TV Show"): show = tv.search(obj['title']) try: print(show[0].name) print(show[0].poster_path)
# add formatter to handlers ch.setFormatter(formatter) fh.setFormatter(formatter) # add handlers to logger LOGGER.addHandler(ch) LOGGER.addHandler(fh) # start of logging session LOGGER.info("{} - TMDB_fetcher.py - {} - by C.Mineau".format( datetime.datetime.now(), VERSION)) if CLEANUP: doCleanup(DIRPATH) else: TMDB.api_key = KEY TMDB.language = 'fr' TMDB.debug = False MOVIE_CATALOG = os.path.join(DIRPATH, CATALOG) MOVIE_SHEETS = os.path.join(DIRPATH, SHEETS) movieDB = MovieDB(DIRPATH) if FILE: # Only one file has to be handled, no need to walk through everything filename = os.path.basename(FILE) dirpath = os.path.dirname(FILE) if os.path.isfile(FILE) and Film.isMovie(filename, dirpath): movieDB.handleMovie(FILE, dontKeepIfExist=True) movieDB.updateCatalog() movieDB.updateMovieNotesFile() else: