73 lines
2.5 KiB
JavaScript
73 lines
2.5 KiB
JavaScript
// 这是一个最简示例解析器插件, 用于展示插件所需实现的基本功能
|
|
// 此插件将会模拟处理 YouTube 的视频链接
|
|
|
|
/**
|
|
* 插件元数据
|
|
* 版本号是 saveany-bot 本体支持的插件规范版本号, 必须提供
|
|
*/
|
|
const metadata = {
|
|
name: "Example Parser", // 插件名称
|
|
version: "1.0.0", // 插件版本号
|
|
description: "A parser for example links", // 插件描述
|
|
author: "Krau", // 插件作者
|
|
}
|
|
|
|
// 你可以使用 console.log 来在终端中使用 go 的 logger 打印信息
|
|
console.log("Parser loaded", "name", metadata.name);
|
|
|
|
/**
|
|
* canHandle 函数用于判断当前解析器能否解析给定的 URL
|
|
*/
|
|
const canHandle = function (url) {
|
|
// 这里我们简单地检查 URL 是否包含 "youtube.com/watch?v"
|
|
return url.includes("youtube.com/watch?v");
|
|
}
|
|
|
|
/**
|
|
* 解析 url 并返回一个 Item 对象, 类型定义在 pkg/parser.go 中
|
|
*/
|
|
const parse = function (url) {
|
|
var result = {
|
|
// 元信息
|
|
site: "YouTube",
|
|
url: url,
|
|
title: "测试 YouTube 视频",
|
|
author: "某视频作者",
|
|
description: "这是一个测试视频",
|
|
tags: ["test", "youtube"],
|
|
// 资源(可下载的文件)列表
|
|
resources: [
|
|
{
|
|
url: "https://example.com/video1.mp4", // 文件直链
|
|
filename: "somevideo.mp4", // 文件名
|
|
mime_type: "video/mp4", // 文件 MIME 类型, 可选
|
|
extension: "mp4", // 文件扩展名, 可选
|
|
size: 100 * 1024 * 1024, // 文件大小, 单位为字节, 未知可以设置为 0
|
|
hash: {}, // 文件哈希, 可选, 格式为 {"md5": "xxx", "sha256": "xxx"} 等
|
|
headers: {}, // 下载文件时所需的 HTTP 头部, 可选, 例如 {"User-Agent": "Mozilla/5.0"}
|
|
extra: {} // 额外信息, 可选, 可以包含任何自定义数据
|
|
},
|
|
{
|
|
url: "https://example.com/picture1.png",
|
|
filename: "picture1.png",
|
|
mime_type: "image/png",
|
|
extension: "png",
|
|
size: 1 * 1024 * 1024,
|
|
hash: {},
|
|
headers: {},
|
|
extra: {}
|
|
}
|
|
],
|
|
extra: {}
|
|
};
|
|
return result;
|
|
}
|
|
|
|
// 最后需要调用 registerParser 来注册这个解析器
|
|
registerParser({
|
|
metadata,
|
|
canHandle,
|
|
parse
|
|
});
|
|
|
|
// 更进一步的插件编写信息, 请查看 plugins/example_parser_danbooru.js
|