nodejs 爬取m3u8视频

let fs =require('fs');
let readline=require('readline');
let request = require("request");
let path = require("path")

let rl=readline.createInterface({
	input:process.stdin,
	output:process.stdout
})
function ques(){//m3u8文件路径
	return new Promise(function(resolve,reject){
        rl.question('路径?\n',function(ans){
            resolve(ans);
        })
    })
}
async function create(){
    let res = await ques()
    let fileStr = fs.readFileSync(res, "utf8");
    let kwArr = fileStr.match(/(start=\d+)&(end=\d+)/g)
    
    //创建文件夹目录
    var dirPath = path.join(__dirname, "file");
    if (!fs.existsSync(dirPath)) {
        fs.mkdirSync(dirPath);
        console.log("文件夹创建成功");
    } else {
        console.log("文件夹已存在");
    }
    
    //循环多线程下载
    kwArr.forEach((v,i)=>{
        let start = v.split('&')[0].split('=')[1]
        let end = v.split('&')[1].split('=')[1]
        console.log('start:',start,'end:',end)
        let url = `https://encrypt-k-vod.xiaoe-tech.com/9764a7a5vodtransgzp1252524126/609e6b565285890799813207086/drm/v.f230.ts?start=${start}&end=${end}&type=mpegts&t=5fe4575f&sign=1da9dbb8525129ed54bd58ab5ae84680&whref=appwbcgvkzf4961.pc.xiaoe-tech.com&us=ofWpbDcVF57P`
        let fileName = `out-${start}-${end}.ts`;

        let options = {
            url,
            headers: {
                'Accept': '*/*',
                'Accept-Encoding': 'gzip, deflate, br',
                'Accept-Language': 'zh-CN,zh;q=0.9',
                'Cache-Control': 'no-cache',
                'Connection': 'keep-alive',
                'Host': 'encrypt-k-vod.xiaoe-tech.com',
                'Origin': 'https://appwbcgvkzf4961.pc.xiaoe-tech.com',
                'Pragma': 'no-cache',
                'Referer': 'https://appwbcgvkzf4961.pc.xiaoe-tech.com/',
                'Sec-Fetch-Dest': 'empty',
                'Sec-Fetch-Mode': 'cors',
                'Sec-Fetch-Site': 'same-site',
                'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'
            },
        }
        let stream = fs.createWriteStream(path.join(dirPath, fileName));
        request(options).pipe(stream).on("close", function (err) {
            console.log("文件[" + fileName + "]下载完毕");
            if(kwArr.length === i + 1) {
                console.log("----------所有文件下载完毕----------");
                composite()
            }
        });

        function composite() {
          // "/b":表示按二进制合并;不加就默认按字符转合并,会出问题
            exec("copy /b C:\Users\HC101\Desktop\express\file\*.ts C:\Users\HC101\Desktop\output\100 | 组织创新顶层架构设计(下).ts", (error, stdout, stderr) => {
                if (error) {
                    console.error(`执行的错误: ${error}`);
                    return;
                }
                console.log(`stdout: ${stdout}`);
                console.error(`stderr: ${stderr}`);
            });
        }
    })
}
create()

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值