flask实现通过查询展示相关文件夹中的全部相关视频,并可点选播放,写一段代码
时间: 2024-03-07 18:48:21 浏览: 17
好的,以下是一个简单的 Flask 应用程序实现了通过查询展示相关文件夹中的全部相关视频,并可点选播放的功能:
```python
import os
from flask import Flask, render_template, request
app = Flask(__name__)
@app.route('/')
def index():
# 获取视频文件夹中的所有文件名
dir_path = '/path/to/video/folder'
files = os.listdir(dir_path)
# 过滤出视频文件名
videos = [f for f in files if f.endswith('.mp4') or f.endswith('.avi')]
return render_template('index.html', videos=videos)
@app.route('/play')
def play():
# 获取视频文件名
video_name = request.args.get('video')
# 拼接视频文件路径
video_path = os.path.join('/path/to/video/folder', video_name)
return render_template('play.html', video_path=video_path)
if __name__ == '__main__':
app.run()
```
在这个应用程序中,我们首先定义了两个路由函数:`index()` 和 `play()`。`index()` 函数用于展示所有的视频文件名,并将它们作为参数传递给模板渲染函数 `render_template()`。`play()` 函数用于播放选定的视频文件,并将视频文件路径作为参数传递给模板渲染函数 `render_template()`。
接下来,我们需要创建两个 HTML 模板:`index.html` 和 `play.html`。`index.html` 模板用于展示所有的视频文件名,并为每个视频文件名创建一个链接,链接到 `play()` 函数。`play.html` 模板用于播放选定的视频文件。
以下是 `index.html` 模板的代码:
```html
<!DOCTYPE html>
<html>
<head>
<title>Video List</title>
</head>
<body>
<h1>Video List</h1>
<ul>
{% for video in videos %}
<li><a href="/play?video={{ video }}">{{ video }}</a></li>
{% endfor %}
</ul>
</body>
</html>
```
以下是 `play.html` 模板的代码:
```html
<!DOCTYPE html>
<html>
<head>
<title>Video Player</title>
</head>
<body>
<h1>Video Player</h1>
<video src="{{ video_path }}" controls></video>
</body>
</html>
```
在这个应用程序中,我们使用了 Flask 模板引擎的控制结构,如 `{% for %}` 和 `{% endfor %}`,以及变量插值语法 `{{ }}`。`index.html` 模板使用了 `for` 循环来遍历视频文件名列表,`play.html` 模板使用了 `src` 属性来指定要播放的视频文件路径,并使用了 `controls` 属性来显示视频播放控件。
最后,我们需要将视频文件存储在指定的文件夹中,并将文件夹路径更新为 `/path/to/video/folder`。运行应用程序后,打开浏览器,访问 `http://localhost:5000/`,即可展示所有的视频文件名,并通过点击链接播放选定的视频。