/** * 基于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) { //console.log('TaJian try to save shortcut url'); 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) { //console.log('TaJian try to save description files'); 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' }); 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 { 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;