コード例 #1
0
ファイル: __init__.py プロジェクト: d2emon/w2w
def index():
    form = PostForm()
    if form.validate_on_submit():
        post = Post(
            body=form.post.data,
            timestamp=datetime.utcnow(),
            author=g.user,
            language=form.language(),
        )
        db.session.add(post)
        db.session.commit()
        flash(gettext('Your post is now live!'))
        return redirect(url_for('index'))

    moviefeed = Movie.by_random().limit(app.config.get('MOVIES_PER_PAGE',
                                                       0)).all()

    try:
        moviepage = int(request.args.get('movies', 1))
    except ValueError:
        moviepage = 1
    movies = Movie.ordered(session.get('sort_by')).paginate(
        moviepage, app.config.get('BRIEF_MOVIES_PER_PAGE', 6), False)

    try:
        personpage = int(request.args.get('persons', 1))
    except ValueError:
        personpage = 1
    persons = Person.alphabet().paginate(
        personpage, app.config.get('BRIEF_PERSONS_PER_PAGE', 6), False)

    try:
        postpage = int(request.args.get('page', 1))
    except ValueError:
        postpage = 1
    if g.user.is_authenticated:
        q = g.user.followed_posts()
    else:
        q = Post.query
    posts = q.paginate(postpage, app.config.get('POSTS_PER_PAGE', 3), False)

    return render_template(
        "index.html",
        title="Home",
        movies=movies,
        persons=persons,
        posts=posts,
        form=form,
        moviefeed=moviefeed,
    )
コード例 #2
0
ファイル: movies.py プロジェクト: d2emon/w2w
def edit_movie(slug):
    movie = Movie.by_slug(slug=slug)
    if movie.user_id and g.user.id != movie.user_id:
        flash(gettext("Your can edit only your movies."))
        return redirect(url_for('index'))
    form = MovieForm(obj=movie)
    impath = os.path.join(basedir, "static", "upload", form.image.data)
    if not os.path.isfile(impath):
        form.image.data = ''
    if form.validate_on_submit():
        form.populate_obj(movie)
        movie.normalize(g.user.id)
        db.session.add(movie)

        movie.update_genres([genre.data for genre in form.genre_ids])
        movie.update_directors(
            [director.data for director in form.director_ids])
        db.session.commit()
        flash(gettext("Your changes have been saved."))
        return redirect(url_for('view_movie', slug=movie.slug))
    form.applyGenres(movie.genres)
    form.applyDirectors(movie.directors)
    print(form.errors)
    return render_template(
        'movie/edit.html',
        form=form,
        slug=slug,
    )
コード例 #3
0
ファイル: movies.py プロジェクト: d2emon/w2w
def view_movie(slug):
    movie = Movie.by_slug(slug=slug)
    return render_template(
        'movie/view.html',
        movie=movie,
        slug=slug,
    )
コード例 #4
0
ファイル: movies.py プロジェクト: d2emon/w2w
def movie_slug():
    title = request.form.get('title')
    slug = Movie.make_slug(title)
    resp = {
        "title": title,
        "slug": slug,
    }
    return jsonify(resp)
コード例 #5
0
ファイル: movies.py プロジェクト: d2emon/w2w
def add_movie():
    movie = Movie()
    form = MovieForm()
    if form.validate_on_submit():
        form.populate_obj(movie)
        movie.normalize(g.user.id)
        db.session.add(movie)

        movie.update_genres([genre.data for genre in form.genre_ids])
        movie.update_directors(
            [director.data for director in form.director_ids])
        db.session.commit()
        flash(gettext("Your changes have been saved."))
        return redirect(url_for('view_movie', slug=movie.slug))
    return render_template(
        'movie/edit.html',
        form=form,
    )
コード例 #6
0
def register():

    register_directors = db.session.query(Director).order_by('name')
    directors_list = [(i.id, i.name) for i in register_directors]

    form = MovieForm() #Movieクラスをインスタンス
    form.director.choices = directors_list

    #validate_on_submitメソッドはPOSTリクエスト(この場合register_movie.htmlへの入力)があるかどうか、また、有効なものかどうかを判定する
    if form.validate_on_submit():
        movie = Movie(title=form.title.data,  director_id=form.director.data, star=form.star.data, genre=form.genre.data, date=form.date.data, recommended=form.recommended.data, comment=form.comment.data)
        #movieオブジェクトをデータベースに追加
        db.session.add(movie)
        #movieオブジェクトをデータベースに登録
        db.session.commit()
        #index関数が発動するURLを取得し、移動
        return redirect(url_for('movies.index'))
    return render_template('movies/register.html', form=form)
コード例 #7
0
ファイル: genres.py プロジェクト: d2emon/w2w
def view_genre(slug=None):
    try:
        page = int(request.args.get('movies', 1))
    except ValueError:
        page = 1

    if slug is None:
        genre = None
    else:
        genre = Genre.by_slug(slug)
    movies = Movie.by_genre(genre, order_by=session.get('sort_by')).paginate(
        page, app.config.get('BRIEF_MOVIES_PER_PAGE', 6), False)
    return render_template(
        'genre/view.html',
        genre=genre,
        movies=movies,
        slug=slug,
    )
コード例 #8
0
ファイル: __init__.py プロジェクト: d2emon/w2w
def import_yml(filename, user_id=None):
    import yaml
    data = dict()
    with open(filename, encoding="utf-8") as f:
        data = yaml.load(f)

    persons = Person.from_yml(data.get("persons", []))
    for m in persons:
        db.session.add(m)

    genres = Genre.from_yml(data.get("genres", []))
    for m in genres:
        db.session.add(m)

    movies = Movie.from_yml(data.get("movies", []), user_id)
    for m in movies:
        db.session.add(m)

    db.session.commit()
コード例 #9
0
ファイル: movies.py プロジェクト: d2emon/w2w
def parse_movie(slug):
    import wikiparser
    movie = Movie.by_slug(slug=slug)
    p = wikiparser.parse_wiki(movie.wikipage)
    # print("PARSED", p)
    # print("-"*80)
    # if p['page'] is not None:
    #     print(p['page'].title)
    # else:
    #     t = ''
    # for k, v in p['properties'].items():
    #     print("{}:\t{}\n".format(k, v))
    # for k, v in p['movie'].items():
    #     print("M\t{}:\t{}".format(k, v))
    return render_template(
        'movie/wiki.html',
        movie=p['movie'],
        page=p['page'],
        props=p['properties'],
        slug=slug,
    )
コード例 #10
0
def MyrecommendGenre(userid):
	ratings = pd.DataFrame(list(MovieRating.objects.filter(user_id = userid).values()))
	if ratings.empty:
		return []
	ratings = ratings.sort_values(by=['rating'])
	mean = ratings['rating'].mean() if ratings.size > 0 else 0
	movie_ids = ratings[ratings['rating']>=mean]['movie_id']
	preserved = Case(*[When(pk=pk, then=pos) for pos, pk in enumerate(movie_ids)])
	movie_list=list(Movie.objects.filter(id__in = movie_ids).order_by(preserved)[:50])

	genres = set() 
	for movie in movie_list:
		genres.add(movie.genres)

	df=pd.DataFrame(list(Movie.objects.filter(genres__in = genres).exclude(id__in = ratings['movie_id']).values()))
	C = df.vote_average.mean()
	m = df.vote_count.quantile(0.90)
	q_movies = df.copy().loc[df.vote_count >= m]
	q_movies.shape
	def weighted_rating1(x, m=m, C=C):
		v = x['vote_count']
		R = x['vote_average']
		return (v/(v+m) * R) + (m/(m+v) * C)
	
	q_movies['score'] = q_movies.apply(weighted_rating1, axis=1)
	q_movies = q_movies.sort_values('score', ascending=False)
	q_movies = q_movies.head(100)
	
	return [Movie(
			id=record['id'],
			title=record['title'],
			genres=record['genres'],
			poster_path=record['poster_path'],
			production_companies=record['production_companies'],
			overview=record['overview'],
			vote_average=record['vote_average'],
			vote_count=record['vote_count'],
	) for record in q_movies.to_dict('records')]
コード例 #11
0
def GeneralRecommend(query):
    if query:
        return Movie.objects.filter(
            Q(title__icontains=query)
            | Q(overview__icontains=query)).distinct()
    movies = Movie.objects.all()

    df = pd.DataFrame(list(movies.values()))
    C = df.vote_average.mean()
    m = df.vote_count.quantile(0.90)
    q_movies = df.copy().loc[df.vote_count >= m]
    q_movies.shape

    def weighted_rating(x, m=m, C=C):
        v = x['vote_count']
        R = x['vote_average']
        return (v / (v + m) * R) + (m / (m + v) * C)

    q_movies['score'] = q_movies.apply(weighted_rating, axis=1)
    q_movies = q_movies.sort_values('score', ascending=False)
    q_movies = q_movies.head(100)

    movies = [
        Movie(
            id=record['id'],
            title=record['title'],
            genres=record['genres'],
            poster_path=record['poster_path'],
            production_companies=record['production_companies'],
            overview=record['overview'],
            vote_average=record['vote_average'],
            vote_count=record['vote_count'],
        ) for record in q_movies.to_dict('records')
    ]

    return movies
コード例 #12
0
ファイル: movies.py プロジェクト: d2emon/w2w
def random_movie():
    movie = Movie.by_random().first()
    if movie is None:
        return redirect(url_for('index'))
    return redirect(url_for('view_movie', slug=movie.slug))