{"record":{"id":"e492f1596937ab6e","repo":"hmjz100/LinkSwift","slug":"br-e492f1","errorCode":null,"errorMessage":"提示：<br/>文件夹是空的哦~","messagePattern":"提示：<br/>文件夹是空的哦~","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"warning","filePath":"（改）网盘直链下载助手.user.js","lineNumber":6098,"sourceCode":"\t\t\t\t\t\tclearInterval(interval);\r\n\t\t\t\t\t\tthrow new Error(\"提示：<br/>时间太长，我先撤下啦~\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}, 1000);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// 获取选择的文件列表\r\n\t\t\tconst selects = this.getSelectedList();\r\n\t\t\tif (selects.length === 0) throw new Error(\"提示：<br/>请勾选要下载的文件哦~\");\r\n\r\n\t\t\t$doc.find(\".loading-popup .loading-title\").html(`链接获取中`);\r\n\t\t\t$doc.find(\".loading-popup .swal2-html-container\").html(`<div>正在获取文件对应的下载链接~</div>`);\r\n\r\n\t\t\tlet files = selects.filter(f => !f.isdir);\r\n\t\t\tconst dirs = selects.filter(f => f.isdir);\r\n\t\t\tif (temp.page === \"home\" || temp.page === \"main\") {\r\n\t\t\t\tif (dirs.length > 0) files = files.concat(await this.getFilesList(dirs, token, files.length));\r\n\t\t\t\tif (!files.length) throw new Error(\"提示：<br/>文件夹是空的哦~\");\r\n\r\n\t\t\t\t$doc.find(\".loading-popup .loading-title\").html(`链接获取中`);\r\n\t\t\t\t$doc.find(\".loading-popup .swal2-html-container\").html(`<div>正在获取文件对应的下载链接~</div>`);\r\n\r\n\t\t\t\tfiles = await this.getFilesUrl(files, token).catch(e => {\r\n\t\t\t\t\tif (e instanceof Error) throw e;\r\n\t\t\t\t\tthrow new Error(e?.message || e || \"[百度网盘] 获取文件 URL 失败\");\r\n\t\t\t\t});\r\n\t\t\t} else if (temp.page === \"share\") {\r\n\t\t\t\tconst shareData = await this.getShareData();\r\n\r\n\t\t\t\tconst sign = await base.get(`${config.$baidu.api.getShareSign}&surl=1${shareData.share.url}$bdstoken=${shareData.baidu.token}&logid=${base.encodeBase(shareData.baidu.id)}`);\r\n\t\t\t\tif (sign?.data?.sign && sign?.data?.timestamp) {\r\n\t\t\t\t\tshareData.sign = sign.data.sign;\r\n\t\t\t\t\tshareData.timestamp = sign.data.timestamp;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfiles = await this.getShareFilesUrl(files, shareData, token).catch(e => {\r","sourceCodeStart":6080,"sourceCodeEnd":6116,"githubUrl":"https://github.com/hmjz100/LinkSwift/blob/417ea5e28a3e1a90339710e17356e9fd22b8a34b/（改）网盘直链下载助手.user.js#L6080-L6116","documentation":"Thrown when all selected items are folders and, after recursively fetching their contents via getFilesList(), the resulting `files` array is still empty — i.e. every selected folder contains no downloadable files. The script flattens folder contents but ends with zero file entries to resolve URLs for.","triggerScenarios":"`selects` contains only folders (`f.isdir` truthy); `this.getFilesList(dirs, token, files.length)` returns an empty array (folders are empty or enumeration fails silently), so `if (!files.length) throw new Error(\"提示：<br/>文件夹是空的哦~\")` fires.","commonSituations":"User selects newly created/empty folders in Baidu Netdisk and clicks download; folder listing API returns pages filtered out by the script; user checks whole folder tree that contains only nested empty folders.","solutions":["Select actual files, or folders that contain files, before downloading.","Open an empty folder in the Netdisk UI and delete it or move files into it first.","If the folder is not empty, check the script/Netdisk API token validity — an expired token can make getFilesList() return nothing."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"const dirs = selects.filter(f => f.isdir);\nconst flatFiles = await this.getFilesList(dirs, token, selects.filter(f => !f.isdir).length);\nif (!flatFiles.length) { alert('所选文件夹内没有文件'); return; }","typeGuard":"null","tryCatchPattern":"try { await getLinks(); } catch (e) { if (String(e.message).includes('文件夹是空的')) { alert('所选文件夹为空，请选择含文件的文件夹'); return; } throw e; }","preventionTips":["Don't select empty or file-less folders for download","Verify folder contents in the Netdisk UI before bulk-selecting","Ensure your token is valid so folder listing doesn't silently return empty"],"tags":["userscript","baidu-netdisk","empty-folder"],"backgroundTag":"empty-folder-no-downloadable-files","analyzedSha":"417ea5e28a3e1a90339710e17356e9fd22b8a34b","analyzedAt":"2026-09-02T18:13:32.837Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-09T21:17:11.164Z"}