编写模块代码,基于flask的校园音乐网的新模块,该模块为点歌模块,使用者需要提交网易云歌曲链接,填写点歌人信息,被点歌人信息,以及留言,提交成功后弹窗提示,在原界面生成播放器,播放该歌曲,要求有详细的提示信息,代码完整,越详细越好
时间: 2024-05-13 14:19:14 浏览: 19
首先,我们需要安装Flask和网易云音乐API的Python库pyncm。可以使用以下命令进行安装:
```
pip install Flask pyncm
```
接下来,我们可以开始编写点歌模块的代码。在Flask应用程序中,我们需要定义一个路由以接收用户提交的点歌请求,然后将其处理并返回结果。
```python
from flask import Flask, request, render_template, jsonify
from pyncm import apis
app = Flask(__name__)
@app.route('/submit', methods=['POST'])
def submit():
# 获取用户提交的表单数据
song_url = request.form['song_url']
sender_name = request.form['sender_name']
receiver_name = request.form['receiver_name']
message = request.form['message']
# 使用网易云API获取歌曲信息
song_info = apis.song_detail(song_url)
# 如果获取失败,返回错误信息
if song_info['code'] != 200:
return jsonify({'success': False, 'message': '获取歌曲信息失败,请检查链接是否正确'})
# 提取歌曲名称和歌手信息
song_name = song_info['songs'][0]['name']
artist_name = song_info['songs'][0]['ar'][0]['name']
# 构造播放器的HTML代码
player_html = f"""
<iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width=330 height=86
src="//music.163.com/outchain/player?type=2&id={song_info['songs'][0]['id']}&auto=1&height=66">
</iframe>
"""
# 构造弹窗提示的HTML代码
alert_html = f"""
<script>
alert('点歌成功!');
</script>
"""
# 返回成功信息和播放器HTML代码
return render_template('index.html', success=True, player_html=player_html, alert_html=alert_html)
```
在上面的代码中,我们首先定义了一个路由`/submit`,它的请求方法为POST。当用户提交表单时,Flask将调用这个路由处理请求。
在处理函数中,我们首先使用`request.form`获取用户提交的表单数据,包括歌曲链接、点歌人姓名、被点歌人姓名和留言信息。然后,我们使用pyncm库的`songs_detail`方法获取歌曲信息,包括歌曲名称、歌手信息和歌曲ID等。
如果获取歌曲信息失败,我们将返回一个JSON格式的错误信息。否则,我们将使用歌曲ID构造一个网易云音乐的播放器,并将其嵌入到HTML代码中。同时,我们还构造了一个弹窗提示的HTML代码,用于在提交表单成功后弹出提示框。
最后,我们使用`render_template`方法将成功信息和播放器HTML代码渲染到模板文件`index.html`中,并返回给用户。模板文件的内容如下:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>校园音乐网 - 点歌模块</title>
</head>
<body>
{% if success %}
{{ player_html }}
{{ alert_html }}
{% endif %}
<form action="/submit" method="post">
<label for="song_url">歌曲链接:</label>
<input type="text" name="song_url" id="song_url"><br>
<label for="sender_name">点歌人姓名:</label>
<input type="text" name="sender_name" id="sender_name"><br>
<label for="receiver_name">被点歌人姓名:</label>
<input type="text" name="receiver_name" id="receiver_name"><br>
<label for="message">留言:</label>
<textarea name="message" id="message"></textarea><br>
<input type="submit" value="提交">
</form>
</body>
</html>
```
在模板文件中,我们首先使用Flask的模板语言判断提交是否成功,如果成功则将播放器HTML代码和弹窗提示HTML代码渲染到页面中。然后,我们使用HTML表单构造了一个简单的表单,包括歌曲链接、点歌人姓名、被点歌人姓名和留言信息等。用户提交表单后,Flask将自动调用`/submit`路由处理请求,并返回播放器和弹窗提示等信息。
最后,我们需要在Flask应用程序中运行这个点歌模块。我们可以在代码中添加以下代码:
```python
if __name__ == '__main__':
app.run(debug=True)
```
这个代码将在调试模式下启动Flask应用程序,并监听默认的5000端口。现在,我们就可以运行这个点歌模块了,使用以下命令即可:
```
python app.py
```
在浏览器中访问`http://localhost:5000`即可打开点歌模块的页面。用户可以在页面中填写歌曲链接、点歌人姓名、被点歌人姓名和留言信息等,然后提交表单。如果提交成功,页面将自动弹出一个提示框,同时在页面中生成一个网易云音乐的播放器,播放该歌曲。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)