Flask结合Redis消息队列实现电影弹幕

用到的弹幕播放器插件:dplayer.js(开源)

1.安装Redis
2.安装flask-redis包
pip install flask-redis
3.下载dplayer

页面搭建

1.引入资源

  <link rel="stylesheet" href="{{ url_for('static',filename='dplayer/dist/ DPlayer.min.css') }}">
    <script src="{{ url_for('static',filename='dplayer/plugin/flv.min.js') }}"></script> 
    <script src="{{ url_for('static',filename='dplayer/plugin/hls.min.js') }}"></script> 
  <script src="{{ url_for('static',filename='dplayer/dist/DPlayer.min.js') }}"></script>

2.添加样式

<!--样式--> 
<style>
.dplayer-comment-setting-type>label{ display: inline;}
</style>

3.播放器样式

<!--播放器 --> 
<div class="col-md-8">
<div id="dplayer1" style="height:500px;width: 774px;"></div> 
</div>

4.弹幕js

<!--弹幕js-->
<script>
    var dp1 = new DPlayer({
    element: document.getElementById('dplayer1'),
    video: {
    url: "播放地址(电影文件地址)(例:{{ url_for('static',filename='uploads/'+movie.url) }})", 
  },danmaku: {
  id: '电影ID'(例:{{movie.id}}),
  api: "API地址(例:/tm/)"
}
});
</script>

 

<!--右侧添加滚动条-->
<div class="panel-body" style="height:459px;overflow:scroll;">

 

 

视图处理等

1.在__init__.py中

<!--使 用 方法--> 
from flask.ext.redis import FlaskRedis
app.config["REDIS_URL"] = "redis://localhost:6379/0"
rd = FlaskRedis(app)

2.在视图层

API地址视图处理
#视图处理
@home.route("/tm/", methods=["GET", "POST"])
def tm():
    import json
    from app import rd
    if request.method == "GET":
        id = request.args.get('id')
        key = "movie" + str(id)
        if rd.llen(key):
            msgs = rd.lrange(key, 0, 2999)
            res = {
            "code": 1,
            "danmaku": [json.loads(v) for v in msgs]
            }
        else: res = {
            "code": 1,
            "danmaku": []
            }
        resp = json.dumps(res)
    if request.method == "POST":
        data = json.loads(request.get_data())
        msg = {
        "__v": 0,
        "author": data["author"],
        "time": data["time"],
        "text": data["text"],
        "color": data["color"],
        "type": data['type'],
        "ip": request.remote_addr,
        "_id": datetime.datetime.now().strftime("%Y%m%d%H%M%S") + uuid.uuid4().hex,
        "player": [ data["player"]
        ]
        }
        res = { "code": 1, "data": msg
        }
        resp = json.dumps(res)
        rd.lpush("movie" + str(data["player"]), json.dumps(msg))
    from flask import Response
    return Response(resp, mimetype='application/json')

 

转载于:https://www.cnblogs.com/jokerq/p/9121131.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值