/hls-download

Primary LanguageJavaScriptMIT LicenseMIT

hls-download

npm npm downloads dependencies status

Install

npm i hls-download

Usage

const request = require('request');
const m3u8 = require('m3u8-parser');
const hlsdl = require('hls-download');

getStream();

async function getStream(){
	
	let getM3u8Sheet = await getData('http://example.com/path/to/your/stream.m3u8');
	let headers = { "myCustomHeader": "ping" };
	
	let m3u8parse = new m3u8.Parser();
	m3u8parse.push(getM3u8Sheet.res.body);
	m3u8parse.end();
	let m3u8cfg = m3u8parse.manifest;
	
	let proxyObj = false;
	/*
	
	// proxy http(s)
	proxy = { "ip": "192.168.0.101:1234", "type": "http" };
	// proxy socks
	proxy = { "ip": "192.168.0.101:1234", "type": "socks" };
	// proxy socks auth
	proxy['socks-login'] = 'socks server login';
	proxy['socks-pass'] = 'socks server password';
	
	*/
	
	let mystream = await hlsdl({ fn: "myfile", m3u8json: m3u8cfg, proxy: proxyObj, headers: headers });
	
	if(!mystream.ok){
		console.log(`[ERROR] ${mystream.err}\n`);
	}
	else{
		console.log(`[INFO] Video downloaded!\n`);
	}
	
}


function getData(options){
	return new Promise((resolve) => {
		request(options, (err, res) => {
			if (err){
				res = err;
				resolve({ "err": "0", res });
			}
			if (res.statusCode != 200 && res.statusCode != 403) {
				resolve({ "err": res.statusCode, res });
			}
			resolve({res});
		});
	});
}