Giter Site home page Giter Site logo

iyear / pure-live-core Goto Github PK

View Code? Open in Web Editor NEW
1.2K 17.0 146.0 8.28 MB

✨ Make Live Pure Again

Home Page: https://github.com/iyear/pure-live-core

License: GNU Affero General Public License v3.0

Go 99.34% Makefile 0.16% Dockerfile 0.49%
live livestream bilibili bilibili-live huya douyu douyulive twitch

pure-live-core's Introduction

🎉 简介

Go Report Card

该项目仅供学习,请勿用于商业用途。任何使用该项目造成的后果由使用者自行承担。

一个想让直播回归纯粹的项目

没有礼物、粉丝团、弹窗,只有直播、弹幕

✨ 特性

  • 🔎 直播间信息、直播流、弹幕流、发送弹幕
  • ⌛ 平台 Websocket 协议封装,支持转发弹幕消息、直播间热度消息
  • 🗝️ 解决跨域问题,支持直播流本地转发
  • 📂 简易的收藏夹功能支持
  • 🎯 资源占用低,5开百万热度直播间、蓝光直播流转发、弹幕全开占用 40M 内存
  • 🧬 跨平台支持,甚至可以运行在路由器上
  • 🔨 支持设置 Socks5 代理 (未测试)
  • 🧱 良好的项目结构设计,解耦直播平台和核心功能
  • ⚙️ 同时它也是一个简单的命令行工具。

......

🛠️ 部署

Docker

支持 amd64 386 arm64 arm/v6 arm/v7 架构

#启动
docker run --name pure-live -p <HOST_PORT>:8800 -d --restart=always iyear/pure-live:latest
#或添加-v参数
docker run --name pure-live -p <HOST_PORT>:8800 -v /HOST/PATH/DATA:/data -v /HOST/PATH/LOG:/log -d --restart=always iyear/pure-live:latest

#查看log
docker logs -f pure-live

#设置账户配置文件
docker cp PATH/TO/account.yaml pure-live:/config/account.yaml
docker restart pure-live

#设置服务器配置文件
docker cp PATH/TO/server.yaml pure-live:/config/server.yaml
docker restart pure-live

#备份数据库
docker cp pure-live:/data/data.db .

#备份配置文件
docker cp pure-live:/config .

#复制log到宿主机
docker cp pure-live:/log .

二进制部署

下载 Release 的最新打包文件

解压后重命名 config 目录下的 server.yaml.exampleserver.yaml , config/account.yaml.exampleaccount.yaml ,填写相关信息。

chmod +x ./pure-live
./pure-live run

打开对应的本地地址 localhost:<port> ,即可看到前端界面,开始使用 pure-live 吧!

pure-live 的初衷是本地或局域网的直播流推送,对于 websocket 推送没有做压缩或优化处理。

pure-live 运行在局域网内的 NAS 或其他小型服务器上,就可以使整个局域网内享受到 pure-live 的支持。

前端

Release 都已经内置了默认的前端页面

如果前端有小BUG修复,请前往前端仓库下载最新版本替换 static 目录下的所有文件

前端自己快速看了一下 Vue 一把梭写出来的,仅仅是能用的水平,代码结构也很庞杂凌乱,期待更好的第三方前端页面出现。

前端仓库: https://github.com/iyear/pure-live-frontend

其他前端页面:

  • ......

⚙️ 命令行(仅支持二进制文件)

查看版本:

./pure-live -v
v0.1.0.211224-beta
go1.17.3 windows/amd64

查看帮助:

./pure-live -h
./pure-live run -h
./pure-live get -h
./pure-live export -h

run

启动本地服务器

-s : 服务器配置文件路径,默认为 config/server.yaml

-a : 账号配置文件路径,默认为 config/account.yaml

./pure-live run
./pure-live run -s myserver.yml
./pure-live run -s my/myserver.yml -a my/myaccount.yml

get

获取直播信息、直播流、弹幕流

-p :平台名。涉及的平台参数在 API文档 中查询

-r : 房间号。长短号均可

--stream : 下载对应的直播流(暂时只支持 flv),不传入则不下载,传入文件名。此方式下载的 flv 文件较大,如需要更精细的控制请使用 ffmpeg

--danmaku : 抓取对应的弹幕流,以 xlsx 格式保存,不传入则不抓取,传入文件名

--roll : 抓取弹幕是否显示弹幕滚动信息

./pure-live get -p bilibili -r 6
./pure-live get -p bilibili -r 6 --stream b.flv
./pure-live get -p bilibili -r 6 --stream b.flv --danmaku dm.xlsx
./pure-live get -p bilibili -r 6 --danmaku dm.xlsx --roll
./pure-live get -p bilibili -r 6 --stream b.flv --danmaku dm.xlsx --roll

成功获得相关信息

Room: 7734200
Upper: 哔哩哔哩英雄联盟赛事
Title: 直播:全明星周末选人仪式
Link: https://live.bilibili.com/7734200
Stream: https://d1--cn-gotcha03.bilivideo.com/live-bvc/842331/live_50329118_9516950.flv?cdn=cn-gotch......

export

导出收藏及收藏夹信息

-d : 数据库路径。默认 data/data.db

-p : 导出路径。默认 export.xlsx

./pure-live export
./pure-live export -d mydata/data.db
./pure-live export -d mydata/data.db -p mydata.xlsx

🌲 生态

目前 pure-live 的生态并不完善,最终的目标是做到开源社区驱动的维护模式。

在发展到一定规模后, pure-live 将会以 organization 的形式维护 core 与不同平台的客户端。

📝 文档

如何写一个自己的前端? API文档

如何添加新的平台支持? Client文档

移动平台 gomobile 支持? TODO

📷 预览

WEB前端预览

🔩 贡献

ISSUE

请使用 issue 发起任何问题,非重要事情请勿私聊。

  • 提出新的特性帮助 pure-live 成长。特性的支持效率取决于其重要程度。
  • 提出 BUG 解决使用中的问题。 BUG 的修复将优先考虑。
  • ......

PR

dev 分支签出一个自己的分支,请勿向 master 发起 PR

🔌 TODO

基本直播功能(直播流+弹幕接收)

  • 哔哩哔哩
  • 虎牙
  • 斗鱼
  • 企鹅电竞
  • 映客
  • 网易CC
  • Twitch (等待第三方库支持 m3u8 拉流)
  • 咪咕体育

发送弹幕

  • 哔哩哔哩
  • 虎牙
  • 斗鱼

get

  • 弹幕JSON保存
  • 弹幕ASS保存

📈 趋势

stars

🧑 贡献者

contrib

🗒️ 参考

https://github.com/wbt5/real-url

https://github.com/flxxyz/douyudm

https://github.com/BacooTang/huya-danmu

🔖 LICENSE

AGPL-3.0 License

pure-live-core's People

Contributors

biggerxiong avatar iyear avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pure-live-core's Issues

直播间是否开启探测的潜在问题-后续请求被拒绝

大佬你好,又是我!真是不好意思(^~^;)ゞ
发现一个新功能_直播间是否开启 及相应的播放键蓝色显示的问题。貌似出在了探测上。
就是第一次打开收藏夹都是正常的,但是后续再打开(不一定是第二次,有可能几次后),就会出现收藏夹显示不了的问题。(如果在收藏夹页面刷新大概率出问题)
经过检查,貌似是b站探测的问题,探测太多好像会被ban(貌似是ban账号),需要一段时间冷却后才会恢复,才能重新探测到直播信息。被ban适合提示请求被拦截412,如图
(这个是网页被ban后使用指令的效果,可以看到douyu是ok的,b站不行,10分钟后就好了)
DSC_0026.JPG

这个不是咱的bug,但确实有时候影响使用。

貌似是我D的太多了?(。ノω\。)
我用旧版前端了,随便刷新无此问题。

这不是个bug哦,算是反馈个情况,大佬看完可以直接关闭,相关情况写个readme提醒下大概就ok了

[BUG] 斗鱼CDN失效

pure-live-core 0.1.5版本
akm-tct.douyucdn.cn CDN已失效

目前可用CDN
hw-tct.douyucdn.cn
后缀不变

[BUG] 斗鱼CDN失效

pure-live-core 0.1.3版本
vplay1a.douyucdn.cn CDN已失效

目前可用CDN
akm-tct.douyucdn.cn
后缀不变

关于收藏夹两点意见

1.建议收藏夹默认按照开播状态排序,开播的排在前面
2.建议点击收藏夹,不用刷新,查询是否开播,而是加一个刷新按钮,用来查询该收藏夹里的主播是否开播。目前这样,我看一个主播 ,想切换另外一个,从播放页面切回到收藏夹,收藏夹就会去刷新,很费时间和资源,没太大必要每次都刷新。

[BUG] 观看斗鱼直播时网络下载无法自动停止 且切换直播时小概率崩溃

请附上pure-live版本、环境、错误日志、直播间等一切相关信息,以便我们更好的解决问题。
发现一个疑似bug

版本: v0.1.0.211224-beta First Version
环境:树莓派 Zero 2W,64位官方系统(armv7)
直播间:斗鱼 歌神洞庭湖-洞主凯哥直播间

因为是zero 2w,性能略显拉跨的原因,我一直在边看直播边监视系统占用,无意间发现pure-live在看斗鱼直播时候,会以1mb每秒的速度进行下载(一个设备,只看一个直播间时),并且即使在切换直播/关闭浏览器的情况下仍然如此,此情况只出现在看斗鱼直播的时候(虎牙不怎么看,没试),bilibili直播无此问题(先打开bili直播,不下载;打开斗鱼,下载上传开始;切换到bili直播,上传停下载不停;关闭网页,同上),猜测虎牙的视频流处理有点缺陷?(下载转发上传倒是正常的,主要是关了/切换直播间上传停了但仍然下载的问题)

而且直播间切换时候小概率崩溃(斗鱼bili互切,bili自己切没事),程序会退出,但是是闪退还是报错我看不到(因为我的openwrt路由也比较拉跨,崩溃的时候会直接把网连带炸一下,ssh断开了就啥也看不到了),不好意思。这个也许是我的zero性能拉跨的问题吧,也许复现不了,就忽略就行。

[Feat] 前端请求转发

core本身不会提供直播推荐等功能,但是前端可以选择提供多样化的其他功能。core将提供http请求转发的功能使前端避免跨域问题

[BUG] /api/v1/live/room_infos 无法处理 ID 为 0 的请求

该接口的请求为

var req []*struct {
    ID   uint64 `form:"id" binding:"required" json:"id"`
    Plat string  `form:"plat" binding:"required,max=15" json:"plat"`
    Room string  `form:"room" binding:"required" json:"room"`
}

当请求的 ID 为 0 时,会报 参数错误,请求数据如下

[{"id":0,"plat":"douyu","room":"16101"},{"id":1,"plat":"douyu","room":"96291"}]

响应如下

{
    "code": -2,
    "msg": "invalid params: [0]: Key: 'ID' Error:Field validation for 'ID' failed on the 'required' tag"
}

前端如果将收藏列表的下标作为 id,则 id 会出现为 0 的情况

而 gin 在接收请求参数时,无法处理默认值的情况

建议把请求参数改为(ID 改为指针类型)

var req []*struct {
    ID   *uint64 `form:"id" binding:"required" json:"id"`
    Plat string `form:"plat" binding:"required,max=15" json:"plat"`
    Room string `form:"room" binding:"required" json:"room"`
}

[Feat] 快手

不考虑别的,电竞频道也是有一些签约在快手,体量也不小,有想法支持吗,不急

[BUG] nginx https 代理ajax跨越请求失败

xhr.js:210

   Mixed Content: The page at 'https://live.123213.com/live' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://live.123213.com/api/v1/live/room_info?plat=bilibili&room=6'. This request has been blocked; the content must be served over HTTPS.

[BUG]说起来大佬你可能不信,01.0版本的static前端,有点问题

版本:v0.1.0-release
系统环境:树莓派 Zero 2 W
错误反应:
程序本身无任何报错,但是执行后登录网页,网页不能加载直播间(例如选择平台输入直播间号后加载,加载不出直播也不会有未开播提示),同时收藏页也显示为空(我一开始发现的就是收藏空了,检查配置文件无问题数据库无问题)
用旧版发布的static替换后一切恢复正常。

另外想问一句,现在斗鱼下载流关闭的逻辑是写在了刷新上吗,。我直接切换直播间看下载流还有,但是刷新就没了(这条不是bug
,就是确认下,好培养操作习惯)

请教两个问题

  1. 清晰度似乎不是最高的,对比同类型的justlive,同一个主播,清晰度有一定差距
  2. 我用电脑ssh连群晖,运行,再用电脑浏览器,是可以连群晖的服务正常观看的,但是我关了电脑的ssh窗口,服务就停止了,请问需要在群晖上怎么设置,它才能一直在运行

十分感谢作者做出这么好的东西

[Feat] 希望新增一个接口,判断某个直播间是否在直播中

现在有收藏功能,可以让用户收藏某个直播间。

但是用户无法直观地看到哪个直播间正在播,想看收藏的主播还得一个一个点进去看。

希望增加一个判断直播间是否开播的接口,用于在收藏界面显示该主播直播状态(直播中/未直播)

我能加载弹幕 但是所有直播间都没视频 是黑屏的

2023-05-19T00:50:44.628+0800 INFO server/server.go:41 read config succ...
2023-05-19T00:50:44.642+0800 INFO server/server.go:52 init database succ...
2023-05-19T00:50:44.642+0800 INFO server/server.go:58 server runs on :8800,debug: false
2023-05-19T00:51:00.708+0800 INFO server/server.go:76 shutdown server...
2023-05-19T00:51:00.714+0800 INFO server/server.go:85 server exited...
2023-05-19T00:51:21.573+0800 INFO server/server.go:41 read config succ...
2023-05-19T00:51:21.607+0800 INFO server/server.go:52 init database succ...
2023-05-19T00:51:21.607+0800 INFO server/server.go:58 server runs on :8800,debug: false
2023-05-19T00:51:50.350+0800 INFO middleware/log.go:15 200 | 105.861ms | ::1 | GET | /live |
2023-05-19T00:51:50.388+0800 INFO middleware/log.go:15 200 | 6.937ms | ::1 | GET | /css/app.bfc29941.css |
2023-05-19T00:51:50.394+0800 INFO middleware/log.go:15 200 | 13.2098ms | ::1 | GET | /css/chunk-vendors.a16c4353.css |
2023-05-19T00:51:50.402+0800 INFO middleware/log.go:15 200 | 19.5409ms | ::1 | GET | /js/app.8695e764.js |
2023-05-19T00:51:50.437+0800 INFO middleware/log.go:15 200 | 7.5118ms | ::1 | GET | /css/chunk-3b606400.98ba7103.css |
2023-05-19T00:51:50.490+0800 INFO middleware/log.go:15 200 | 59.8242ms | ::1 | GET | /js/chunk-c345c180.3c756c22.js |
2023-05-19T00:51:50.512+0800 INFO middleware/log.go:15 200 | 129.8592ms | ::1 | GET | /js/chunk-vendors.5dfbe656.js |
2023-05-19T00:51:50.557+0800 INFO middleware/log.go:15 200 | 127.2294ms | ::1 | GET | /js/chunk-3b606400.8cd595a1.js |
2023-05-19T00:51:50.741+0800 INFO middleware/log.go:15 200 | 4.8002ms | ::1 | GET | /fonts/element-icons.535877f5.woff |
2023-05-19T00:51:50.759+0800 INFO middleware/log.go:15 200 | 4.2661ms | ::1 | GET | /favicon.ico |
2023-05-19T00:52:15.070+0800 WARN v1/live.go:47 failed to get room info {"error": "(-799) 请求过于频繁,请稍后再试", "req": {"plat":"bilibili","room":"35"}}
2023-05-19T00:52:15.070+0800 INFO middleware/log.go:15 200 | 447.4765ms | ::1 | GET | /api/v1/live/room_info?plat=bilibili&room=35 |
2023-05-19T00:53:04.054+0800 INFO middleware/log.go:15 200 | 266.8862ms | ::1 | GET | /api/v1/live/room_info?plat=huya&room=100 |
2023-05-19T00:53:04.169+0800 INFO middleware/log.go:15 200 | 108.206ms | ::1 | GET | /api/v1/live/play_url?plat=huya&room=100 |
2023-05-19T00:53:04.177+0800 INFO v1/serve.go:60 start serving... {"id": "2l30hh59u9", "room": "100", "plat": "huya"}
2023-05-19T00:53:04.263+0800 INFO svc_live/serve.go:22 connected to live danmaku server {"id": "2l30hh59u9"}
2023-05-19T00:53:04.358+0800 INFO svc_live/serve.go:37 entered the room {"id": "2l30hh59u9"}
2023-05-19T00:54:31.277+0800 INFO middleware/log.go:15 200 | 0s | ::1 | GET | /live?room=688&plat=huya |
2023-05-19T00:54:31.312+0800 INFO middleware/log.go:15 200 | 531.4µs | ::1 | GET | /css/app.bfc29941.css |
2023-05-19T00:54:31.314+0800 INFO middleware/log.go:15 200 | 1.605ms | ::1 | GET | /css/chunk-vendors.a16c4353.css |
2023-05-19T00:54:31.320+0800 INFO middleware/log.go:15 200 | 363.3µs | ::1 | GET | /js/app.8695e764.js |
2023-05-19T00:54:31.326+0800 INFO middleware/log.go:15 200 | 5.6581ms | ::1 | GET | /js/chunk-vendors.5dfbe656.js |
2023-05-19T00:54:31.353+0800 INFO middleware/log.go:15 200 | 1.7268ms | ::1 | GET | /js/chunk-c345c180.3c756c22.js |
2023-05-19T00:54:31.607+0800 INFO middleware/log.go:15 200 | 522µs | ::1 | GET | /fonts/element-icons.535877f5.woff |
2023-05-19T00:54:31.691+0800 INFO middleware/log.go:15 200 | 108.0207ms | ::1 | GET | /api/v1/live/room_info?plat=huya&room=688 |
2023-05-19T00:54:33.915+0800 WARN v1/serve.go:93 failed to write ws message {"id": "2l30hh59u9", "error": "write tcp [::1]:8800->[::1]:8152: wsasend: An established connection was aborted by the software in your host machine."}
2023-05-19T00:54:33.915+0800 INFO v1/serve.go:94 stop serving... {"id": "2l30hh59u9", "room": "100", "plat": "huya"}
2023-05-19T00:54:33.916+0800 INFO middleware/log.go:15 200 | 1m29.7381866s | ::1 | GET | /api/v1/live/serve?room=100&plat=huya |
2023-05-19T00:54:33.916+0800 INFO svc_live/serve.go:68 heartbeat stopped {"id": "2l30hh59u9"}
2023-05-19T00:54:33.916+0800 INFO svc_live/serve.go:122 push stopped {"id": "2l30hh59u9"}
2023-05-19T00:54:33.999+0800 INFO svc_live/serve.go:84 receive stopped {"id": "2l30hh59u9"}
2023-05-19T00:54:33.999+0800 INFO svc_live/serve.go:122 push stopped {"id": "2l30hh59u9"}
2023-05-19T00:54:38.171+0800 INFO middleware/log.go:15 200 | 196.7158ms | ::1 | GET | /api/v1/live/room_info?plat=huya&room=4561 |
2023-05-19T00:55:06.848+0800 INFO middleware/log.go:15 200 | 230.1384ms | ::1 | GET | /api/v1/live/room_info?plat=huya&room=5269 |
2023-05-19T00:55:06.943+0800 INFO middleware/log.go:15 200 | 89.0708ms | ::1 | GET | /api/v1/live/play_url?plat=huya&room=5269 |
2023-05-19T00:55:06.948+0800 INFO v1/serve.go:60 start serving... {"id": "u717y84nyz", "room": "5269", "plat": "huya"}
2023-05-19T00:55:07.034+0800 INFO svc_live/serve.go:22 connected to live danmaku server {"id": "u717y84nyz"}
2023-05-19T00:55:07.160+0800 INFO svc_live/serve.go:37 entered the room {"id": "u717y84nyz"}
2023-05-19T00:55:46.068+0800 INFO middleware/log.go:15 200 | 0s | ::1 | GET | /live?room=252140&plat=douyu |
2023-05-19T00:55:46.569+0800 INFO middleware/log.go:15 200 | 196.0052ms | ::1 | GET | /api/v1/live/room_info?plat=douyu&room=252140 |
2023-05-19T00:55:46.887+0800 INFO middleware/log.go:15 200 | 311.1003ms | ::1 | GET | /api/v1/live/play_url?plat=douyu&room=252140 |
2023-05-19T00:55:46.892+0800 INFO v1/serve.go:60 start serving... {"id": "g3qtfjw39j", "room": "252140", "plat": "douyu"}
2023-05-19T00:55:46.965+0800 INFO svc_live/serve.go:22 connected to live danmaku server {"id": "g3qtfjw39j"}
2023-05-19T00:55:46.966+0800 INFO svc_live/serve.go:37 entered the room {"id": "g3qtfjw39j"}
2023-05-19T00:55:47.166+0800 WARN v1/serve.go:84 failed to write ws message {"id": "u717y84nyz", "error": "write tcp [::1]:8800->[::1]:8365: wsasend: An established connection was aborted by the software in your host machine."}
2023-05-19T00:55:47.166+0800 INFO v1/serve.go:85 stop serving... {"id": "u717y84nyz", "room": "5269", "plat": "huya"}
2023-05-19T00:55:47.166+0800 INFO middleware/log.go:15 200 | 40.2173418s | ::1 | GET | /api/v1/live/serve?room=5269&plat=huya |
2023-05-19T00:55:47.166+0800 INFO svc_live/serve.go:68 heartbeat stopped {"id": "u717y84nyz"}
2023-05-19T00:55:47.287+0800 INFO svc_live/serve.go:84 receive stopped {"id": "u717y84nyz"}
2023-05-19T00:55:47.944+0800 INFO middleware/log.go:15 200 | 1.0473379s | ::1 | GET | /api/v1/live/play?url=http%3A//hw-tct.douyucdn.cn/live/252140rz7aIq14cx_1024p.flv%3Fuuid%3D&type=flv |
2023-05-19T00:55:51.654+0800 INFO middleware/log.go:15 304 | 0s | ::1 | GET | /live?room=252140&plat=douyu |
2023-05-19T00:55:51.845+0800 INFO middleware/log.go:15 200 | 0s | ::1 | GET | /favicon.ico |
2023-05-19T00:55:51.897+0800 INFO middleware/log.go:15 200 | 99.9026ms | ::1 | GET | /api/v1/live/room_info?plat=douyu&room=252140 |
2023-05-19T00:55:51.975+0800 WARN v1/serve.go:84 failed to write ws message {"id": "g3qtfjw39j", "error": "write tcp [::1]:8800->[::1]:8598: wsasend: An established connection was aborted by the software in your host machine."}
2023-05-19T00:55:51.975+0800 INFO v1/serve.go:85 stop serving... {"id": "g3qtfjw39j", "room": "252140", "plat": "douyu"}
2023-05-19T00:55:51.975+0800 INFO svc_live/serve.go:68 heartbeat stopped {"id": "g3qtfjw39j"}
2023-05-19T00:55:51.975+0800 INFO middleware/log.go:15 200 | 5.0840651s | ::1 | GET | /api/v1/live/serve?room=252140&plat=douyu |
2023-05-19T00:55:52.170+0800 INFO svc_live/serve.go:84 receive stopped {"id": "g3qtfjw39j"}
2023-05-19T00:55:52.170+0800 INFO svc_live/serve.go:122 push stopped {"id": "g3qtfjw39j"}
2023-05-19T00:55:52.178+0800 INFO middleware/log.go:15 200 | 276.5679ms | ::1 | GET | /api/v1/live/play_url?plat=douyu&room=252140 |
2023-05-19T00:55:52.182+0800 INFO v1/serve.go:60 start serving... {"id": "7subervmfi", "room": "252140", "plat": "douyu"}
2023-05-19T00:55:52.259+0800 INFO svc_live/serve.go:22 connected to live danmaku server {"id": "7subervmfi"}
2023-05-19T00:55:52.259+0800 INFO svc_live/serve.go:37 entered the room {"id": "7subervmfi"}
2023-05-19T00:55:53.223+0800 INFO middleware/log.go:15 200 | 1.0351158s | ::1 | GET | /api/v1/live/play?url=http%3A//hw-tct.douyucdn.cn/live/252140rz7aIq14cx_1024p.flv%3Fuuid%3D&type=flv |
2023-05-19T00:56:24.843+0800 INFO middleware/log.go:15 200 | 0s | ::1 | GET | /live?room=35&plat=bilibili |
2023-05-19T00:56:25.384+0800 WARN v1/serve.go:93 failed to write ws message {"id": "7subervmfi", "error": "write tcp [::1]:8800->[::1]:8627: wsasend: An established connection was aborted by the software in your host machine."}
2023-05-19T00:56:25.384+0800 INFO v1/serve.go:94 stop serving... {"id": "7subervmfi", "room": "252140", "plat": "douyu"}
2023-05-19T00:56:25.384+0800 INFO svc_live/serve.go:68 heartbeat stopped {"id": "7subervmfi"}
2023-05-19T00:56:25.385+0800 INFO middleware/log.go:15 200 | 33.2026066s | ::1 | GET | /api/v1/live/serve?room=252140&plat=douyu |
2023-05-19T00:56:25.399+0800 INFO middleware/log.go:15 200 | 286.9999ms | ::1 | GET | /api/v1/live/room_info?plat=bilibili&room=35 |
2023-05-19T00:56:25.515+0800 INFO middleware/log.go:15 200 | 111.7343ms | ::1 | GET | /api/v1/live/play_url?plat=bilibili&room=35 |
2023-05-19T00:56:25.576+0800 INFO v1/serve.go:60 start serving... {"id": "6f1ctti5as", "room": "21622811", "plat": "bilibili"}
2023-05-19T00:56:25.681+0800 INFO svc_live/serve.go:22 connected to live danmaku server {"id": "6f1ctti5as"}
2023-05-19T00:56:25.681+0800 INFO svc_live/serve.go:37 entered the room {"id": "6f1ctti5as"}
2023-05-19T00:56:25.820+0800 INFO svc_live/serve.go:84 receive stopped {"id": "7subervmfi"}
2023-05-19T00:56:25.820+0800 INFO svc_live/serve.go:122 push stopped {"id": "7subervmfi"}
2023-05-19T00:58:53.317+0800 INFO middleware/log.go:15 304 | 174.7µs | ::1 | GET | /live?room=35&plat=bilibili |
2023-05-19T00:58:53.898+0800 WARN v1/live.go:47 failed to get room info {"error": "(-799) 请求过于频繁,请稍后再试", "req": {"plat":"bilibili","room":"35"}}
2023-05-19T00:58:53.898+0800 INFO middleware/log.go:15 200 | 291.4291ms | ::1 | GET | /api/v1/live/room_info?plat=bilibili&room=35 |
2023-05-19T00:58:55.529+0800 WARN v1/serve.go:93 failed to write ws message {"id": "6f1ctti5as", "error": "write tcp [::1]:8800->[::1]:8708: wsasend: An established connection was aborted by the software in your host machine."}
2023-05-19T00:58:55.529+0800 INFO v1/serve.go:94 stop serving... {"id": "6f1ctti5as", "room": "21622811", "plat": "bilibili"}
2023-05-19T00:58:55.529+0800 INFO middleware/log.go:15 200 | 2m30.0065946s | ::1 | GET | /api/v1/live/serve?room=21622811&plat=bilibili |
2023-05-19T00:58:55.529+0800 INFO svc_live/serve.go:122 push stopped {"id": "6f1ctti5as"}
2023-05-19T00:58:55.529+0800 INFO svc_live/serve.go:68 heartbeat stopped {"id": "6f1ctti5as"}
2023-05-19T00:58:56.582+0800 INFO svc_live/serve.go:84 receive stopped {"id": "6f1ctti5as"}
2023-05-19T00:58:56.582+0800 INFO svc_live/serve.go:122 push stopped {"id": "6f1ctti5as"}
2023-05-19T00:58:56.582+0800 INFO svc_live/serve.go:122 push stopped {"id": "6f1ctti5as"}
2023-05-19T00:59:50.040+0800 WARN v1/live.go:47 failed to get room info {"error": "(-799) 请求过于频繁,请稍后再试", "req": {"plat":"bilibili","room":"35"}}
2023-05-19T00:59:50.040+0800 INFO middleware/log.go:15 200 | 241.8991ms | ::1 | GET | /api/v1/live/room_info?plat=bilibili&room=35 |
2023-05-19T01:00:21.405+0800 INFO server/server.go:76 shutdown server...
2023-05-19T01:00:21.417+0800 INFO server/server.go:85 server exited...
2023-05-19T01:02:38.381+0800 INFO server/server.go:41 read config succ...
2023-05-19T01:02:38.414+0800 INFO server/server.go:52 init database succ...
2023-05-19T01:02:38.415+0800 INFO server/server.go:58 server runs on :8800,debug: false
2023-05-19T01:03:09.245+0800 INFO middleware/log.go:15 200 | 100.8218ms | ::1 | GET | / |
2023-05-19T01:03:19.305+0800 WARN v1/live.go:47 failed to get room info {"error": "(-799) 请求过于频繁,请稍后再试", "req": {"plat":"bilibili","room":"35"}}
2023-05-19T01:03:19.305+0800 INFO middleware/log.go:15 200 | 338.9021ms | ::1 | GET | /api/v1/live/room_info?plat=bilibili&room=35 |
2023-05-19T01:03:27.666+0800 INFO middleware/log.go:15 200 | 108.8477ms | ::1 | GET | /api/v1/live/room_info?plat=huya&room=100 |
2023-05-19T01:03:27.788+0800 INFO middleware/log.go:15 200 | 117.0415ms | ::1 | GET | /api/v1/live/play_url?plat=huya&room=100 |
2023-05-19T01:03:27.793+0800 INFO v1/serve.go:60 start serving... {"id": "3lbq3qiu6m", "room": "100", "plat": "huya"}
2023-05-19T01:03:27.887+0800 INFO svc_live/serve.go:22 connected to live danmaku server {"id": "3lbq3qiu6m"}
2023-05-19T01:03:27.996+0800 INFO svc_live/serve.go:37 entered the room {"id": "3lbq3qiu6m"}
2023-05-19T01:06:00.055+0800 INFO middleware/log.go:15 304 | 152.5µs | ::1 | GET | /live?room=35&plat=bilibili |
2023-05-19T01:06:00.534+0800 WARN v1/live.go:47 failed to get room info {"error": "(-799) 请求过于频繁,请稍后再试", "req": {"plat":"bilibili","room":"35"}}
2023-05-19T01:06:00.534+0800 INFO middleware/log.go:15 200 | 199.6629ms | ::1 | GET | /api/v1/live/room_info?plat=bilibili&room=35 |
2023-05-19T01:06:00.583+0800 WARN v1/serve.go:93 failed to write ws message {"id": "3lbq3qiu6m", "error": "write tcp [::1]:8800->[::1]:8990: wsasend: An established connection was aborted by the software in your host machine."}
2023-05-19T01:06:00.583+0800 INFO v1/serve.go:94 stop serving... {"id": "3lbq3qiu6m", "room": "100", "plat": "huya"}
2023-05-19T01:06:00.584+0800 INFO middleware/log.go:15 200 | 2m32.7907854s | ::1 | GET | /api/v1/live/serve?room=100&plat=huya |
2023-05-19T01:06:00.584+0800 INFO svc_live/serve.go:68 heartbeat stopped {"id": "3lbq3qiu6m"}
2023-05-19T01:06:00.680+0800 INFO svc_live/serve.go:84 receive stopped {"id": "3lbq3qiu6m"}
2023-05-19T01:06:04.479+0800 WARN v1/live.go:47 failed to get room info {"error": "(-799) 请求过于频繁,请稍后再试", "req": {"plat":"bilibili","room":"35"}}
2023-05-19T01:06:04.479+0800 INFO middleware/log.go:15 200 | 88.9557ms | ::1 | GET | /api/v1/live/room_info?plat=bilibili&room=35 |
2023-05-19T01:06:05.370+0800 WARN v1/live.go:47 failed to get room info {"error": "(-799) 请求过于频繁,请稍后再试", "req": {"plat":"bilibili","room":"35"}}
2023-05-19T01:06:05.371+0800 INFO middleware/log.go:15 200 | 92.6608ms | ::1 | GET | /api/v1/live/room_info?plat=bilibili&room=35 |
2023-05-19T01:06:05.606+0800 WARN v1/live.go:47 failed to get room info {"error": "(-799) 请求过于频繁,请稍后再试", "req": {"plat":"bilibili","room":"35"}}
2023-05-19T01:06:05.606+0800 INFO middleware/log.go:15 200 | 101.1473ms | ::1 | GET | /api/v1/live/room_info?plat=bilibili&room=35 |
2023-05-19T01:06:05.787+0800 WARN v1/live.go:47 failed to get room info {"error": "(-799) 请求过于频繁,请稍后再试", "req": {"plat":"bilibili","room":"35"}}
2023-05-19T01:06:05.787+0800 INFO middleware/log.go:15 200 | 93.2104ms | ::1 | GET | /api/v1/live/room_info?plat=bilibili&room=35 |
2023-05-19T01:06:06.003+0800 WARN v1/live.go:47 failed to get room info {"error": "(-799) 请求过于频繁,请稍后再试", "req": {"plat":"bilibili","room":"35"}}
2023-05-19T01:06:06.003+0800 INFO middleware/log.go:15 200 | 98.2994ms | ::1 | GET | /api/v1/live/room_info?plat=bilibili&room=35 |
2023-05-19T01:06:06.309+0800 WARN v1/live.go:47 failed to get room info {"error": "(-799) 请求过于频繁,请稍后再试", "req": {"plat":"bilibili","room":"35"}}
2023-05-19T01:06:06.309+0800 INFO middleware/log.go:15 200 | 93.2945ms | ::1 | GET | /api/v1/live/room_info?plat=bilibili&room=35 |
2023-05-19T01:06:06.531+0800 INFO middleware/log.go:15 200 | 130.8338ms | ::1 | GET | /api/v1/live/room_info?plat=bilibili&room=35 |
2023-05-19T01:06:06.598+0800 INFO middleware/log.go:15 200 | 63.7403ms | ::1 | GET | /api/v1/live/play_url?plat=bilibili&room=35 |
2023-05-19T01:06:06.603+0800 INFO v1/serve.go:60 start serving... {"id": "mjppbdg29s", "room": "21622811", "plat": "bilibili"}
2023-05-19T01:06:06.635+0800 INFO svc_live/serve.go:22 connected to live danmaku server {"id": "mjppbdg29s"}
2023-05-19T01:06:06.635+0800 INFO svc_live/serve.go:37 entered the room {"id": "mjppbdg29s"}
2023-05-19T01:06:06.724+0800 INFO middleware/log.go:15 200 | 156.6157ms | ::1 | GET | /api/v1/live/room_info?plat=bilibili&room=21622811 |
2023-05-19T01:06:06.752+0800 INFO middleware/log.go:15 200 | 0s | ::1 | GET | /live?room=21622811&plat=bilibili |
2023-05-19T01:06:06.776+0800 INFO middleware/log.go:15 200 | 48.1203ms | ::1 | GET | /api/v1/live/play_url?plat=bilibili&room=21622811 |
2023-05-19T01:06:07.053+0800 INFO middleware/log.go:15 200 | 124.9982ms | ::1 | GET | /api/v1/live/room_info?plat=bilibili&room=21622811 |
2023-05-19T01:06:07.107+0800 INFO middleware/log.go:15 200 | 49.866ms | ::1 | GET | /api/v1/live/play_url?plat=bilibili&room=21622811 |
2023-05-19T01:06:07.111+0800 INFO v1/serve.go:60 start serving... {"id": "2jjzx7jdq6", "room": "21622811", "plat": "bilibili"}
2023-05-19T01:06:07.204+0800 INFO svc_live/serve.go:22 connected to live danmaku server {"id": "2jjzx7jdq6"}
2023-05-19T01:06:07.204+0800 INFO svc_live/serve.go:37 entered the room {"id": "2jjzx7jdq6"}
2023-05-19T01:06:07.316+0800 WARN v1/serve.go:93 failed to write ws message {"id": "mjppbdg29s", "error": "write tcp [::1]:8800->[::1]:9060: wsasend: An established connection was aborted by the software in your host machine."}
2023-05-19T01:06:07.316+0800 INFO v1/serve.go:94 stop serving... {"id": "mjppbdg29s", "room": "21622811", "plat": "bilibili"}
2023-05-19T01:06:07.316+0800 INFO svc_live/serve.go:68 heartbeat stopped {"id": "mjppbdg29s"}
2023-05-19T01:06:07.316+0800 INFO middleware/log.go:15 200 | 712.4542ms | ::1 | GET | /api/v1/live/serve?room=21622811&plat=bilibili |
2023-05-19T01:06:08.410+0800 INFO svc_live/serve.go:84 receive stopped {"id": "mjppbdg29s"}
2023-05-19T01:06:08.410+0800 INFO svc_live/serve.go:122 push stopped {"id": "mjppbdg29s"}
2023-05-19T01:06:17.110+0800 INFO middleware/log.go:15 200 | 519.4µs | ::1 | GET | /api/v1/fav/list/get_all |
2023-05-19T01:06:17.120+0800 INFO middleware/log.go:15 200 | 504.8µs | ::1 | GET | /api/v1/fav/list/get?id=1 |
2023-05-19T01:06:17.121+0800 INFO middleware/log.go:15 200 | 528.9µs | ::1 | GET | /api/v1/fav/list/get?id=1 |
2023-05-19T01:06:17.136+0800 INFO middleware/log.go:15 200 | 177.2µs | ::1 | POST | /api/v1/live/room_infos |
2023-05-19T01:06:17.141+0800 INFO middleware/log.go:15 200 | 529.4µs | ::1 | POST | /api/v1/live/room_infos |

[BUG] 虎牙无法获取房间信息

请附上pure-live版本、环境、错误日志、直播间等一切相关信息,以便我们更好的解决问题。

操作平台: Windows11
pure-live版本信息:

go1.16.15 windows/amd64

控制台错误信息:

2023-04-18T01:16:58.477+0800    INFO    server/server.go:41     read config succ...
2023-04-18T01:16:58.629+0800    INFO    server/server.go:52     init database succ...
2023-04-18T01:16:58.629+0800    INFO    server/server.go:58     server runs on :8800,debug: false
2023-04-18T01:17:05.105+0800    WARN    v1/live.go:47   failed to get room info {"error": "strconv.ParseInt: parsing \"\": invalid syntax", "req": {"plat":"huya","room":"528040"}}
2023-04-18T01:17:05.106+0800    INFO    middleware/log.go:15    200 |       503.6µs |             ::1 | GET | /api/v1/live/room_info?plat=huya&room=528040 |

请求接口:http://localhost:8800/api/v1/live/room_info?plat=huya&room=528040
返回结果:{"code":10002,"msg":"failed to get room info: strconv.ParseInt: parsing \"\": invalid syntax"}
描述: 可尝试任何一个房间号反馈结果均为一致.尝试斗鱼平台无异常.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.