MCPcopy
hub / github.com/hmjz100/LinkSwift / generateDom

Function generateDom

(改)网盘直链下载助手.user.js:3265–3393  ·  view source on GitHub ↗

* 创建用于下载页面的 HTML * @author 油小猴 * @author hmjz100 * @param {Array} configs - 用于配置生成 HTML 的参数 * @returns {String} 生成的 HTML 内容 * @description 详见代码

(configs)

Source from the content-addressed store, hash-verified

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);

Callers

nothing calls this directly

Calls 1

updateTooltipFunction · 0.85

Tested by

no test coverage detected