示例#1
0
def predict(movie_id):
    target_movie = Movies.get(movie_id)
    #target_movie = get_movie(movie_id)
    target_ratings = make_target_ratings(movie_id)
    # target_movie_rating = rating
    my_movie_ids = movie_ids(0)

    movies_to_compare = []
    for id in my_movie_ids:
        ratings = make_target_ratings(id)
        movies_to_compare.append(ratings)

    similarities = []

    for ratings in movies_to_compare:
        our_rating = ratings[0] # ratings is not a list, it is a dictionary
        similarity = pearson(target_ratings, ratings)
        tup = (similarity, our_rating)
        similarities.append(tup)

    # (similarity, ranking)

    top_five = sorted(similarities)
    top_five.reverse()
    top_five = top_five[:5]
    num = 0.0
    den = 0.0
    # Use a weighted mean rather than a strict top similarity
    for sim, m in top_five:
        num += (float(sim) * m)
        den += sim

    rating = num/den
    print "Best guess for movie %d: %s is %.2f stars"%\
            (movie_id, target_movie['title'], rating)
示例#2
0
def load_movies():
    """Load movies from u.item into database."""

    print "Movies"

    # Delete all rows in table, so if we need to run this a second time,
    # we won't be trying to add duplicate users
    Movies.query.delete()

    # Read u.user file and insert data
    for i, row in enumerate(open("seed_data/u.item")):
        row = row.rstrip()
        row = row.split("|")[:-19]
        movie_id, movie, release_date, __, imdb_url = row
        title = movie.split("(")
        title = title[0].rstrip()
        title = title.decode("latin-1")
        if release_date:
            released_at = datetime.datetime.strptime(release_date, "%d-%b-%Y")
        else:
            released_at = None

        movie = Movies(title=title, released_at=released_at, imdb_url=imdb_url)

        # We need to add to the session or it won't ever be stored
        db.session.add(movie)

        if i % 100 == 0:
            print i

    # Once we're done, we should commit our work
    db.session.commit()
示例#3
0
def load_movies():
    """Load movies from u.item into database."""
    print("Movies")

    # Delete all rows in table, so if we need to run this a second time,
    # we won't be trying to add duplicate users
    Movies.query.delete()

    # Read u.user file and insert data
    for row in open("seed_data/u.item"):
        row = row.rstrip()
        movie_id, movie_title, release_at, space, imdb_url, *args = row.split(
            "|")

        release_date = datetime.strptime(release_at, "%d-%b-%Y")

        for i, letter in enumerate(movie_title):
            if letter == '(':
                movie_title = movie_title[:i]

        movie = Movies(movie_id=movie_id,
                       movie_title=movie_title,
                       release_at=release_date,
                       imdb_url=imdb_url)

        # We need to add to the session or it won't ever be stored
        db.session.add(movie)

    # Once we're done, we should commit our work
    db.session.commit()
示例#4
0
def load_movies():
    """Load movies from u.item into database."""

    print("Movies")

    Movies.query.delete()

    for row in open("seed_data/u.item"):
        row = row.rstrip()
        movie_id, title, release_date, junk, imdb = row.split("|")[:5]

        title = title[:-7]

        if release_date:
            released_at = datetime.strptime(release_date, "%d-%b-%Y")
        else:
            released_at = None

        movie = Movies(movie_id=movie_id,
                       title=title,
                       release_date=released_at,
                       imdb=imdb)

        db.session.add(movie)

    db.session.commit()
示例#5
0
def post_movie(payload):
    if request.data:
        body = request.get_json()
        print(body)
        title = body['title']
        releaseDate = body['releaseDate'].split('/')
        year = int(releaseDate[0])
        month = int(releaseDate[1])
        day = int(releaseDate[2])
        releaseDate = datetime(year, month, day)

        try:
            movie = Movies(title=title, releaseDate=releaseDate)
            movie.insert()
            return jsonify({
                'success': True,
                'movies': [movie.format()]
            })
        except:
            abort(500)
示例#6
0
def movie_details():
	movie_id = int(request.form["movie_id"])
	average_rating = movies.average_rating(movie_id)
	md = Movies.get(movie_id)
	return render_template("details.html", md=md, avg = average_rating)