Files
MoonTVPlus/src/lib/netdisk/quark-session-resolver.ts
T

38 lines
1.2 KiB
TypeScript

import { getConfig } from '@/lib/config';
import { listQuarkShareVideos } from './quark.client';
import {
createQuarkNetdiskSession,
getQuarkNetdiskSession,
parseQuarkNetdiskId,
refreshQuarkNetdiskSession,
} from './quark-session-cache';
export async function resolveQuarkSession(id: string) {
const config = await getConfig();
const quarkConfig = config.NetDiskConfig?.Quark;
if (!quarkConfig?.Enabled || !quarkConfig.Cookie) {
throw new Error('夸克网盘未配置或未启用');
}
let session = refreshQuarkNetdiskSession(id) || getQuarkNetdiskSession(id);
if (!session) {
const payload = parseQuarkNetdiskId(id);
const result = await listQuarkShareVideos(payload.shareUrl, quarkConfig.Cookie, payload.passcode || '');
session = createQuarkNetdiskSession({
title: result.title,
shareUrl: payload.shareUrl,
passcode: payload.passcode,
shareId: result.shareId,
shareToken: result.shareToken,
files: result.files,
});
}
if (!session) {
throw new Error('夸克网盘播放信息恢复失败');
}
return { session, cookie: quarkConfig.Cookie, savePath: quarkConfig.SavePath || '/' };
}