Update ffm3u8_open.js

main
catvod 2 years ago committed by GitHub
parent e5e20a98ac
commit 0239319813
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 35
      open/ffm3u8_open.js

@ -94,38 +94,37 @@ async function proxy(segments, headers, reqHeaders) {
let what = segments[0]; let what = segments[0];
let segs = decodeURIComponent(segments[1]); let segs = decodeURIComponent(segments[1]);
if (what == 'hls') { if (what == 'hls') {
function hlsHeader(data, hls) {
let hlsHeaders = {};
if (data.headers['content-length']) {
Object.assign(hlsHeaders, data.headers, { 'content-length': hls.length.toString() });
} else {
Object.assign(hlsHeaders, data.headers);
}
delete hlsHeaders['transfer-encoding'];
if (hlsHeaders['content-encoding'] == 'gzip') {
delete hlsHeaders['content-encoding'];
}
return hlsHeaders;
}
const hlsData = await hlsCache(segs, headers); const hlsData = await hlsCache(segs, headers);
if (hlsData.variants) { if (hlsData.variants) {
// variants -> variants -> .... ignore // variants -> variants -> .... ignore
const hls = HLS.stringify(hlsData.plist); const hls = HLS.stringify(hlsData.plist);
let hlsHeaders = {}; return {
if (hlsData.headers['content-length']) {
Object.assign(hlsHeaders, hlsData.headers, { 'content-length': hls.length.toString() });
} else {
Object.assign(hlsHeaders, hlsData.headers);
}
const result = {
code: hlsData.code, code: hlsData.code,
content: hls, content: hls,
headers: hlsHeaders, headers: hlsHeader(hlsData, hls),
}; };
return result;
} else { } else {
const hls = HLS.stringify(hlsData.plist, (segment) => { const hls = HLS.stringify(hlsData.plist, (segment) => {
return js2Proxy(false, siteType, siteKey, 'ts/' + encodeURIComponent(hlsData.key + '/' + segment.mediaSequenceNumber.toString()), headers); return js2Proxy(false, siteType, siteKey, 'ts/' + encodeURIComponent(hlsData.key + '/' + segment.mediaSequenceNumber.toString()), headers);
}); });
let hlsHeaders = {}; return {
if (hlsData.headers['content-length']) {
Object.assign(hlsHeaders, hlsData.headers, { 'content-length': hls.length.toString() });
} else {
Object.assign(hlsHeaders, hlsData.headers);
}
const result = {
code: hlsData.code, code: hlsData.code,
content: hls, content: hls,
headers: hlsHeaders, headers: hlsHeader(hlsData, hls),
}; };
return result;
} }
} else if (what == 'ts') { } else if (what == 'ts') {
const info = segs.split('/'); const info = segs.split('/');

Loading…
Cancel
Save