* 创建用于下载页面的 HTML * @author 油小猴 * @author hmjz100 * @param {Array} configs - 用于配置生成 HTML 的参数 * @returns {String} 生成的 HTML 内容 * @description 详见代码
(configs)
| 3263 | * @description 详见代码 |
| 3264 | */ |
| 3265 | generateDom(configs) { |
| 3266 | if (base.isType(configs) !== "array" && configs.length !== 2) return message.error("提示:<br/>配置解析失败~"); |
| 3267 | let list = (Array.isArray(configs[0]) ? configs[0] : []); |
| 3268 | if (!list.length) return message.error("提示:<br/>获取下载链接失败,刷新网页后再试试吧~"); |
| 3269 | let { |
| 3270 | isFolder, |
| 3271 | getFileName, |
| 3272 | getFileSize, |
| 3273 | getFileLink, |
| 3274 | getFileMirror, |
| 3275 | convert = {}, |
| 3276 | tooltip = {} |
| 3277 | } = (base.isType(configs[1]) === "object" ? configs[1] : {}); |
| 3278 | let content = $(`<div><div class="pl-main"></div><div class="pl-extra"></div></div>`); |
| 3279 | let allLink = []; |
| 3280 | list.forEach((v, i) => { |
| 3281 | i = i + 1; |
| 3282 | if (isFolder(v)) return; |
| 3283 | let filename = getFileName(v); |
| 3284 | let size = getFileSize(v); |
| 3285 | let dlink = getFileLink(v); |
| 3286 | let mirror = base.isType(getFileMirror) !== "undefined" ? getFileMirror(getFileLink(v)) : undefined; |
| 3287 | if (!dlink || !dlink.includes("http")) { |
| 3288 | content.find(".pl-main").append(`<div class="pl-item"> |
| 3289 | <div class="pl-item-name listener-tip" data-size="${size}"><div class="name">${filename}</div><div class="size">${base.sizeFormat(size)}</div></div> |
| 3290 | <div class="pl-item-message">${dlink ? dlink : "获取下载链接失败,刷新网页后再试试吧~"}</div> |
| 3291 | </div>`) |
| 3292 | } else { |
| 3293 | if (temp.mode === "api") { |
| 3294 | allLink.push(dlink); |
| 3295 | content.find(".pl-main").append(`<div class="pl-item" data-index="${i}" data-link="${dlink}" data-name="${filename}" data-size="${size}"> |
| 3296 | <div class="pl-item-name listener-tip"><div class="name">${filename}</div><div class="size">${base.sizeFormat(size)}</div></div> |
| 3297 | <button class="pl-item-link pl-btn-primary pl-btn-default listener-api-download enhance listener-tip" data-title="通过脚本跨域请求下载文件,已支持多线程、智能多分片,显示预估剩余时间、下载速度;<br/>具体线程取决于浏览器的限制,所以非<b>必要情况(例如系统环境无法安装程序)</b>下,不建议使用此功能!"><svg class="pl-icon"><use xlink:href="#pl-icon-fa-downward"/></svg>增强下载 (Beta)</button> |
| 3298 | <button class="pl-item-link pl-btn-primary pl-btn-info listener-api-download normal listener-tip" data-link="${dlink}" data-filename="${filename}" data-title="通过浏览器访问链接下载文件,适用于支持 iframe 的浏览器<br/>点击后需等待浏览器弹出提示才可点击下个下载,否则只会下载后者"><svg class="pl-icon"><use xlink:href="#pl-icon-fa-downward"/></svg>直接下载</button> |
| 3299 | <button class="pl-btn-primary pl-btn-default listener-idm-download listener-tip" data-filename="${filename}" data-filesize="${size}" data-link="${dlink}" data-title="通过 IDM 扩展的捕获协议,将链接推送至 IDM,理论上仅适用于版本较新的 IDM。"><svg class="pl-icon"><use xlink:href="#pl-icon-fa-cloud-arrow-up"/></svg><span>推送至 IDM (Beta)</span></button> |
| 3300 | <button class="pl-item-copy pl-btn-primary pl-btn-success listener-copy listener-tip" data-copy='${filename}' data-title="点击复制文件名"><svg class="pl-icon"><use xlink:href="#pl-icon-fa-copy"/></svg>复制名称</button> |
| 3301 | <button class="pl-item-copy pl-btn-primary pl-btn-warning listener-copy copy listener-tip" data-copy='${dlink}' data-title="点击复制下载链接"><svg class="pl-icon"><use xlink:href="#pl-icon-fa-copy"/></svg>复制链接</button> |
| 3302 | <div class="pl-item-downing" style="display:none"> |
| 3303 | <div class="pl-progress"> |
| 3304 | <div class="progress foot"><span class="text">正在加载...</span></div> |
| 3305 | <div class="progress head"><span class="text">正在加载...</span></div> |
| 3306 | </div> |
| 3307 | <button class="pl-btn-primary pl-btn-danger stop"><svg class="pl-icon"><use xlink:href="#pl-icon-fa-x-mark"/></svg>取消下载</button> |
| 3308 | <button class="pl-btn-primary pl-btn-info back" style="display:none"><svg class="pl-icon"><use xlink:href="#pl-icon-fa-x-mark"/></svg>返回</button> |
| 3309 | </div> |
| 3310 | </div>`); |
| 3311 | } |
| 3312 | if (temp.mode === "curl") { |
| 3313 | let finalink = base.convertLinkToCurl(dlink, filename, convert?.curl); |
| 3314 | allLink.push(finalink); |
| 3315 | content.find(".pl-main").append(`<div class="pl-item"> |
| 3316 | <div class="pl-item-name listener-tip" data-size="${size}"><div class="name">${filename}</div><div class="size">${base.sizeFormat(size)}</div></div> |
| 3317 | <a class="pl-item-link listener-copy listener-tip" data-copy='${finalink}' data-title="点击复制 curl 命令行">${finalink}<br/><svg class="pl-icon"><use xlink:href="#pl-icon-fa-copy"/></svg>复制 ${filename} 下载命令行</a> |
| 3318 | </div>`); |
| 3319 | } |
| 3320 | if (temp.mode === "aria2") { |
| 3321 | let finalink = base.convertLinkToAria2(dlink, filename, convert?.aria2); |
| 3322 | allLink.push(finalink); |
nothing calls this directly
no test coverage detected