woo语言实现 m3u8流媒体视频文件 下载并播放

woo 代码如下:

已经在gitee开源:https://gitee.com/oshine/woo_spider

在这里插入图片描述

PS:运行前注意,一般爬虫网站会要求有refer,请把对应的refer填写到下方代码中,在运行


local args=_args()
-- _out(args)

if #args<3 then
    print('缺少参数:例如:woo m3u8.woo  m3u8索引文件地址  保存文件名')
    return
end

-- 创建文件夹,忽略结果
_mkdir(args[3])

print('索引文件和索引片段将会保存到文件夹:',args[3])

local http =woo.http:new()

local headers= {
        ['Referer']='这里填写refer',
        ['User-Agent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36 Edg/88.0.705.74' 
    }

local res,err=http.request('get', args[2], { headers = headers })

if err then
    print(ok)
   return
end


local url_prefix=_sub_ex('ne',args[2],'/')

local download = function (name)

    local r,e=http.request('get',url_prefix..'/'..name, { headers = headers })
    if e then
        print('下载索引片段失败!',e)
        return
    end
    _file_save(args[3]..'/'..name,r.body)
    print('下载索引片段完成!',name)
end

_file_save(args[3]..'/index.m3u8',res.body)

print('保存m3u8索引文件到磁盘完毕')

print('m3u8索引文件下载成功,开始解析m3u8索引片段。。。')

-- #EXTM3U
-- #EXT-X-VERSION:3
-- #EXT-X-MEDIA-SEQUENCE:0
-- #EXT-X-ALLOW-CACHE:YES
-- #EXT-X-TARGETDURATION:11
-- #EXTINF:5.846178,
-- 0000.ts
-- #EXTINF:4.771444,
-- 0001.ts
-- #EXTINF:7.374033,

local lines = _str_split(res.body,'\n')
if #lines<1 then
    print('m3u8 文件内容为空')
    return
end

local next_line=false
local to_be_download={}

for _, line in pairs(lines) do
    if next_line then
        to_be_download[#to_be_download+1]=line
        next_line=false
    else
        if _begin_with(line,'#EXTINF:') then
            next_line=true
        end
    end
end

lines=nil

local total= #to_be_download

print('解析m3u8索引文件完毕,共有索引片段',total)

for i, name in pairs(to_be_download) do
    
    print('开始下载索引片段('..tostring(i)..'/'..tostring(total)..'):'..name)

    download(name)
end

下载完毕后,使用里面的播放器 player.html来播放m3u8文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值