吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7647|回复: 15
收起左侧

[其他原创] 斗鱼简易播放器(带弹幕)

  [复制链接]
sas 发表于 2017-11-25 17:53

如何运行?
下载aardio编程环境,新建一个代码文件,把下面的代码复制进去,点运行即可

import win.ui;
/*DSG{{*/
var winform = win.form(text="斗鱼简易播放器";right=927;bottom=503)
winform.add(
btnView={cls=
"button";text="查看";left=184;top=456;right=280;bottom=488;db=1;dl=1;z=3};
edRoomId={cls=
"edit";text="71771";left=64;top=456;right=168;bottom=489;db=1;dl=1;edge=1;multiline=1;z=2};
ffWindow={cls=
"custom";left=8;top=8;right=920;bottom=448;db=1;dl=1;dr=1;dt=1;edge=1;transparent=1;z=1};
static={cls=
"static";text="房间号";left=16;top=464;right=64;bottom=488;db=1;dl=1;transparent=1;z=4}
)
/*}}*/

import mpvPlayer;
import hpsocket.tcpPullClient;
import crypt;
import inet.whttp;
import web.json;
import thread.command

var mplayer = mpvPlayer(winform.ffWindow);
var tcpPullClient = hpsocket.tcpPullClient()
var whttp = inet.whttp()

var key = "Y237pxTx2In5ayGz"
var sign = function(roomId, t){
   
var str = "room/" ++ roomId ++ "?aid=androidhd1&cdn=ws&client_sys=android&time=" ++ t ++ key
   
return crypt.md5(str,false);
}
var getFlvUrl = function(roomId){
   
var t = tonumber(time())
   
var url = "http://capi.douyucdn.cn/api/v1/room/" ++ roomId ++ "?aid=androidhd1&cdn=ws&client_sys=android&time=" ++ t ++ "&auth=" ++ sign(roomId, t)
        
   
var html = whttp.get( url )
   
if( html ){
        
var r = web.json.parse(html)
        
if( r.error === 0 ){
            
return r.data.rtmp_url ++ "/" ++ r.data.rtmp_live;
        }
    }
}
var getUrl = function(roomId="71771"){
   
var flvUrl = getFlvUrl(roomId)
   
return flvUrl ? whttp.location( flvUrl, "GET" );
}

var sendData = function(s){
   
var data = {
        int len;
        struct msg = {
            int len;
            word
type = 689;
            byte cryptedField;
            byte reservedField;
            byte body[] = s;
            byte e;
        }
    }

    data.len = raw.sizeof(data.msg)
    data.msg.len = data.len
    tcpPullClient.send( data,raw.sizeof(data ))
}
var loginreq = function(roomId){
    sendData(
"type@=loginreq/roomid@=" ++ roomId ++ "/" )
}
var joingroup = function(roomId){
    sendData(
"type@=joingroup/rid@=" ++ roomId ++ "/gid@=-9999/" )
}
var keepLive = function(){
    sendData(
"type@=mrkl/" )
}

tcpPullClient.onPullReceive =
function(hpTcpPullClient,connId,length){
   
import thread.command
   
   
while(
        
var min, remain = 9, length;
        ;
        remain >= min
    ) {
        remain -= 4;
        
var buf = {INT len};
        
if 0 == hpTcpPullClient.peek( buf, 4 ) {
            
var len = buf.len;
            
if remain < len return ;
            remain -= len;
            
var bufLen = 4+len
            buf = raw.buffer( bufLen )
            
if 0 == hpTcpPullClient.fetch( buf, bufLen ) {  
               
var s = raw.tostring(buf)
               
if( string.match( s, `type@=(.+?)/`) == "chatmsg" ){
                    
var nickname = string.match( s, `nn@=(.+?)/`)
                    
var txt = string.match( s, `txt@=(.+?)/`)
                    
if( nickname ? txt ){
                        thread.command.post(
"onReceiveChatmsg", nickname , txt )
                    }
                }
            }
        }
    }   
}

var thCmd = thread.command()
thCmd.onReceiveChatmsg =
function(nick, txt){
    mplayer.setOption(
"osd-msg1", nick ++ ":" ++ txt );
}


winform.btnView.oncommand =
function(id,event){
   
var roomId = winform.edRoomId.text  
   
var url = getUrl(roomId)
   
if( url ){
        mplayer.command(
"loadfile", url)
        
if( tcpPullClient.start( "openbarrage.douyutv.com",8601,false) ){
            loginreq( roomId )
            joingroup( roomId )
            
var tmId = winform.addtimer(
                15000,
               
function(hwnd,msg,id,tick){
                    keepLive()
                }
            )
        }
    }      
}

winform.show()
win.loopMessage();

免费评分

参与人数 5吾爱币 +5 热心值 +5 收起 理由
Passerby灬甲 + 1 + 1 我很赞同!
yongsheng + 1 + 1 谢谢@Thanks!
GVP + 1 + 1 我很赞同!
lhspang + 1 + 1 热心回复!
justin0571 + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

先有我后有天 发表于 2017-11-25 18:08 来自手机
好简易啊!膜拜大佬
keephappy 发表于 2017-11-25 18:44
lhspang 发表于 2017-11-25 19:32
ftmovie 发表于 2017-11-25 19:53 来自手机
研究一下
GVP 发表于 2017-11-25 20:26
可以的。
11465 发表于 2017-11-25 20:28
66666666666
夏纯洁 发表于 2017-11-25 21:57 来自手机
真心的看不懂
yongsheng 发表于 2017-11-25 22:09

辛苦了兄弟
不会你举啥手! 发表于 2017-11-26 14:28
以为成品呢
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 05:21

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表