导入
MURH
分享者: simple08 (159)发布时间: 4天前
该用户很懒,什么介绍也没有写!
{
"articleStyle": 0,
"cacheFirst": false,
"customOrder": -10106456,
"enableJs": true,
"enabled": true,
"enabledCookieJar": false,
"lastUpdateTime": 1777867372098,
"loadWithBaseUrl": false,
"preload": false,
"showWebLog": false,
"singleUrl": false,
"sourceIcon": "https:\/\/p0.ssl.qhimgs1.com\/bdr\/460__\/t03ed72f97d4b5560de.webp",
"sourceName": "导入",
"sourceUrl": "MURH",
"startHtml": "<!DOCTYPE html>\n<html lang=\"zh\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=yes\">\n <link href=\"https:\/\/fonts.googleapis.com\/css2?family=ZCOOL+KuaiLe&display=swap\" rel=\"stylesheet\">\n <title>净化链接并导入<\/title>\n <!-- Remix Icon 线条图标库 -->\n <link href=\"https:\/\/cdn.jsdelivr.net\/npm\/remixicon@4.2.0\/fonts\/remixicon.css\" rel=\"stylesheet\">\n<\/head>\n<body>\n\n <div class=\"card\">\n <!-- 右上角提示容器 -->\n <div id=\"cardToast\" class=\"card-toast\"><\/div>\n\n <img\n class=\"avatar\"\n src=\"https:\/\/p0.ssl.qhimgs1.com\/bdr\/460__\/t04f435e3922f2b7a30.jpg\"\n alt=\"头像\"\n loading=\"lazy\"\n >\n\n <span class=\"title\">净化链接并导入<\/span>\n\n <div class=\"input-group\">\n <textarea id=\"copyt\" rows=\"2\" placeholder=\"粘贴链接...\"><\/textarea>\n <textarea id=\"processedText\" rows=\"2\" placeholder=\"净化后的链接...\"><\/textarea>\n <\/div>\n\n <div class=\"btn-row\">\n <button class=\"btn-icon\" id=\"btn2\" onclick=\"cleart()\" title=\"清空\">\n <i class=\"ri-delete-back-2-line\"><\/i>\n <\/button>\n <button class=\"btn-icon\" id=\"btn3\" onclick=\"purify()\" title=\"净化\">\n <i class=\"ri-magic-line\"><\/i>\n <\/button>\n <button class=\"btn-icon\" id=\"btnCopy\" onclick=\"copyProcessed()\" title=\"复制\">\n <i class=\"ri-file-copy-line\"><\/i>\n <\/button>\n <button class=\"btn-icon\" id=\"btn1\" onclick=\"importContent()\" title=\"导入\">\n <i class=\"ri-share-forward-line\"><\/i>\n <\/button>\n <\/div>\n\n <hr class=\"divider\">\n\n <div class=\"yanwen\">\n (๑•̀ㅂ•́)و✧ Ciallo~☆ (∠・ω< )⌒★\n <\/div>\n <\/div>\n\n<\/body>\n<\/html>",
"startJs": " (function() {\n const toast = document.getElementById('cardToast');\n\n function showToast(msg, duration = 2000) {\n if (!toast) return;\n toast.textContent = msg;\n toast.classList.add('show');\n clearTimeout(toast._timeout);\n toast._timeout = setTimeout(() => {\n toast.classList.remove('show');\n }, duration);\n }\n\n window.importContent = function() {\n const processedText = document.getElementById(\"processedText\");\n const originalText = document.getElementById(\"copyt\");\n let url = processedText.value.trim();\n\n if (!url) {\n const originalUrl = originalText.value.trim();\n if (!originalUrl) {\n showToast('请输入内容');\n return;\n }\n url = purifyUrl(originalUrl);\n processedText.value = url;\n if (!url) {\n showToast('无法提取有效链接');\n return;\n }\n }\n\n const encodedUrl = encodeURIComponent(url);\n\n try {\n window.location.href = 'legado:\/\/import\/Source?src=' + encodedUrl;\n } catch (error) {\n showToast('导入失败: ' + error.message);\n }\n };\n\n window.purify = function() {\n const cpt = document.getElementById(\"copyt\");\n const processedText = document.getElementById(\"processedText\");\n let url = cpt.value;\n if (!url.trim()) {\n showToast('请输入内容');\n return;\n }\n url = purifyUrl(url);\n processedText.value = url;\n };\n\n function purifyUrl(input) {\n let url = input;\n if (url.startsWith('data:')) {\n try { url = atob(url.match(\/^[^,]+,([^\\s,]+)\/)[1]); } catch (e) {}\n }\n if (\/^[\\da-z\\+\\\/]{2,}=*$\/i.test(url)) {\n try { url = atob(url); } catch (e) {}\n }\n url = url.replace(\/\\[[\\w\\u4e00-\\u9fa5]+\\]|#\\([\\w\\u4e00-\\u9fa5]+\\)\/g, '');\n const allowedChars = \/[\\w\\-._~:\\\/?#\\[\\]@!$&'()*+,;=%]\/g;\n let purified = '';\n let match;\n while ((match = allowedChars.exec(url)) !== null) purified += match[0];\n const urlMatch = purified.match(\/(https?:\\\/\\\/[^\\s]+)\/i);\n if (urlMatch) purified = urlMatch[0];\n return purified;\n }\n\n window.cleart = function() {\n document.getElementById(\"copyt\").value = '';\n document.getElementById(\"processedText\").value = '';\n showToast('已清空');\n };\n\n window.copyProcessed = function() {\n const processedText = document.getElementById(\"processedText\");\n const text = processedText.value;\n if (!text.trim()) {\n showToast('没有可复制的内容');\n return;\n }\n if (navigator.clipboard && navigator.clipboard.writeText) {\n navigator.clipboard.writeText(text).then(() => {\n showToast('已复制');\n }).catch(() => {\n fallbackCopy(text);\n });\n } else {\n fallbackCopy(text);\n }\n };\n\n function fallbackCopy(text) {\n const ta = document.createElement('textarea');\n ta.value = text;\n ta.style.position = 'fixed';\n ta.style.left = '-9999px';\n document.body.appendChild(ta);\n ta.select();\n try {\n document.execCommand('copy');\n showToast('已复制');\n } catch (err) {\n showToast('复制失败');\n }\n document.body.removeChild(ta);\n }\n })();",
"startStyle": " :root {\n --bg: #f0f2f5;\n --card-bg: #ffffff;\n --text: #2c3e50;\n --sub: #7f8c8d;\n --border: #d0d7de;\n --accent: #5b7fff;\n --shadow: 0 2px 16px rgba(0, 0, 0, 0.07);\n --radius: 20px;\n --radius-sm: 12px;\n --transition: 0.2s ease;\n }\n\n * {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n }\n\n body {\n background: var(--bg);\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 100vh;\n font-family: 'ZCOOL KuaiLe', 'PingFang SC', 'Microsoft YaHei', cursive;\n padding: 20px;\n -webkit-tap-highlight-color: transparent;\n }\n\n .card {\n background: var(--card-bg);\n border-radius: var(--radius);\n box-shadow: var(--shadow);\n padding: 24px 16px 16px;\n width: 100%;\n max-width: 420px;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 16px;\n transition: box-shadow 0.3s ease;\n position: relative; \/* 为提示容器提供定位上下文 *\/\n overflow: visible; \/* 确保提示不被裁剪 *\/\n }\n .card:hover {\n box-shadow: 0 6px 28px rgba(0, 0, 0, 0.10);\n }\n\n .avatar {\n width: 100%;\n aspect-ratio: 1 \/ 1;\n object-fit: cover;\n border-radius: var(--radius-sm);\n background: #eef1f5;\n flex-shrink: 0;\n transition: transform var(--transition), box-shadow var(--transition);\n }\n .avatar:hover {\n transform: scale(1.02);\n box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);\n }\n\n .title {\n font-size: 1.35rem;\n font-weight: 700;\n color: var(--text);\n letter-spacing: 0.02em;\n line-height: 1;\n margin-top: 4px;\n }\n\n .input-group {\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: 12px;\n }\n\n textarea {\n width: 100%;\n resize: none;\n min-height: 48px;\n max-height: 120px;\n padding: 10px 0 8px;\n font-size: 0.9rem;\n font-family: 'ZCOOL KuaiLe', 'PingFang SC', 'Microsoft YaHei', cursive;\n color: var(--text);\n background: transparent;\n border: none;\n border-bottom: 2px solid #d0d7de;\n border-radius: 0;\n outline: none;\n transition: border-color var(--transition), box-shadow var(--transition);\n line-height: 1.5;\n }\n textarea:focus {\n border-bottom-color: var(--accent);\n box-shadow: 0 1px 0 0 var(--accent);\n }\n textarea::placeholder {\n color: #b0b8c1;\n font-family: inherit;\n font-size: 0.85rem;\n }\n\n .btn-row {\n display: flex;\n gap: 52px; \/* 加大按钮左右间隔 *\/\n width: 100%;\n justify-content: center;\n margin-top: 4px;\n padding: 0 8px; \/* 两侧留一点内边距,避免太靠边 *\/\n }\n .btn-icon {\n width: 44px;\n height: 44px;\n border-radius: 50%;\n border: none;\n cursor: pointer;\n font-size: 1.3rem;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #2c3e50;\n background: transparent;\n flex-shrink: 0;\n outline: none;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0.08);\n }\n .btn-icon i {\n font-size: 1.2rem;\n line-height: 1;\n }\n .btn-icon:active {\n transform: scale(0.93);\n }\n .btn-icon:hover {\n color: #000;\n }\n\n .divider {\n width: 100%;\n border: none;\n border-top: 1px solid #e0e4e8;\n margin: 4px 0 2px;\n }\n\n .yanwen {\n font-size: 0.9rem;\n color: #7f8c8d;\n text-align: center;\n letter-spacing: 0.03em;\n line-height: 1.4;\n user-select: none;\n padding-bottom: 4px;\n }\n\n \/* ========== 卡片右上角轻提示(无背景,深色文字)========== *\/\n .card-toast {\n position: absolute;\n top: 12px;\n right: 12px;\n color: #2c3e50; \/* 深色文字 *\/\n background: transparent; \/* 无背景 *\/\n font-size: 0.85rem;\n opacity: 0;\n transition: opacity 0.3s ease;\n pointer-events: none;\n z-index: 10;\n line-height: 1.4;\n max-width: 60%;\n text-align: right;\n white-space: normal; \/* 允许换行 *\/\n word-break: break-word;\n }\n .card-toast.show {\n opacity: 1;\n }\n\n \/* 移动端微调 *\/\n @media (max-width: 400px) {\n .card {\n padding: 18px 12px 14px;\n gap: 14px;\n }\n .btn-icon {\n width: 40px;\n height: 40px;\n }\n .btn-icon i {\n font-size: 1.15rem;\n }\n .btn-row {\n gap: 18px;\n }\n .title {\n font-size: 1.2rem;\n }\n .avatar {\n border-radius: 10px;\n }\n .card-toast {\n top: 8px;\n right: 8px;\n font-size: 0.8rem;\n max-width: 70%;\n }\n }",
"type": 0
}