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文件