49 lines
1.3 KiB
TypeScript
49 lines
1.3 KiB
TypeScript
import { getConfig } from '@/lib/config';
|
|
|
|
import { listTianyiShareVideos } from './tianyi.client';
|
|
import {
|
|
createTianyiNetdiskSession,
|
|
getTianyiNetdiskSession,
|
|
parseTianyiNetdiskId,
|
|
refreshTianyiNetdiskSession,
|
|
} from './tianyi-session-cache';
|
|
|
|
export async function resolveTianyiSession(id: string) {
|
|
const config = await getConfig();
|
|
const tianyiConfig = config.NetDiskConfig?.Tianyi;
|
|
if (!tianyiConfig?.Enabled || !tianyiConfig.Account || !tianyiConfig.Password) {
|
|
throw new Error('天翼云盘未配置或未启用');
|
|
}
|
|
|
|
let session = refreshTianyiNetdiskSession(id) || getTianyiNetdiskSession(id);
|
|
if (!session) {
|
|
const payload = parseTianyiNetdiskId(id);
|
|
const result = await listTianyiShareVideos(
|
|
payload.shareUrl,
|
|
tianyiConfig.Account,
|
|
tianyiConfig.Password,
|
|
payload.passcode || ''
|
|
);
|
|
session = createTianyiNetdiskSession({
|
|
title: result.title,
|
|
shareUrl: payload.shareUrl,
|
|
passcode: payload.passcode,
|
|
shareId: result.shareId,
|
|
shareMode: result.shareMode,
|
|
isFolder: result.isFolder,
|
|
accessCode: result.accessCode,
|
|
files: result.files,
|
|
});
|
|
}
|
|
|
|
if (!session) {
|
|
throw new Error('天翼云盘播放信息恢复失败');
|
|
}
|
|
|
|
return {
|
|
session,
|
|
account: tianyiConfig.Account,
|
|
password: tianyiConfig.Password,
|
|
};
|
|
}
|