Hero scripts of machete.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

94 lines
2.3 KiB

//公用方法
import { rm as removeFile } from 'node:fs/promises';
import { readdir, readFile } from 'node:fs/promises';
import path from 'node:path';
export default {
getTimeString: function(locales) {
const today = new Date();
if (typeof(locales) == 'undefined') {locales = 'zh-CN';}
return today.toLocaleString(locales);
},
getTimestampInSeconds: function() {
return Math.floor(Date.now() / 1000);
},
removeFile: async function(filepath) {
let done = false;
try {
done = await removeFile(filepath, {force: true});
}catch(error) {
console.error('Remove task file failed: %s', error);
}
return done;
},
getBotName: function(url) {
let botName = '';
if (/douyin\.com/ig.test(url)) {
botName = 'douyin';
}else if (/kuaishou\.com/ig.test(url)) {
botName = 'kuaishou';
}else if (/ixigua\.com/ig.test(url)) {
botName = 'xigua';
}else if (/b23\.tv/ig.test(url) || /bilibili\.com/ig.test(url)) {
botName = 'bilibili';
}
return botName;
},
getAbsoluteUrl: function(url) {
if (/^\/\//.test(url)) {
url = `https:${url}`;
}
return url;
},
getImageType: function(url) {
let imgType = 'jpeg';
if (/\.jpe?g/ig.test(url)) {
imgType = 'jpeg';
}else if (/\.png/ig.test(url)) {
imgType = 'png';
}else if (/\.webp?/ig.test(url)) {
imgType = 'webp';
}else if (/\.gif?/ig.test(url)) {
imgType = 'gif';
}
return imgType;
},
loadCustomizeConfig: async function(configFileName) {
let configs = {};
try {
let filepath = path.resolve(configFileName);
let content = await readFile(filepath, { encoding: 'utf8' });
if (content) {
configs = JSON.parse(content);
}
}catch(error) {
console.error('Get config from %s failed: %s', configFileName, error);
}
return configs;
},
mergeConfigs: function(myConfig, configs) {
for (const key in myConfig) {
configs[key] = myConfig[key];
}
return configs;
}
};