|
|
|
@@ -69,14 +69,22 @@ export async function saveFromShare(cookie, nickname, shareUrl, sourceTitle, ret
|
|
|
|
const fidTokens = topFiles.map(f => f.share_fid_token);
|
|
|
|
const fidTokens = topFiles.map(f => f.share_fid_token);
|
|
|
|
// 按日期创建/查找文件夹,每天的转存存入当天文件夹
|
|
|
|
// 按日期创建/查找文件夹,每天的转存存入当天文件夹
|
|
|
|
await quark_api.humanDelay();
|
|
|
|
await quark_api.humanDelay();
|
|
|
|
const saveDirName = retrySave
|
|
|
|
const saveDirName = quark_api.dailyFolderName();
|
|
|
|
? quark_api.dailyFolderName() + '_' + Math.random().toString(36).slice(2, 6)
|
|
|
|
console.log(`[Quark] saveFromShare: looking for/create dir "${saveDirName}"`);
|
|
|
|
: quark_api.dailyFolderName();
|
|
|
|
|
|
|
|
console.log(`[Quark] saveFromShare: looking for/create dir "${saveDirName}"${retrySave ? ' (retry)' : ''}`);
|
|
|
|
|
|
|
|
const saveDirFid = await findOrCreateDir(cookie, saveDirName);
|
|
|
|
const saveDirFid = await findOrCreateDir(cookie, saveDirName);
|
|
|
|
const targetPdirFid = saveDirFid || '0';
|
|
|
|
let targetPdirFid = saveDirFid || '0';
|
|
|
|
|
|
|
|
let retrySubFolderFid = '';
|
|
|
|
if (saveDirFid) {
|
|
|
|
if (saveDirFid) {
|
|
|
|
console.log(`[Quark] Using save directory: ${saveDirName} (fid: ${saveDirFid})`);
|
|
|
|
console.log(`[Quark] Using save directory: ${saveDirName} (fid: ${saveDirFid})`);
|
|
|
|
|
|
|
|
if (retrySave) {
|
|
|
|
|
|
|
|
const subName = 'retry_' + Math.random().toString(36).slice(2, 6);
|
|
|
|
|
|
|
|
console.log(`[Quark] Retry: creating subfolder "${subName}" inside "${saveDirName}"`);
|
|
|
|
|
|
|
|
retrySubFolderFid = await findOrCreateDir(cookie, subName, saveDirFid);
|
|
|
|
|
|
|
|
if (retrySubFolderFid) {
|
|
|
|
|
|
|
|
targetPdirFid = retrySubFolderFid;
|
|
|
|
|
|
|
|
console.log(`[Quark] Retry: saving to subfolder ${subName} (fid: ${retrySubFolderFid})`);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
else {
|
|
|
|
console.log(`[Quark] WARNING: failed to create/find dir "${saveDirName}", saving to root`);
|
|
|
|
console.log(`[Quark] WARNING: failed to create/find dir "${saveDirName}", saving to root`);
|
|
|
|
@@ -109,6 +117,10 @@ export async function saveFromShare(cookie, nickname, shareUrl, sourceTitle, ret
|
|
|
|
shareFid = savedFids[0];
|
|
|
|
shareFid = savedFids[0];
|
|
|
|
savedFolderName = topFiles[0]?.file_name || '';
|
|
|
|
savedFolderName = topFiles[0]?.file_name || '';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (retrySave && retrySubFolderFid) {
|
|
|
|
|
|
|
|
shareFid = retrySubFolderFid;
|
|
|
|
|
|
|
|
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
|
|
|
|
// Step 6: Create share link FIRST (before rename), so all files are guaranteed to be shared
|
|
|
|
await quark_api.humanDelay();
|
|
|
|
await quark_api.humanDelay();
|
|
|
|
let shareUrlResult = '';
|
|
|
|
let shareUrlResult = '';
|
|
|
|
@@ -241,13 +253,13 @@ export async function saveFromShare(cookie, nickname, shareUrl, sourceTitle, ret
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Create a new directory at root.
|
|
|
|
* Create a new directory at root.
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
export async function createDir(cookie, dirName) {
|
|
|
|
export async function createDir(cookie, dirName, parentFid = '0') {
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
const resp = await fetch(`https://drive-pc.quark.cn/1/clouddrive/file?${quark_api.makeQuery()}`, {
|
|
|
|
const resp = await fetch(`https://drive-pc.quark.cn/1/clouddrive/file?${quark_api.makeQuery()}`, {
|
|
|
|
method: 'POST',
|
|
|
|
method: 'POST',
|
|
|
|
headers: { ...quark_api.getHeaders(cookie), 'Content-Type': 'application/json' },
|
|
|
|
headers: { ...quark_api.getHeaders(cookie), 'Content-Type': 'application/json' },
|
|
|
|
body: JSON.stringify({
|
|
|
|
body: JSON.stringify({
|
|
|
|
pdir_fid: '0',
|
|
|
|
pdir_fid: parentFid,
|
|
|
|
file_name: dirName,
|
|
|
|
file_name: dirName,
|
|
|
|
dir: true,
|
|
|
|
dir: true,
|
|
|
|
dir_path: '',
|
|
|
|
dir_path: '',
|
|
|
|
@@ -270,9 +282,9 @@ export async function createDir(cookie, dirName) {
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Find an existing directory by name, or create it if not found.
|
|
|
|
* Find an existing directory by name, or create it if not found.
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
export async function findOrCreateDir(cookie, dirName) {
|
|
|
|
export async function findOrCreateDir(cookie, dirName, parentFid = '0') {
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
const rootFiles = await quark_api.listDirAllPages(cookie, '0');
|
|
|
|
const rootFiles = await quark_api.listDirAllPages(cookie, parentFid);
|
|
|
|
const existing = rootFiles.find(f => f.dir && f.file_name === dirName);
|
|
|
|
const existing = rootFiles.find(f => f.dir && f.file_name === dirName);
|
|
|
|
if (existing?.fid) {
|
|
|
|
if (existing?.fid) {
|
|
|
|
console.log(`[Quark] Found existing daily folder: ${dirName} (fid: ${existing.fid})`);
|
|
|
|
console.log(`[Quark] Found existing daily folder: ${dirName} (fid: ${existing.fid})`);
|
|
|
|
@@ -283,7 +295,7 @@ export async function findOrCreateDir(cookie, dirName) {
|
|
|
|
catch (err) {
|
|
|
|
catch (err) {
|
|
|
|
console.log(`[Quark] findOrCreateDir list error: ${err.message}`);
|
|
|
|
console.log(`[Quark] findOrCreateDir list error: ${err.message}`);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
const fid = await createDir(cookie, dirName);
|
|
|
|
const fid = await createDir(cookie, dirName, parentFid);
|
|
|
|
console.log(`[Quark] createDir result for "${dirName}": ${fid || 'null'}`);
|
|
|
|
console.log(`[Quark] createDir result for "${dirName}": ${fid || 'null'}`);
|
|
|
|
return fid;
|
|
|
|
return fid;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|