X/IOS/js/lib/utils.js

80 lines
2.1 KiB
JavaScript
Raw Normal View History

2023-08-16 16:10:21 +03:00
function isSub(ext) {
return ext == "srt" || ext == "ass" || ext == "ssa";
}
function getSize(size) {
if (size <= 0) return "";
if (size > 1024 * 1024 * 1024 * 1024.0) {
size /= (1024 * 1024 * 1024 * 1024.0);
return size.toFixed(2) + "TB";
} else if (size > 1024 * 1024 * 1024.0) {
size /= (1024 * 1024 * 1024.0);
return size.toFixed(2) + "GB";
} else if (size > 1024 * 1024.0) {
size /= (1024 * 1024.0);
return size.toFixed(2) + "MB";
} else {
size /= 1024.0;
return size.toFixed(2) + "KB";
}
}
function removeExt(text) {
return text.indexOf('.') > -1 ? text.substring(0, text.lastIndexOf(".")) : text;
}
async function log(str) {
console.debug(str);
}
function isVideoFormat(url) {
var RULE = /http((?!http).){12,}?\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg|m4a|mp3)\?.*|http((?!http).){12,}\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg|m4a|mp3)|http((?!http).)*?video\/tos*/;
if (url.indexOf("url=http") > -1 || url.indexOf(".js") > -1 || url.indexOf(".css") > -1 || url.indexOf(".html") > -1) {
return false;
}
return RULE.test(url);
}
function jsonParse(input, json) {
var jsonPlayData = JSON.parse(json);
var url = jsonPlayData.url;
if (url.startsWith("//")) {
url = "https:" + url;
}
if (!url.startsWith("http")) {
return null;
}
if (url === input) {
if (!isVideoFormat(url)) {
return null;
}
}
var headers = {};
var ua = jsonPlayData["user-agent"] || "";
if (ua.trim().length > 0) {
headers["User-Agent"] = " " + ua;
}
var referer = jsonPlayData.referer || "";
if (referer.trim().length > 0) {
headers["Referer"] = " " + referer;
}
var taskResult = {
header: headers,
url: url
};
return taskResult;
}
function debug(obj) {
for (var a in obj) {
if (typeof(obj[a]) == "object") {
debug(obj[a]); //递归遍历
} else {
console.debug(a + "=" + obj[a]);
}
}
}
export { isSub, getSize, removeExt, log, isVideoFormat, jsonParse, debug};