# Recommender1.py

from operator import itemgetter

samples = "rec.dat"
moviesInfo = "movies.csv"

def loadData(fileName):
    try:    
        fData = open(fileName, 'r')
    except:
        return []
    out = []
    for line in fData:
        line = line[:-1]  # remove \n
        if len(line) == 0:  # empty line
            continue
        li = [i for i in line.split(",")]
        out.append(li)
    fData.close()
    return out

def loadIntData(fileName):
    try:    
        fData = open(fileName, 'r')
    except:
        return []
    out = []
    for line in fData:
        line = line[:-1]  # remove \n
        if len(line) == 0:  # empty line
            continue
        li = [int(i) for i in line.split(",")]
        out.append(li)
    fData.close()
    return out

def getMovieIds():
    movies = loadData(moviesInfo)
    movieIds = []
    for i in range(1,len(movies)):
        movieIds.append(int(movies[i][0]))
    return movieIds

def getMovieTitle(movieId):
    for movie in movies:
        try:
            if int(movie[0]) == movieId:
                return movie[1]
        except:
            continue
    return ""  

movies = loadData(moviesInfo)
recommendations = loadIntData(samples)
movieRatings = []
for movieId in getMovieIds():
    count = 0
    for recommendation in recommendations:
        if movieId in recommendation:
            count += 1
    movieRatings.append([movieId, count])
sortedRatings = sorted(movieRatings, key = itemgetter(1))
top = sortedRatings[-10:]  # last 10 elements
top.reverse()
for rank in range(10):
    movieId = top[rank][0]
    print "Rank ", rank + 1, ":", getMovieTitle(movieId)
