def choose_video(room_id):
    user = anon_user()
    room = Room.query.get(room_id)
    cap = room.capitan_id
    if room:
        now = time = datetime.now(tz=None)
        sub_items = []
        real_user = cur_user()
        if real_user:
            subs = real_user.subscriptions
            for sub in subs:
                for video in sub.videos:
                    sub_items.append(video)
        video_pack = Video.get(need_geo=True)
        return render_template('choose_video.html',
                               user=cur_user(),
                               items=video_pack[0],
                               cap=cap,
                               room=room,
                               anon=user,
                               now=now,
                               sub_items=sub_items,
                               geo_items=json.dumps([
                                   video.serialize() for video in video_pack[1]
                               ]))
    else:
        return redirect(url_for('viewroom'))
def views_story():
    videos = Video.get()
    items = []
    for video in videos:
        if cur_user() in video.viewers:
            items.append(video)

    return render_template('views_story.html', user=cur_user(), items=items)
def cabinet(usr, tab=0):
    """
    Отвечает за вывод страницы личного кабинета
    :return: Страница личного кабинета
    """

    video_list = Video.get()
    user = cur_user()
    cabinet_owner = User.get(login=usr)
    is_cabinet_settings_available = False

    if user == cabinet_owner:
        is_cabinet_settings_available = True

    items = cabinet_owner.videos

    form = UserProfileForm()
    form_acc = AccountSettingsForm()
    if request.method == 'POST':
        form_name = request.form['form-name']
        tab = 2
        if form_name == 'form':
            tab = 1
        if form_name == 'form' and form.validate():
            tab = 1
            user = cur_user()
            folder = str(user.id)
            if form.change_name.data:
                user.change_name(form.change_name.data)
            if form.channel_info.data:
                user.change_channel_info(form.channel_info.data)
            if 'avatar' in request.files:
                avatar_url = avatars.save(form.avatar.data, folder=folder)
                user.update_avatar(json.dumps({"url": avatar_url}))
            if 'background' in request.files:
                background_url = backgrounds.save(form.background.data,
                                                  folder=folder)
                user.update_background(json.dumps({"url": background_url}))
            return redirect(
                url_for("cabinet", usr=cabinet_owner.login, tab=tab))
        elif form_name == 'form_acc' and form_acc.validate():
            tab = 2
            user = cur_user()
            if form_acc.change_password.data:
                user.save(form_acc.change_password.data)
            return redirect(
                url_for("cabinet", usr=cabinet_owner.login, tab=tab))
    now = time = datetime.now(tz=None)
    return render_template('user/cabinet.html',
                           form=form,
                           form_acc=form_acc,
                           user=user,
                           items=items,
                           settings=is_cabinet_settings_available,
                           usr=cabinet_owner,
                           subscribed=(user in cabinet_owner.subscribers),
                           now=now,
                           tab=tab)
def create_preview(video_id, ext):
    video = Video.get(video_id=video_id)
    video_path = join_path(video.path, 'video.' + ext)

    video_clip = VideoFileClip(video_path)
    time = random() * video_clip.duration

    preview_path = join_path(video.path, 'preview.png')
    video_clip.save_frame(preview_path, time)
def videos_map():
    videos_with_coords = []
    user = cur_user()

    for video in Video.get():
        if video.geotags:
            videos_with_coords.append(video)

    return render_template('videos_map.html',
                           user=user,
                           videos=videos_with_coords)
def main():
    user = cur_user()
    sub_items = []
    if user:
        subs = user.subscriptions
        for sub in subs:
            for video in sub.videos:
                sub_items.append(video)

    now = time = datetime.now(tz=None)
    video_pack = Video.get(need_geo=True)
    return render_template('main.html',
                           user=user,
                           items=video_pack[0],
                           sub_items=sub_items,
                           now=now,
                           geo_items=json.dumps(
                               [video.serialize() for video in video_pack[1]]))
def play(vid):
    video = Video.get(video_id=vid)
    if not video:
        abort = Aborter()
        return abort(404)

    user = cur_user()
    usr = User.get(login=video.user.login)

    if user and user not in video.viewers:
        video.add_viewer(user)

    likened = 0
    if user in video.likes:
        likened = 1
    if user in video.dislikes:
        likened = -1
    return render_template('video_page.html',
                           user=user,
                           vid=vid,
                           video=video,
                           lkd=likened,
                           usr=usr,
                           subscribed=(user in usr.subscribers))
def standardize_video_extension(video_id, ext):
    video = Video.get(video_id=video_id)
    video_path = join_path(video.path, 'video.' + ext)

    video_clip = VideoFileClip(video_path)
    video_clip.write_videofile(join_path(video.path, 'video.mp4'))