Пример #1
0
def discover(request):
    LIMIT = 100
    user_profile = Profile.objects.get(user=request.user)
    watchlists = Watchlist.objects.filter(main_user=user_profile)
    if not watchlists:
        #if user hasnt added anything to his/her watchlist, fill discover template with the popular movies
        movie = tmdbv3api.Movie()
        popular = movie.popular()
        context = {'discover_movies': popular}
    else:
        #user has movies in his/her watchlist
        recommendations = []
        for watchlist in watchlists:
            tmp_movie = tmdbv3api.Movie()
            #get similar movies
            similar = tmp_movie.similar(
                watchlist.movie_watchlist_element.movie_id)
            for movie in similar:
                if movie not in recommendations:
                    recommendations.append(movie)
                if len(recommendations) >= LIMIT:
                    break
            if len(recommendations) >= LIMIT:
                break
        recommendations[:60]
        #shuffle list to have randomness in recommendations
        random.shuffle(recommendations)
        context = {
            'discover_movies': recommendations,
        }
    return render(request, 'user/discover.html', context)
Пример #2
0
    def form_valid(self, form):
        prev_id = form.instance.id
        try:
            form.instance.movie = Movie.objects.get(remote_api_id = form.cleaned_data["externalapiid"])
        except Movie.DoesNotExist:
            movietmdb = tmdbv3api.Movie()
            movieapi = movietmdb.details(form.cleaned_data["externalapiid"])
            movie = create_movie_from_tmdb(movieapi)
            movie.save()
            form.instance.movie = movie
        #TODO : change...
        location_destination = Location.objects.get(id=2)
        form.instance.creator = self.request.user
        get_movie_custom_id(form.instance)
        get_movie_format(form.instance)
        form.instance.save()
        #save_m2m ?
        BuyEvent.objects.create(creator=self.request.user,price=form.cleaned_data["price"],quantity=1,element=form.instance,location_destination=location_destination)
        print(form.instance.id)

        response =  super(MovieCaseViewModal, self).form_valid(form)
        if form.instance.id  and not prev_id:
            #created ?
            return JsonResponse({"custom_id":"{}{:03d}".format(form.instance.format[0],form.instance.custom_id),
                                 "local_title":form.instance.name})

        print(response)
        return response
Пример #3
0
def catalogue1(request):
    movie = tb.Movie()
    popular = movie.popular()
    cat = {}
    for i in range(10):
        cat[popular[i].title[:27]] = popular[i].poster_path
    context = {'cat': cat}
    return render(request, 'catalogue1.html', context)
def catalogue1(request):
    movie = tb.Movie()
    popular = movie.popular()
    pop_mov = []
    pop_mov_pos = []
    for i in range(10):
        pop_mov.append(popular[i].title[:27])
        pop_mov_pos.append(popular[i].poster_path)
    context = {'ans': pop_mov, 'poster': pop_mov_pos}
    return render(request, 'catalogue1.html', context)
Пример #5
0
 def __init__(self, params):
     self.TMDb = tmdbv3api.TMDb()
     self.TMDb.api_key = params["apikey"]
     self.TMDb.language = params["language"]
     response = tmdbv3api.Configuration().info()
     if hasattr(response, "status_message"):
         raise Failed("TMDb Error: {}".format(response.status_message))
     self.apikey = params["apikey"]
     self.language = params["language"]
     self.Movie = tmdbv3api.Movie()
     self.TV = tmdbv3api.TV()
     self.Discover = tmdbv3api.Discover()
     self.Trending = tmdbv3api.Trending()
     self.Keyword = tmdbv3api.Keyword()
     self.List = tmdbv3api.List()
     self.Company = tmdbv3api.Company()
     self.Network = tmdbv3api.Network()
     self.Collection = tmdbv3api.Collection()
     self.Person = tmdbv3api.Person()
     self.image_url = "https://image.tmdb.org/t/p/original"
Пример #6
0
 def __init__(self, config, params):
     self.config = config
     self.TMDb = tmdbv3api.TMDb(session=self.config.session)
     self.TMDb.api_key = params["apikey"]
     self.TMDb.language = params["language"]
     try:
         response = tmdbv3api.Configuration().info()
         if hasattr(response, "status_message"):
             raise Failed(f"TMDb Error: {response.status_message}")
     except TMDbException as e:
         raise Failed(f"TMDb Error: {e}")
     self.apikey = params["apikey"]
     self.language = params["language"]
     self.Movie = tmdbv3api.Movie()
     self.TV = tmdbv3api.TV()
     self.Discover = tmdbv3api.Discover()
     self.Trending = tmdbv3api.Trending()
     self.Keyword = tmdbv3api.Keyword()
     self.List = tmdbv3api.List()
     self.Company = tmdbv3api.Company()
     self.Network = tmdbv3api.Network()
     self.Collection = tmdbv3api.Collection()
     self.Person = tmdbv3api.Person()
     self.image_url = "https://image.tmdb.org/t/p/original"
Пример #7
0
from mycroft.util.format import pronounce_number, nice_date, nice_number
import tmdbv3api

__author__ = "*****@*****.**"
__version__ = "0.1.2"

LOGGER = getLogger(__name__)

TMDB = {
    "tmdb": tmdbv3api.TMDb(),
    # "collection": tmdbv3api.Collection(),
    # "company": tmdbv3api.Company(),
    # "configuration": tmdbv3api.Configuration(),
    "discover": tmdbv3api.Discover(),
    "genre": tmdbv3api.Genre(),
    "movie": tmdbv3api.Movie(),
    "movie": tmdbv3api.Movie(),
    # "person": tmdbv3api.Person(),
    # "season": tmdbv3api.Season(),
    "tv": tmdbv3api.TV()
}


class Tmdb(MycroftSkill):
    def __init__(self):
        super(Tmdb, self).__init__(name="Tmdb")
        self.movieID = None
        self.movieDetails = None
        self.tvID = None
        self.tvDetails = None
Пример #8
0
def personalized(request):
    discover = tb.Discover()
    movie = tb.Movie()
    if request.method == 'POST':
        var1 = request.POST['user_movie1']
        var2 = request.POST['user_movie2']
        var3 = request.POST['user_movie3']
        var4 = request.POST['user_movie4']
        var5 = request.POST['user_movie5']
        movie_list = []
        search1 = movie.search(var1)
        search2 = movie.search(var1)
        search3 = movie.search(var1)
        search4 = movie.search(var1)
        search5 = movie.search(var1)
        var1 = search1[0].id
        var2 = search2[0].id
        var3 = search3[0].id
        var4 = search4[0].id
        var5 = search5[0].id
        movie_list.append(var1)
        if var2 not in movie_list:
            movie_list.append(var2)
        if var3 not in movie_list:
            movie_list.append(var3)
        if var4 not in movie_list:
            movie_list.append(var4)
        if var5 not in movie_list:
            movie_list.append(var5)
        genre_count = {
            878: 0,
            18: 0,
            28: 0,
            35: 0,
            53: 0,
            27: 0,
            10749: 0,
            14: 0,
            46: 0,
            12: 0,
            9648: 0
        }
        for i in movie_list:
            m = movie.details(i)
            genre_id = []
            for k in m.genres:
                genre_id.append(k["id"])
            for j in genre_id:
                if j in genre_count.keys():
                    genre_count[j] += 1
        genre_count = dict(
            sorted(genre_count.items(),
                   key=operator.itemgetter(1),
                   reverse=True))
        all_counts = list(genre_count.values())
        top3_genres = []
        for i in range(3):
            for genre, count in genre_count.items():
                if count == all_counts[i]:
                    top3_genres.append(genre)
        popular = discover.discover_movies({
            'with_genres': top3_genres,
            'sort_by': 'popularity.desc'
        })
        string = []
        poster = []
        rec = {}
        for i in range(5):
            rec[popular[i].title] = popular[i].poster_path
        # 	string.append(popular[i].title)
        # 	poster.append(popular[i].poster_path)
        # string.append(popular[4].title)
        # poster.append(popular[4].poster_path)

        context = {
            'rec': rec,
            #'poster':poster
        }
        return render(request, 'personalized.html', context)
    else:
        return render(request, 'personalized.html', {})
Пример #9
0
def get_response(request):
    response = {'status': None}

    if request.method == 'POST':
        data = json.loads(request.body.decode('utf-8'))
        message = data['message']
        stop_words = set(stopwords.words('english'))
        word_tokens = word_tokenize(message)
        filtered_sentence = [w for w in word_tokens if not w in stop_words]
        filtered_sentence = []
        for w in word_tokens:
            if w not in stop_words:
                filtered_sentence.append(w)
        #filtered_sentence is the list of processed words in the query

        chat_response = "No keyword used/Invalid response."
        if 'popular' in filtered_sentence:
            movie = tb.Movie()
            popular = movie.popular()
            string = ""
            for i in range(4):
                string += popular[i].title + ", "
            string += popular[4].title  #
            chat_response = 'Some popular movies right now are ' + string

        genre_to_id = {
            "ScienceFiction": 878,
            "Drama": 18,
            "Action": 28,
            "Comedy": 35,
            "Thriller": 53,
            "Horror": 27,
            "Romance": 10749,
            "Fantasy": 14,
            "History": 46,
            "Adventure": 12,
            "Mystery": 9648
        }

        if 'genre' in filtered_sentence:
            discover = tb.Discover()
            i = filtered_sentence.index('genre')
            string = ''
            for i in range(i + 1, len(filtered_sentence)):
                string += filtered_sentence[i]
            string2 = ''
            if string in genre_to_id.keys():
                a = genre_to_id[string]
                popular = discover.discover_movies({"with_genres": a})
                for i in range(4):
                    string2 += popular[i].title + ", "
                string2 += popular[4].title
                chat_response = "Some popular " + string + " movies right now are " + string2
            else:
                chat_response = "The query should be in the form of: \"suggest me some movie of genre g\" and g should be from the following: Science Fiction, Drama, Action, Comedy, Thriller, Horror, Romance, Fantasy, History, Adventure, Mystery"

        if 'kids' in filtered_sentence:
            discover = tb.Discover()
            popular = discover.discover_movies({
                'certification_country': 'US',
                'certification.lte': 'G',
                'sort_by': 'popularity.desc'
            })
            string = ''
            for i in range(4):
                string += popular[i].title + ", "
            string += popular[4].title
            chat_response = 'Some popular kids movies right now are ' + string

        if 'review' in filtered_sentence:
            movie = tb.Movie()
            k = filtered_sentence.index('review')
            if 'movie' not in filtered_sentence[k:]:
                chat_response = 'The query should be in the form of: \"give review of movie x\"'
            else:
                i = filtered_sentence.index('movie')
                string = ''
                for i in range(i + 1, len(filtered_sentence)):
                    string += filtered_sentence[i]
                string = string[:len(string) - 1]
                search = movie.search(string)
                chat_response = movie.reviews(search[0].id)
                chat = chat_response[0].entries
                count = 0
                chat_response = ''
                for i in chat["content"]:
                    if count != 300:
                        chat_response += i
                        count += 1
                    else:
                        chat_response += ".... " + "\n\n For more check out: " + chat[
                            "url"]
                        break

        if 'cast' in filtered_sentence:
            movie = tb.Movie()
            k = filtered_sentence.index('cast')
            if 'movie' not in filtered_sentence[k:]:
                chat_response = 'The query should be in the form of: \"cast of movie x\"'
            else:
                i = filtered_sentence.index('movie')
                string = ''
                for i in range(i + 1, len(filtered_sentence)):
                    string += filtered_sentence[i]
                string = string[:len(string) - 1]
                search = movie.search(string)
                chat_response = movie.credits(search[0].id)
                chat = chat_response.cast
                chat_response = "Starring:  "
                for i in chat:
                    chat_response += i["name"] + " as " + i[
                        "character"] + "  ||  "

        if 'popularity' in filtered_sentence:
            movie = tb.Movie()
            k = filtered_sentence.index('popularity')
            if 'movie' not in filtered_sentence[k:]:
                chat_response = 'The query should be in the form of: \"popularity of movie x\"'
            else:
                i = filtered_sentence.index('movie')
                string = ''
                for i in range(i + 1, len(filtered_sentence)):
                    string += filtered_sentence[i]
                string = string[:len(string) - 1]
                search = movie.search(string)
                chat_response = search[0].popularity

        if 'tell' in filtered_sentence:
            movie = tb.Movie()
            k = filtered_sentence.index('tell')
            if 'movie' not in filtered_sentence[k:]:
                chat_response = 'The query should be in the form of: \"tell about movie x\"'
            else:
                i = filtered_sentence.index('movie')
                string = ''
                for i in range(i + 1, len(filtered_sentence)):
                    string += filtered_sentence[i]
                string = string[:len(string) - 1]
                search = movie.search(string)
                chat_response = search[0].overview

        response['message'] = {
            'text': chat_response,
            'user': False,
            'chat_bot': True
        }
        response['status'] = 'ok'

    else:
        response['error'] = 'no post data found'
    return HttpResponse(json.dumps(response), content_type="application/json")
Пример #10
0
from django.http import HttpResponse, Http404
from django.contrib import messages
import json
from django.views.decorators.csrf import csrf_exempt
import nltk
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize
from chatterbot import ChatBot
import operator
import tmdbv3api as tb
from django.contrib.auth import login as auth_login
tmdb = tb.TMDb()
tmdb.api_key = 'ef9d09282b5ec0b221147c2cff9fe58d'
tmdb.language = 'en'
tmdb.debug = True
movie = tb.Movie()


@csrf_exempt
def get_response(request):
    response = {'status': None}

    if request.method == 'POST':
        data = json.loads(request.body.decode('utf-8'))
        message = data['message']
        stop_words = set(stopwords.words('english'))
        word_tokens = word_tokenize(message)
        filtered_sentence = [w for w in word_tokens if not w in stop_words]
        filtered_sentence = []
        for w in word_tokens:
            if w not in stop_words:
Пример #11
0
from datetime import datetime
import os
from mycroft import MycroftSkill, intent_file_handler
from mycroft.util.format import pronounce_number, nice_date, nice_number
from mycroft.util.log import LOG

import tmdbv3api

__author__ = "*****@*****.**"
__version__ = "0.2.0"
__api__= "6b064259b900f7d4fd32f3c74ac35207"

LOGGER = LOG(__name__)

TMDB = tmdbv3api.TMDb()
MOVIE = tmdbv3api.Movie()

class MovieMaster(MycroftSkill):
	def __init__(self):
		"""A Mycroft skill to access the free TMDb api from https://www.themoviedb.org/"""
		super(MovieMaster, self).__init__(name="MovieMaster")
		self._api = None
		self._searchDepth = None
	
	def initialize(self):
		""" This sets some variables that do not change during the execution of the script"""
		
		# Try and get the settings from https://account.mycroft.ai/skills
		api = self.settings.get("apiv3")
		if api == "Default" or api == "":
			TMDB.api_key = __api__
Пример #12
0
from dotenv import load_dotenv
import io
import aiohttp
import requests
import string
import asyncio
import html

load_dotenv()

DISC_TOKEN = os.getenv('DISCORD_TOKEN')
TMDB_TOKEN = os.getenv('TMDB_API_KEY')

#API instantiation
client = discord.Client()
movie = tmdbv3api.Movie()
person = tmdbv3api.Person()
rbapi = rarbgapi.RarbgAPI()

#magnet link shortener url for post method
mgnet = "http://mgnet.me/api/create"


#function which gets the magnet link from rarbg and shortens it using mgnet.me api
def getID(title):
    tmp = title
    title = ''
    for i in tmp:
        if i in string.punctuation:
            continue
        title += i
Пример #13
0
from mycroft.skills.core import MycroftSkill
from mycroft.util.log import getLogger
import requests

__author__ = 'eClarity'

LOGGER = getLogger(__name__)

tmdb = TM.TMDb()
collection = TM.Collection()
company = TM.Company()
configuration = TM.Configuration()
discover = TM.Discover()
genre = TM.Genre()
movie = TM.Movie()
person = TM.Person()
season = TM.Season()
tv = TM.TV()

##This will eventually move to the mycroft configuration


class TmdbSkill(MycroftSkill):
    def __init__(self):
        super(TmdbSkill, self).__init__(name="TmdbSkill")
        tmdb.api_key = self.settings.get("v3api")
        tmdb.language = "en_US"

    def initialize(self):
        search_actor_intent = IntentBuilder("SearchActorIntent").require(
Пример #14
0
import tmdbv3api as tm

## Set auth keys
with open('/home/n/opt/MindBender_BD/Misc/keys') as keys:
    tmdb_keys = json.load(keys)
    api_key = tmdb_keys["tmdb"]["api_key"]
    read_access_token = tmdb_keys["tmdb"]["read_access_token"]
tmdb = tm.TMDb()
tmdb.api_key = api_key

## Connect to Kafka brokers
kafka = kf.KafkaClient("localhost:9099")
producer = kf.SimpleProducer(kafka)

## Find popular movies for the day
movie = tm.Movie()
latest = movie.latest()

with open('/home/n/opt/MindBender_BD/capstone/latest.txt', 'r') as l:
    movie_id = int(l.read())

for x in range(movie_id, latest.id):
    try:
        ## Select details for latest film to send to Kafka broker
        movie_data = {}
        m = movie.details(x)
        movie_data['adult'] = m.adult
        movie_data['budget'] = m.budget
        ## Select first genre from list (most important)
        try:
            movie_data['genres'] = m.genres[0]['name']
Пример #15
0
 def __init__(self):
     super(MovieMaster, self).__init__(name="MovieMaster")
     self.search_depth = None
     self.movie_db = tmdbv3api.TMDb()
     self.movie = tmdbv3api.Movie()