rosynirvana / douyu_cli

Broken
MIT License
36 stars 6 forks source link

大神,能否增加一个功能啊 #5

Closed lki2019 closed 7 years ago

lki2019 commented 7 years ago

关于录制:

1.关于录像文件名

py -3 douyu_api.py -q 1 -r 274874 -s luxiang11 https://www.douyu.com/274874

我现在就是是直接编辑bat文件房间号 一键录制,但是多次录制时会命令行下会提示已经有同名文件,要不要覆盖?能否加一个自动在后面+1+2 之类的【或者按照录制时间命名吧,比如这样274874-2017年7月21日17时54分47秒.flv

2.关于批量录制

现在这样只能录制一个房间的,能否加一个可以同时录制多个房间,

比如我要同时录制 123 321 456 789 这4个房间,

在没开播时我就双击批处理 后台会自动2秒检测一次这几个房间是否开播,如果开播,启动录制,并弹出一个开播了的小窗口,

这样基本实现懒人化了


我不知道复杂不复杂啊,比如自动检测是否开播以及开播了弹出窗口 这些如果复杂那就算了,

不过录像文件按照时间生成和批量录制,未开播前自动监测是否开播,一旦开播自动开启录制

这功能还是很实用的~

lki2019 commented 7 years ago

@Justsoos
qq 20170724152755 qq 20170724152702 qq 20170724152731

ykdl解析出来的 又可以直接pot播放了

Justsoos commented 7 years ago

把你下载potplayer 地址,版本号发上来看看。 另外,是否能收藏后,至少半小时还能播放?

lki2019 commented 7 years ago

V1.6.60735

解析出来的地址,你意思半小时在用这个地址去播放一下,看看还能播放么? 我试验下,以前都是看一次解析一次的

Justsoos commented 7 years ago

是在pot 官网下载的?

lki2019 commented 7 years ago

是别人弄的便携版,绿化卸载.bat

lki2019 commented 7 years ago

@rosynirvana @Justsoos qq 20170724155315

放1张超级小桀鱼吧的截图

貌似他开发了1个全斗鱼都可以用的网页版弹幕助手 http://yudan.co/

比如这个https://www.douyu.com/584854 正在开播

账号密码都是房间号

qq 20170724155930

Justsoos commented 7 years ago

那就怪不得了,你用的是国内工作室 “修改版” potplayer,很可能阉割掉了聊天服务,包括二次探测 url 的模块。我用的一直是官网下载的。 建议你不要用这种国内工作室版本,很可能插了后门。

lki2019 commented 7 years ago

@Justsoos 还好吧,我用的是还算靠谱的人做的,我电脑上基本都是免安装 版本,基本都是压缩包 绿化卸载.bat这类的

反馈下:大概等了20分钟把

把刚才解析出来的地址在添加进去 无法播放了,说明还是有时效性的

qq 20170724160502

lki2019 commented 7 years ago

@rosynirvana 我还有一个小想法, 就是现在用你写的可以实现一键本地看直播,一键录像,也可以一键批量检测开播了

一键本地看直播,好像少了点什么?弹幕,对吧

我目前搭配用的是这个:https://github.com/littlecodersh/danmu

只不过只有简单的输出,作者好像不怎么更新

我觉得啊

其实我觉得最主要的功能这样:

弹幕输出格式:【电脑or手机用户】【用户等级】【昵称】内容

礼物信息只显示飞机和火箭 这2两个礼物的赠送信息

小礼物显示啥的没啥必要加,进出房间信息也没必要加,

大神要不你把他那个斗鱼的拿过来,你持续更新下被?或者你写1个

这样啊你这个项目 应该说简直是为斗鱼用户量身定做的最佳辅助了,

但是不知道弄个这样输出格式的弹幕脚本,麻烦不麻烦,如果麻烦就算了,

rosynirvana commented 7 years ago

弹幕输出到控制台上是吗?

lki2019 commented 7 years ago

你的意思是在播放器上画面上 和B站那样 的显示吧

我说的是单独的命令行下的显示

前者是不是麻烦些要? 或者有更好的体验的输出方式么?

qq 20170724183957

rosynirvana commented 7 years ago

前者要看播放器支持了,而且现在的效果都不怎么样(滚动弹幕有帧率问题) 你只是要改一下 littlecodersh/danmu 这个项目的输出格式?

lki2019 commented 7 years ago

恩 他那个有3种类型的 我把其他2种删除了

主要显示文字的弹幕,因为他那个礼物信息都是乱码

弹幕输出格式:【电脑or手机用户】【用户等级】【昵称】内容

礼物信息只显示飞机和火箭 这2两个礼物的赠送信息

文字弹幕输出格式和礼物显示内容!

还有命令行下的弹幕输出,如果房间弹幕太多,滚动速度太快,体验也不好, 我的想法是在命令行窗口的最底部的滚动的时候,有个短暂的暂停,然后弹幕在往下继续滚

这样当前窗口能显示的范围 眼睛能看清楚弹幕打了什么

有个短暂的暂停,然后继续往下滚动,这样可能比较好 【才想起来好像他那个有类似功能就是鼠标左键在命令行下点一下自动弹幕就不继续滚动了,在点一下就继续滚动起来了,这样其实也实现了我说的这个了】】 能把弹幕自动保存到目录下,以房间号-生成的时间生成,这样以后可以打开搜索指定昵称来查询发过的所有弹幕! 不过好像这样需要数据库支持吧?

直接点就是弹幕可以自动保存下来,以后随时可以打开输入指定昵称,来显示发言的所有信息,

不知道我说的这个麻烦不麻烦··对于房管来说这个还是很实用的

rosynirvana commented 7 years ago

等我看看斗鱼的弹幕protocol

lki2019 commented 7 years ago

在补充下:

其实呢我的思路由浅入深是这样子的:

首先呢,刚需的是:

文字弹幕输出格式:【电脑or手机用户】【用户等级】【昵称】内容

礼物弹幕信息只显示飞机和火箭 这2两个礼物的赠送信息【其他小礼物啥的不需要】


延伸开来的细化需求是这样:

文字弹幕输出显示,如果是房管就标记上房管,如果是超管就标记超管,如果是主播就标记主播,也就是各自标记各自的身份,当然游客没必要标记,因为绝大多数是游客,


分支需求就是斗鱼房间房管的刚需:

第一,自动保存当前连接成功的房间的弹幕到本地目录,以年月日 【电脑or手机用户】【用户等级】【昵称】内容 为保存格式,

第二,配套一个小工具,可以显示房管禁言的所有显示,

被禁言人昵称:发了什么内容,被禁言了多久,操作人昵称是谁。

然后也是自动保存到本地目录,这个房管禁言的显示记录量不大,也就是说几个小时下来,可能被禁言的次数不多,

所以其实主要目的是为了之后回头查询禁言的操作记录和弹幕发言记录

比如呢?比如张三在弹幕骂人,被房管A禁言,结果张三去贴吧发帖说房管无缘无故禁言,

那么如果有这个配套工具,马上可以打开,输入对方昵称,显示出对方的所有发言记录,以及当时被禁言时他的发言是什么。以及操作人是谁,如果是房管恶意禁言,也方便查出!

所以我觉得可能弹幕的自动保存和房管禁言操作的自动保存 这2个是属于搭配使用的, 其实受益人群是房管这个群体,方便直播间管理规范这些,

但是弹幕的自动保存和房管禁言记录的保存,从我一个外行来考虑, 可能涉及之后查询的响应速度上,是否会很慢等等

还有房管禁言操作记录这个东西,是不是也需要接口才可以获取到? 那么目前斗鱼公开的第三方接口是否可以获取到房管的禁言记录

Justsoos commented 7 years ago

@lki2019 哈哈,你不送礼物,都能让 @rosynirvana 给你干活,你太厉害了。

lki2019 commented 7 years ago

@Justsoos 没有啊,我就是从我一个普通用户的体验反馈啦,开发者是自由选择的, 我也只是说说我的想法而已啦,我上面也说啦,如果麻烦其实也就算啦,但是如果开发了这些功能,从我的角度和我看到的,会有很多人很需要!嘿嘿,

当然从普通使用者角度,开发者的付出是我们要感谢的,所以只说想法,不强求开发者!

不过rosynirvana的确是一个很耐心的大神,我是心服口服外加佩服,

lki2019 commented 7 years ago

@Justsoos 哼,你老是刺激我,

rosynirvana commented 7 years ago

手机用户还是电脑用户这个看得出来吗?用户等级是哪项数据很明显

lki2019 commented 7 years ago

qq 20170724201936

之前没有粉丝牌子那会,用户如果是手机前面会有个手机的那种图形标识,

现在有了粉丝牌子后,好像不显示手机端用户的标识了

对了,弹幕发言前这个粉丝牌子的数据好抓么? 如果是爵位的用户的发言,好像也显示爵位

如果是否是手机用户这个不好抓,其实我现在又看了下,如果能抓到粉丝牌子的这个数据反而更直观点

【粉丝牌子and等级】【用户等级】【昵称】 ----内容------ 【身份比如 爵位,房管,主播,超管】

rosynirvana commented 7 years ago
import time, sys

from danmu import DanMuClient

def pp(msg):
    print(msg.encode(sys.stdin.encoding, 'ignore').
        decode(sys.stdin.encoding))

if __name__ == '__main__':
    dmc = DanMuClient(sys.argv[1])
    if not dmc.isValid(): print('Url not valid')

@dmc.danmu
def danmu_fn(msg):
    card = '{}{}'.format(msg['bnn'], msg['bl'])
    if msg['bl'] == '0':
        card = ''
    pp('{}[{} lv{}] {}'.format(card, msg['NickName'], msg['level'], msg['Content']))

@dmc.gift
def gift_fn(msg):
    gift_mapping = {}
    gift_mapping['196'] = 'rocket'
    gift_mapping['1005'] = 'super rocket'
    gift_mapping['1010'] = 'Luban rocket'
    gift_mapping['195'] = 'airplane'
    gift_name = gift_mapping.get(str(msg['gfid']))
    if gift_name:
        print('{} sends {}'.format(msg['NickName'], gift_name))

'''
@dmc.other
def other_fn(msg):
    print(msg)
    #pp('Other message received')
'''

dmc.start(blockThread=True)

把danmu里面那个run.py改掉

粉丝牌子应该是找到了 找了个人多的直播间

熊扒皮4[哈喽啊妮哥 lv11] 别的直播间也是
德云色4[凛瑯 lv6] 怎么就这画质出问题了。。。
[Hentai小丑 lv7] 说其他线路画质好的心理没电b数?
[Super幂 lv14] 等级符文
德云色8[风起清云 lv12] 请问这是孙冷和西莫的直播间吗10
[KUDRSIR lv11] 线路二好一点
德云色6[关忆北丫 lv10] 尹相杰,攻击力
[弹指间醉红颜 lv13] 图图唱一首天干物燥
[宇宙级打野丶贝爷 lv15] 偷倒闭的梗?嗯?
[小邓66的 lv12] 66
德云色10[八路奶粉表弟 lv22] 这个色相头又长又宽 就像这个秃头又大又圆
[2330625018 lv2] 还主线路没问题?nmsl??
[风吹微凉油菜香 lv6] 5级打7级关注了
[槑槑槑耶 lv4] 调下游戏画质
德云色4[金灶沐的游戏馆 lv14] 兄弟们,换备用线路5
[落鰯嘢吢 lv5] 我高清的很清楚啊
[老唧唧万岁 lv4] 他把寡妇的野刷了
德云色5[84561 lv13] 卡卡卡
德云色7[你的笑容 lv20] 试了很多,超清和高清没区别
鸽王9[万垒宗主息衍 lv30] 经验符文

看了眼牌子昵称确实是 鸽王 这些

lki2019 commented 7 years ago

我仔细看了一会,

原本run,py里的内容

import time, sys

from danmu import DanMuClient

def pp(msg): print(msg.encode(sys.stdin.encoding, 'ignore'). decode(sys.stdin.encoding))

dmc = DanMuClient('https://www.douyu.com/534059') if not dmc.isValid(): print('Url not valid')

@dmc.danmu def danmu_fn(msg): pp('[%s] %s' % (msg['NickName'], msg['Content']))

dmc.start(blockThread=True)

我把你的代码粘贴进去 覆盖了

然后呢

run.py 房间号?网址?

之前的代码我是直接吧dmc = DanMuClient('https://www.douyu.com/534059')这个房间号改成我要看的 然后直接运行run.py就可以了

lki2019 commented 7 years ago

明白了, 把你这段代码dmc = DanMuClient(sys.argv[1])

改成dmc = DanMuClient('https://www.douyu.com/房间号')

就可以了 ···

lki2019 commented 7 years ago

反馈一下,如果这个直播间没有开播,这个弹幕插件就连接不上!显示不出来弹幕

只有直播间正在开播,这个弹幕插件才可以连接成功并显示弹幕?

rosynirvana commented 7 years ago

从命令行读url

python3 run.py http://douyu.com/foo

都一样的啊

lki2019 commented 7 years ago

恩 的确可以

qq 20170724212102

有爵位的前面会有爵位的显示,是房管的前面会有房管的标识

哈,不过这样看上去好像有点乱哈。果然前缀多了,就显得杂乱,

如果内容在对齐了可能好点吧?每一行下面加1个空行或者--------------------------这样的

qq 20170724212649

比如:

qq 20170724213346

虽然这样窗口可能会变宽,不过这样看起来会好看点,相比之下下面这个看上去更好看点

qq 20170724213807

rosynirvana commented 7 years ago

对齐本来不难,但是有些人ID太长,所以等等再做

{
    'MsgType': 'danmu',
    'txt': '尴尬了',
    'ct': '2',
    'type': 'chatmsg',
    'bl': '7',
    'level': '10',
    'brid': '2056450',
    'el': '',
    'bnn': '孤影',
    'sahf': '0',
    'col': '2',
    'cid': 'adffef14f0fa42797497100000000000',
    'nn': '不是可爱猫',
    'uid': '139545225',
    'ifs': '1',
    'hc': 'f681589f3b3172bd43477185ad8b5a2d',
    'ic': 'avanew/face/201707/16/20/f52b786ec722bebfcdfedab5aaf3d18c',
    'Content': '尴尬了',
    'NickName': '不是可爱猫',
    'rid': '2056450'
}

爵位/房管暂且不知道是那个值,等等再做

lki2019 commented 7 years ago

恩,一点点完善