feat: 增加短链接服务

This commit is contained in:
zhiyu1998 2024-08-19 17:49:59 +08:00
parent f4fae9d8b6
commit b638350d03
3 changed files with 41 additions and 12 deletions

View File

@ -76,7 +76,7 @@ import {
retryAxiosReq, saveJsonToFile,
secondsToTime,
testProxy,
truncateString
truncateString, urlTransformShortLink
} from "../utils/common.js";
import { checkAndRemoveFile, deleteFolderRecursive, getMediaFilesAndOthers, mkdirIfNotExists } from "../utils/file.js";
import GeneralLinkAdapter from "../utils/general-link-adapter.js";
@ -637,20 +637,22 @@ export class tools extends plugin {
headers: BILI_HEADER
})).json();
const result = resp.result;
const { views, danmakus, likes, coins, favorites, favorite } = result.stat;
// 封装成可以format的数据
const dataProcessMap = {
"播放": result.stat.views,
"弹幕": result.stat.danmakus,
"点赞": result.stat.likes,
"分享": result.stat.coins,
"追番": result.stat.favorites,
"收藏": result.stat.favorite,
"播放": views,
"弹幕": danmakus,
"点赞": likes,
"分享": coins,
"追番": favorites,
"收藏": favorite,
};
e.reply([
segment.image(resp.result.cover),
`${ this.identifyPrefix }识别:哔哩哔哩番剧,${ result.title }\n🎯 评分: ${ result?.rating?.score ?? '-' } / ${ result?.rating?.count ?? '-' }\n📺 ${ result.new_ep.desc }, ${ result.seasons[0].new_ep.index_show }\n`,
`${ formatBiliInfo(dataProcessMap) }`,
`\n\n在线观看: ${ANIME_SERIES_SEARCH_LINK}${encodeURI(result.title)}`
], true)
`\n\n在线观看: ${ await urlTransformShortLink(ANIME_SERIES_SEARCH_LINK + result.title) }`
], true);
}
/**

View File

@ -151,3 +151,9 @@ export const MESSAGE_RECALL_TIME = 60;
* @type {number}
*/
export const DOWNLOAD_WAIT_DETECT_FILE_TIME = 3000;
/**
* 短链接接口
* @type {string}
*/
export const SHORT_LINKS = "https://smolurl.com/api/links";

View File

@ -1,14 +1,14 @@
import axios from "axios";
import { exec } from "child_process";
import https from 'https';
import { HttpsProxyAgent } from 'https-proxy-agent';
import fetch from "node-fetch";
import fs from "node:fs";
import os from "os";
import path from 'path';
import { BILI_DOWNLOAD_METHOD, COMMON_USER_AGENT, TEN_THOUSAND } from "../constants/constant.js";
import { BILI_DOWNLOAD_METHOD, COMMON_USER_AGENT, SHORT_LINKS, TEN_THOUSAND } from "../constants/constant.js";
import { mkdirIfNotExists } from "./file.js";
export function generateRandomStr(randomlength = 16) {
const base_str = 'ABCDEFGHIGKLMNOPQRSTUVWXYZabcdefghigklmnopqrstuvwxyz0123456789='
let random_str = ''
@ -470,3 +470,24 @@ export function checkToolInCurEnv(someCommand) {
});
});
}
/**
* 转换短链接
* @param url
* @returns {Promise<string>}
*/
export async function urlTransformShortLink(url) {
const data = {
url: `${encodeURI(url)}`
};
const resp = await fetch(SHORT_LINKS, {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify(data)
}).then(response => response.json());
return await resp.data.short_url;
}