release: v0.4.0
This commit is contained in:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user