def __init__(self):
     # key = self.load_api_key()
     tmdb = TMDb()
     tmdb.api_key = '76796d972576af7067d952e53839883b'
     tmdb.language = 'en'
     tmdb.debug = True
     self.tmdb = tmdb
Beispiel #2
0
    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)
Beispiel #3
0
    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()
Beispiel #4
0
    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
                )
Beispiel #5
0
    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
                )
Beispiel #6
0
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
Beispiel #7
0
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)
Beispiel #8
0
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)
Beispiel #9
0
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)
Beispiel #10
0
    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
Beispiel #11
0
    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)
Beispiel #12
0
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)
Beispiel #13
0
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)
Beispiel #14
0
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))
Beispiel #15
0
'''
Модуль, в котором будут содержаться классы и функции, относящиеся к поиску и рекомендации фильмов
'''

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

Beispiel #16
0
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")
Beispiel #17
0
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")
Beispiel #19
0
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:
Beispiel #20
0
"""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)
Beispiel #21
0
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"])
Beispiel #22
0
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]
Beispiel #23
0
    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_()
Beispiel #24
0
 def ready(self):
     tmdb = TMDb()
     tmdb.api_key = env('TMDB_API_KEY')
     tmdb.language = 'en'
     tmdb.debug = True
Beispiel #25
0
def initiate_api(api_key):
    tmdb = TMDb()
    tmdb.api_key = api_key
    tmdb.language = 'en'
    tmdb.debug = True
Beispiel #26
0
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:
Beispiel #27
0
    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'))
Beispiel #28
0
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):
Beispiel #29
0
# 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: