release: v0.4.0

This commit is contained in:
2026-05-18 05:11:57 +08:00
parent b758391861
commit da5bd01535
147 changed files with 8876 additions and 6941 deletions

View File

@@ -1,6 +1,6 @@
// @ts-nocheck
import * as quark_api from "./quark-api";
import * as quark_share from "./quark-share";
import * as q from './quark-api';
import * as qs from './quark-share';
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
@@ -54,12 +54,12 @@ export async function saveFromShare(cookie, nickname, shareUrl, sourceTitle, ret
return { success: false, message: 'Invalid share URL: could not extract share token' };
}
// Step 1: Acquire stoken
const stoken = await quark_share.acquireStoken(cookie, pwdId);
const stoken = await qs.acquireStoken(cookie, pwdId);
if (!stoken) {
return { success: false, message: '😅 Oops资源好像偷偷溜走了换个链接试试吧' };
}
// Step 2: Get share detail
const shareInfo = await quark_share.getShareFiles(cookie, pwdId, stoken);
const shareInfo = await qs.getShareFiles(cookie, pwdId, stoken);
if (!shareInfo || !shareInfo.files || shareInfo.files.length === 0) {
return { success: false, message: '🌚 空的!这个分享里啥都没有…' };
}
@@ -68,8 +68,8 @@ export async function saveFromShare(cookie, nickname, shareUrl, sourceTitle, ret
const fids = topFiles.map(f => f.fid);
const fidTokens = topFiles.map(f => f.share_fid_token);
// 按日期创建/查找文件夹,每天的转存存入当天文件夹
await quark_api.humanDelay();
const saveDirName = quark_api.dailyFolderName();
await q.humanDelay();
const saveDirName = q.dailyFolderName();
console.log(`[Quark] saveFromShare: looking for/create dir "${saveDirName}"`);
const saveDirFid = await findOrCreateDir(cookie, saveDirName);
let targetPdirFid = saveDirFid || '0';
@@ -90,18 +90,18 @@ export async function saveFromShare(cookie, nickname, shareUrl, sourceTitle, ret
console.log(`[Quark] WARNING: failed to create/find dir "${saveDirName}", saving to root`);
}
// Step 3: Save top-level item(s) to the target directory
const saveResult = await quark_share.saveFiles(cookie, pwdId, stoken, fids, fidTokens.filter(Boolean), targetPdirFid);
const saveResult = await qs.saveFiles(cookie, pwdId, stoken, fids, fidTokens.filter(Boolean), targetPdirFid);
if (!saveResult.success) {
return saveResult;
}
const taskId = saveResult.taskId;
// Step 4: Wait for save task to complete (poll up to 30s)
const savedFids = await quark_share.waitForTask(cookie, taskId, 30000);
const savedFids = await qs.waitForTask(cookie, taskId, 30000);
if (!savedFids || savedFids.length === 0) {
return { success: true, message: '文件已保存,但获取保存结果超时' };
}
// Step 5: Magic rename files — with random delay to avoid detection
await quark_api.humanDelay();
await q.humanDelay();
const renamed = [];
let shareFid = '';
let savedFolderName = '';
@@ -122,7 +122,7 @@ export async function saveFromShare(cookie, nickname, shareUrl, sourceTitle, ret
console.log(`[Quark] Retry: sharing subfolder (fid: ${retrySubFolderFid}) instead of saved content`);
}
// Step 6: Create share link FIRST (before rename), so all files are guaranteed to be shared
await quark_api.humanDelay();
await q.humanDelay();
let shareUrlResult = '';
let sharePwdResult = '';
let shareMsg = '';
@@ -146,7 +146,7 @@ export async function saveFromShare(cookie, nickname, shareUrl, sourceTitle, ret
// ── Single folder share ──
const savedDirFid = savedFids[0];
// List files inside the saved directory
const dirFiles = await quark_api.listDir(cookie, savedDirFid);
const dirFiles = await q.listDir(cookie, savedDirFid);
if (dirFiles && dirFiles.length > 0) {
for (const file of dirFiles) {
if (file.dir)
@@ -255,9 +255,9 @@ export async function saveFromShare(cookie, nickname, shareUrl, sourceTitle, ret
*/
export async function createDir(cookie, dirName, parentFid = '0') {
try {
const resp = await fetch(`https://drive-pc.quark.cn/1/clouddrive/file?${quark_api.makeQuery()}`, {
const resp = await fetch(`q.QUARK_DRIVE_HOST + q.EP.FILE + '?'${q.makeQuery()}`, {
method: 'POST',
headers: { ...quark_api.getHeaders(cookie), 'Content-Type': 'application/json' },
headers: { ...q.getHeaders(cookie), 'Content-Type': 'application/json' },
body: JSON.stringify({
pdir_fid: parentFid,
file_name: dirName,
@@ -284,7 +284,7 @@ export async function createDir(cookie, dirName, parentFid = '0') {
*/
export async function findOrCreateDir(cookie, dirName, parentFid = '0') {
try {
const rootFiles = await quark_api.listDirAllPages(cookie, parentFid);
const rootFiles = await q.listDirAllPages(cookie, parentFid);
const existing = rootFiles.find(f => f.dir && f.file_name === dirName);
if (existing?.fid) {
console.log(`[Quark] Found existing daily folder: ${dirName} (fid: ${existing.fid})`);
@@ -313,7 +313,7 @@ export async function countRecursive(cookie, pdirFid) {
if (visited.has(fid))
continue;
visited.add(fid);
const files = await quark_api.listDir(cookie, fid);
const files = await q.listDir(cookie, fid);
if (!files)
continue;
for (const f of files) {