def videolist(): Video.update_video_torrents_info() page = request.args.get('page', 1, type=int) videos = Video.get_list_videos(page, int(current_app.config['VIDEO_PER_PAGE'])) prev_url = url_for('videoapp.videolist', page=videos.prev) if videos.has_prev else None next_url = url_for('videoapp.videolist', page=videos.next) if videos.has_next else None return render_template('videoapp/videolist.html', title='Videos', prev_url=prev_url, next_url=next_url, videos=videos.videos)
def send_file(id): video = Video.get_video(id) if video.torrent_status == 'completed': print(video.file_path) return send_from_directory(current_app.config['FILMS_FOLDER'], video.id + '.mp4') return redirect(url_for('videoapp.videolist'))
def select_by_ids(video_ids: list): """ select count(*) from audios :return: record size """ tupVar = tuple(video_ids) # sql语句 建表 sql = """SELECT * FROM videos where id in %s;""" db = PostgreSql() results = db.select_by_ids(sql, (tupVar, )) videos = list() for result in results: video_id = result['id'] video_name = result['name'] video_md5 = result['md5'] video_format = result['format'] local_video_path = result['local_video_path'] cloud_video_path = result['cloud_video_path'] cloud_cover_path = result['cloud_cover_path'] date_created = result['date_created'] size = result['size'] video = Video(video_id, video_name, video_md5, video_format, local_video_path, cloud_video_path, cloud_cover_path, size, date_created) videos.append(video) return videos
def video(id): video = Video.get_video(id) if video.torrent_status == 'completed': filename = url_for('videoapp.send_file', id=video.id) return render_template('videoapp/video.html', video=video, title=video.title, filename=filename) return redirect(url_for('videoapp.videolist'))
def add_torrent(): form = AddTorrentForm() if form.validate_on_submit(): if 'file' not in request.files: flash('No file part') return redirect(request.url) file = request.files['file'] if file.filename == '': flash('No selected file') return redirect(request.url) if file and allowed_file(file.filename): Video.add_video(form.title.data, base64.b64encode(file.read()).decode('utf-8')) return redirect(url_for('videoapp.videolist')) else: flash('no secure filename') return redirect(url_for(request.url)) return render_template('videoapp/add_torrent.html', form=form, title='Add torrent')
def get_videos_torrent_info(): videoids = request.form.getlist('ids[]') resp = [] for id in videoids: video = Video.get_video(id) video.update_torrent_info() resp.append({ 'id': video.id, 'torrent_status': video.torrent_status, 'torrent_eta': video.torrent_eta, 'torrent_progress': video.torrent_progress }) return jsonify(resp)
def video_info(id): video = Video.get_video(id) video.update_torrent_info() if video is None: flash('video with id {} does not exist'.format(id)) return redirect(url_for('videoapp.videolist')) if request.method == 'POST': video.try_update_from_imdb() return redirect(url_for('videoapp.videolist')) else: filename = url_for('videoapp.send_file', id=video.id) return render_template('videoapp/video_info.html', video=video, title=video.title, filename=filename)
def test_ConfigFileNotFound(self): with self.assertRaises(FileNotFoundError): Video("nonexistent_file.mp4", "nonexistent_file.ini")
import matplotlib.pyplot as plt from app.video import Video v0 = Video("videos/video0.mp4", "workspace/config.ini") # v0.extract_frames(show=False) # frame_gen = v0.frame_generator() # for f in frame_gen: # print(f"#{f.frame_no} {f.frame_time} {np.shape(f.frame)}") time_series = v0.extract_time_series() # print(time_series) score0 = time_series.score() score0.time_series()
def video_popup(id): video = Video.get_video(id) if video is not None: return render_template('videoapp/video_popup.html', video=video) return redirect(url_for('videoapp.videolist'))
def delete_video(id): if current_user.admin: Video.get_video(id).remove_video() return redirect(url_for('videoapp.videolist'))