예제 #1
0
파일: update.py 프로젝트: HDVinnie/Cinema
    async def handle_file(self, name, path):
        if path in self.movies.keys():
            if not settings.ALLOW_DB_UPDATE:
                return
            # update old movies data.
            movie = self.movies[path]
            update = True
        else:
            movie = Movie()
            update = False

        movie = await self.resolver_set.resolve(path, movie)

        if not movie.poster:
            self.loop.call_soon(self.message, self.command.style.NOTICE('NO POSTER'), path)
        else:
            self.report.poster += 1

        self.report.success += 1
        movie.path = path

        self.loop.call_soon(movie.save)
        if not update:
            self.loop.call_soon(NewMovieNotification.notify_all, movie)
            self.loop.call_soon(self.symlink, path)
            self.loop.call_soon(self.message, self.command.style.SUCCESS("ADDED"), "%s as %s" % (path, movie.title))
        else:
            self.loop.call_soon(self.message, self.command.style.SUCCESS("UPDATED"), "%s as %s" % (path, movie.title))
예제 #2
0
    async def handle_file(self, name, path):
        if path in self.movies.keys():
            if not settings.ALLOW_DB_UPDATE:
                return
            # update old movies data.
            movie = self.movies[path]
            update = True
        else:
            movie = Movie()
            update = False

        movie = await self.resolver_set.resolve(path, movie)

        if not movie.poster:
            self.loop.call_soon(self.message,
                                self.command.style.NOTICE('NO POSTER'), path)
        else:
            self.report.poster += 1

        self.report.success += 1
        movie.path = path

        self.loop.call_soon(movie.save)
        if not update:
            self.loop.call_soon(NewMovieNotification.notify_all, movie)
            self.loop.call_soon(self.symlink, path)
            self.loop.call_soon(self.message,
                                self.command.style.SUCCESS("ADDED"),
                                "%s as %s" % (path, movie.title))
        else:
            self.loop.call_soon(self.message,
                                self.command.style.SUCCESS("UPDATED"),
                                "%s as %s" % (path, movie.title))
예제 #3
0
 async def resolve(self, path, movie):
     if movie.title:
         return movie
     #Report.fail += 1
     name, ext = os.path.splitext(os.path.basename(path))
     infos = guess_movie_info(name)
     if infos.get('title'):
         return Movie(title=infos['title'])
     else:
         return Movie(title=name)
예제 #4
0
    async def search(self, name):
        infos = guess_movie_info(name)
        if not infos.get('title'):
            return
        try:
            params = urlencode({
                's': infos['title'],
                'y': infos['year'],
                'type': 'movie',
                'r': 'json'
            })
        except KeyError:
            params = urlencode({
                's': infos['title'],
                'type': 'movie',
                'r': 'json'
            })
        url = 'http://www.omdbapi.com/?%s' % params

        async with self.aiohttp_session.get(url) as resp:
            resp = json.loads(await resp.text())
            if "Search" in resp:
                for res in resp['Search']:
                    poster = res['Poster'] if res['Poster'] != 'N/A' else ""
                    return Movie(
                        title=res['Title'],
                        imdbid=res['imdbID'],
                        poster=await save_poster(poster, self.loop,
                                                 self.aiohttp_session),
                    )
예제 #5
0
def recommend(request):
    global idOwner, nameOwner, startLetter
    slCopy = startLetter
    idOwner = getOrCreateUserCookie(request.session)
    if idOwner == 0:  #Attempt to hit this page directly - don't allow; redirect to home
        nameOwner = ""
        return HttpResponseRedirect("")
    if request.method == "POST":
        for key in request.POST.keys():
            if key not in [
                    "rmovie", "csrfmiddlewaretoken", "mr"
            ]:  # 3 parameters that POST sends, check for additional
                startLetter = key
        rmovie = request.POST.get("rmovie", "")
        mrating = request.POST.get("mr", "")
        if startLetter == "Rate" and rmovie != "":  #user pressed "RATE" button
            getMovie = Movie.objects.filter(title=rmovie)
            if getMovie.exists():
                tryRating, created = Rating.objects.get_or_create(
                    user=idOwner, id=Movie.id, defaults={'rating': mrating})
                if not created:
                    newRating = Rating(idrating=tryRating.idrating,
                                       user=idOwner,
                                       id=Movie.id,
                                       rating=mrating)
                    newRating.save()
            else:
                newMovie = Movie(title=rmovie)
                newMovie.save()
                newM = Movie.objects.filter(title=rmovie)
                newRating = Rating(user=idOwner, id=newM[0].id, rating=mrating)
                newRating.save()
    if startLetter == "Rate":
        startLetter = slCopy
    getMovies = Movie.objects.filter(
        Q(title__startswith=startLetter)
        | Q(title__startswith=startLetter.lower())).order_by('rating')[:10]
    return render(
        request, "application/Rating2.html", {
            "note": "",
            "response": getMovies,
            "startLetter": startLetter,
            "user": idOwner
        })
예제 #6
0
def addMovie(userID):
    form = MovieForm()
    if form.validate_on_submit():
        movie = Movie(
            movie_name = form.movie_name.data,
            movie_genre = form.movie_genre.data,
            user_id = userID 
        )
        db.session.add(movie)
        db.session.commit()
        return redirect(url_for('movieList', userID=userID))
    return render_template('addMovie.html', subheading="Add Movie", form=form)
예제 #7
0
 def setUp(self):   
         db.create_all()
         test_user= User(
             first_name = "Fardin", 
             last_name = "Shah",
             age = 26 
         )
         test_movie = Movie(
             movie_name = "King Kong",
             movie_genre = "Action"
         )
         test_user.movies.append(test_movie)
         db.session.add(test_user) 
         db.session.add(test_movie)
         db.session.commit()
예제 #8
0
    async def handle_file(self, name, path):
        if path in self.movies:
            self.loop.call_soon(self.message,
                                self.command.style.SUCCESS("ALREADY IN DB"),
                                path)
            return

        movie = await self.resolver_set.resolve(path, Movie())

        if not movie.poster:
            self.loop.call_soon(self.message,
                                self.command.style.NOTICE('NO POSTER'), path)
        else:
            self.report.poster += 1

        self.report.success += 1
        movie.path = path

        self.loop.call_soon(movie.save)
        self.loop.call_soon(NewMovieNotification.notify_all, movie)
        self.loop.call_soon(self.symlink, path)
        self.loop.call_soon(self.message, self.command.style.SUCCESS("ADDED"),
                            "%s as %s" % (path, movie.title))
예제 #9
0
                image = image_url + r['poster_path']

                j = getJson(data_url, (api_id, api_key))
                actor = ", ".join(person['name']
                                  for person in j['credits']['cast'][:2])
                director = ", ".join(person['name']
                                     for person in j['credits']['crew']
                                     if person['job'] == "Director")
                description = j['overview'] or "N/A"
            except:
                image = " "
                actor = " "
                director = " "
                description = "N\A"

            mov = Movie()
            mov.id = db_id
            mov.title = title
            mov.link = link
            mov.image = image
            mov.director = director
            mov.actor = actor
            mov.description = description
            #mov.save()
            movs.append(mov)
    Movie.objects.bulk_create(movs)

loadRatings = raw_input("Load Ratings? [y,N]> ")
if ('y' in loadRatings.lower()):
    rats = []
    with codecs.open("datasets/movielens/ml-100k/u.data") as f: