当前位置: 首页 > news >正文

物流网站建设可行性报告营销培训讲师

物流网站建设可行性报告,营销培训讲师,建浏览器网站制作,个人做网站做什么样的话实现目标: 输入斗鱼房间号实时获取弹幕信息,实现效果如下:douyu.gif逻辑梳理 首先说明下斗鱼是开放了弹幕API的,可以直接去他们开发者论坛查看文档,按照文档中要求一步一步的来就好了,我这边就简单梳理下&a…
img_df1e6478bc17e7e567e623d7aff3e918.png

实现目标:

  • 输入斗鱼房间号实时获取弹幕信息,实现效果如下:
    img_ab195bcc9bb0203cfdf6d3bda7c5892c.gif
    douyu.gif

逻辑梳理

  • 首先说明下斗鱼是开放了弹幕API的,可以直接去他们开发者论坛查看文档,按照文档中要求一步一步的来就好了,我这边就简单梳理下:
  • 建立两个线程:一个与弹幕服务器建立连接然后获取数据,一个定时发送心跳信息给弹幕服务器保持连接。
建立连接
  1. 通过TCP协议连接到弹幕服务器;

IP 地址:openbarrage.douyutv.com 端口:8601

  1. 向弹幕服务器发送登录请求,登录弹幕服务器,消息格式type@=loginreq/roomid@=房间号/,不需要账号密码;
  2. 登陆成功之后服务器会给你返回一个登录成功信息,这部分不用管,继续向服务器发送一个进入弹幕分组请求,格式type@=joingroup/rid@=房间号/gid@=-9999/,gid使用-9999就好,表示海量弹幕模式;
  3. 接下来接收消息就好了,当然服务器返回的不止弹幕信息,还包括礼物/特殊人物进入房间等消息,这部分可以通过返回消息的type进行判断,选择自己需要的就好,详细的参见文档;
心跳消息
  • 为保持连接需要每隔段时间向弹幕服务器发送心跳消息,长时间未收到心跳消息服务器就会断开连接了,心跳消息格式:type@=keeplive/tick@=1439802131/,其中tick为当前秒级时间戳。

代码部分

# -*- coding:utf-8 -*-
import socket
import re
import time
import struct
import threadingdef connect():'''第三方客户端通过 TCP 协议连接到弹幕服务器(依据指定的 IP 和端口); 第三方接入弹幕服务器列表:IP 地址:openbarrage.douyutv.com 端口:8601'''print '-----*-----DouYu_Spider-----*-----\n'host = socket.gethostbyname("openbarrage.douyutv.com")port = 8601global ss = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.connect((host,port))def send_msg(msg):data_length = len(msg) + 8code = 689msgHead = struct.pack('<i',data_length) \+ struct.pack('<i',data_length) + struct.pack('<i',code)s.send(msgHead)sent = 0while sent < len(msg):tn = s.send(msg[sent:])sent = sent + tndef danmu(room_id):'''1.客户端向弹幕服务器发送登录请求2.客户端收到登录成功消息后发送进入弹幕分组请求给弹幕服务器'''login = 'type@=loginreq/roomid@=%s/\0'%room_idlogin = login.encode('utf-8')send_msg(login)joingroup = 'type@=joingroup/rid@=%s/gid@=-9999/\0'%room_idjoingroup = joingroup.encode('utf-8')send_msg(joingroup)while True:content = s.recv(1024)if judge_chatmsg(content):nickname = nick_name(content)chatmsg = chat_msg(content)print '%s : %s'%(nickname,chatmsg)else:passdef keep_alive():'''客户端每隔 45 秒发送心跳信息给弹幕服务器'''while True:msg = 'type@=keeplive/tick@=%s/\0'%str(int(time.time()))send_msg(msg)time.sleep(45)def nick_name(content):'''弹幕消息:type@=chatmsg/rid@=301712/gid@=-9999/uid@=123456/nn@=test /txt@=666/level@=1/判断type,弹幕消息为chatmsg,txt为弹幕内容,nn为用户昵称'''pattern = re.compile(r'nn@=(.*)/txt@')nickname = pattern.findall(content)[0]return nicknamedef chat_msg(content):'''弹幕消息:type@=chatmsg/rid@=301712/gid@=-9999/uid@=123456/nn@=test /txt@=666/level@=1/判断type,弹幕消息为chatmsg,txt为弹幕内容,nn为用户昵称'''pattern = re.compile(r'txt@=(.*)/cid@')chatmsg = pattern.findall(content)[0]return chatmsgdef judge_chatmsg(content):'''判断是否为弹幕消息'''pattern = re.compile(r'type@=(.*)/rid@')data_type = pattern.findall(content)try:if data_type[0] == 'chatmsg':return Trueelse:return Falseexcept Exception, e:return Falseif __name__ == '__main__':connect()t1 = threading.Thread(target=danmu,args=(2947432,))t2 = threading.Thread(target=keep_alive)t1.start()t2.start()

最后

斗鱼提供的文档已经是一年前的了,里面传回的消息内容增加了不少,但整体逻辑还是没变,我这边只取了弹幕里面的昵称和文本内容,其他的消息各位可以先打印出来看了再写正则表达式去匹配就好。


我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=4smxcktb7utn

http://www.lbrq.cn/news/2377279.html

相关文章:

  • 在中国怎么做国外网站百度云客服人工电话
  • 邢台市网站制作推广游戏怎么拉人最快
  • 海尔建设此网站的目的是什么意思百度业务推广
  • 松江做网站需要多少钱服装品牌策划方案
  • 安居客看房网北京seo编辑
  • 公司网站成本域名污染查询网站
  • 网站建设学院谷歌seo实战教程
  • 公司起名字查询网南京seo优化公司
  • 网站内套网站代码网络推广与网络营销的区别
  • 西乡做网站多少钱推广链接点击器app
  • 昆明做网站建设的公司哪家好裤子seo标题优化关键词
  • 预售网站开发郑州网站策划
  • 手机网站开发兼容性怎么注册自己的网址
  • 如何做网站支付链接武汉做seo公司
  • vue做的网站有什么百度加盟
  • 小叮当网站建设网络搭建教程
  • 网页制作下载安装包无锡seo公司哪家好
  • 柳江网站建设网址导航下载到桌面
  • 免费html网页模板网站太原百度快速优化
  • 什么博客可以做网站公司调查公司
  • 网站设计师培训中心关键词百度指数查询
  • php网站后台建设网站维护需要学什么
  • 湖北建设委员会网站外链推广软件
  • 网站建设知名公司排名网站seo排名公司
  • 衡阳网站建设开发价格手机百度收录提交入口
  • 网站浏览记录怎么做快速建站
  • 机构组织网站建设推广下载
  • 营销网站建设规划概念html期末大作业个人网站制作
  • 怎样修改网站标题如何做好一个网站
  • 简述网站的制作步骤品牌策划包括哪几个方面
  • 前端基础——B/S工作原理、服务器与前端三大件
  • 零基础入门:用C++从零实现TCP Socket网络小工具
  • Copula 回归与结构方程模型:R 语言构建多变量因果关系网络
  • 自动化测试工具 Selenium 入门指南
  • Kafka与Flink打造流式数据采集方案:以二手房信息为例
  • 【Python3-Django】快速掌握DRF:ModelViewSet实战指南