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.

73 lines
2.4 KiB

/**
* 基于Bot跟Machete的TaJian对接
* 按filestie.io标准把Bot爬虫返回的数据格式化保存为.url及其说明文件
*/
import common from './common.mjs';
import fs from 'node:fs';
import { writeFile } from 'node:fs/promises';
import path from 'node:path';
class TaJian {
constructor(data_save_dir) {
this.save_dir = data_save_dir;
}
/*
* Example:
[InternetShortcut]
URL=https://microsoft.com/
*/
async saveUrlShortcut(filename, data) {
try {
const dirPath = path.resolve(this.save_dir);
const filepath = `${dirPath}/${filename}.url`;
const shortUrlContent = `\[InternetShortcut\]
URL=${data.url}
`;
await writeFile(filepath, shortUrlContent, { encoding: 'utf8' });
}catch(error) {
console.error('Save short url file failed: %s', error);
return false;
}
return true;
}
async saveDescriptionFiles(filename, data) {
try {
const dirPath = path.resolve(this.save_dir);
//save title
let filepath = `${dirPath}/${filename}_title.txt`;
let content = data.title;
await writeFile(filepath, content, { encoding: 'utf8' });
//save cover image
if (typeof(data.cover_base64) != 'undefined' && data.cover_base64) {
filepath = `${dirPath}/${filename}.${data.cover_type}`;
content = Buffer.from(data.cover_base64, "base64"); //保存图片文件
await writeFile(filepath, content, { encoding: 'utf8' });
filepath = `${dirPath}/${filename}_cover.txt`;
content = `${filename}.${data.cover_type}`; //保存图片路径
await writeFile(filepath, content, { encoding: 'utf8' });
}else if (typeof(data.cover) != 'undefined' && data.cover) {
filepath = `${dirPath}/${filename}_cover.txt`;
content = data.cover; //保存图片网址
await writeFile(filepath, content, { encoding: 'utf8' });
}
}catch(error) {
console.error('Save description files failed: %s', error);
return false;
}
return true;
}
}
export default TaJian;