// ==UserScript== // @name 图片快捷下载与查看工具 // @namespace https://scriptcat.org/ // @version 1.0 // @description 按住快捷键并点击图片即可下载或查看原图,智能识别B站等网站的原图链接 // @icon data:image/png;base64,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 // @author Developer // @match *://*/* // @grant GM_download // @grant GM_registerMenuCommand // @grant GM_setValue // @grant GM_getValue // @grant GM_addStyle // @grant GM_notification // @grant GM_xmlhttpRequest // @grant GM_setClipboard // @connect * // ==/UserScript== (function() { 'use strict'; // 配置 let config = { hotkey: 'Alt', showPreview: true, defaultAction: 'download', showHint: true, downloadMethod: 'auto', // auto, blob, direct, clipboard // 原图识别规则 originalImageRules: { 'bilibili.com': [ { pattern: /(.+\.(jpg|jpeg|png|gif|webp))@[^?]+(?:\?.*)?$/i, replacement: '$1' }, { pattern: /(.+\.(jpg|jpeg|png|gif|webp))[?].*$/i, replacement: '$1' } ], 'weibo.com': [ { pattern: /\/thumbnail$/, replacement: '' }, { pattern: /\/small$/, replacement: '/large' } ], 'zhihu.com': [ { pattern: /_([sm]|xs|md|lg)$/, replacement: '' } ], // 通用规则 'default': [ { pattern: /(.+\.(jpg|jpeg|png|gif|webp))@[^?]+(?:\?.*)?$/i, replacement: '$1' }, { pattern: /(.+\.(jpg|jpeg|png|gif|webp))[?].*$/i, replacement: '$1' }, { pattern: /[?&](width|height|size|format|quality)=\d+/g, replacement: '' }, { pattern: /[?&]thumb(nail)?=/g, replacement: '' } ] } }; // 状态变量 let isHotkeyPressed = false; let currentSelectedImg = null; // 添加CSS样式 GM_addStyle(` :root { --primary-color: #4299e1; --success-color: #48bb78; --neutral-color: #718096; --dark-bg: #2d3748; --darker-bg: #1a202c; --header-bg: #4a5568; --text-light: #ffffff; --text-muted: #a0aec0; --border-radius: 8px; --shadow: 0 10px 25px rgba(0, 0, 0, 0.5); --transition: all 0.3s ease; } .img-selector-overlay { position: fixed !important; top: 0 !important; left: 0 !important; width: 100% !important; height: 100% !important; background: rgba(0, 0, 0, 0.5) !important; display: flex !important; justify-content: center !important; align-items: center !important; z-index: 2147483647 !important; backdrop-filter: blur(2px) !important; padding: 16px !important; box-sizing: border-box !important; } .img-selector-modal { background: var(--dark-bg) !important; border-radius: var(--border-radius) !important; box-shadow: var(--shadow) !important; width: 100% !important; max-width: 420px !important; overflow: hidden !important; color: var(--text-light) !important; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif !important; animation: modalFadeIn 0.3s ease !important; display: flex !important; flex-direction: column !important; max-height: 90vh !important; } @keyframes modalFadeIn { from { opacity: 0; transform: translateY(-20px) scale(0.95); } to { opacity: 1; transform: translateY(0) scale(1); } } .img-selector-header { background: var(--header-bg) !important; padding: 16px !important; display: flex !important; justify-content: space-between !important; align-items: center !important; flex-shrink: 0 !important; } .img-selector-title { font-size: 18px !important; font-weight: 600 !important; margin: 0 !important; } .img-selector-close { background: none !important; border: none !important; color: var(--text-light) !important; font-size: 24px !important; cursor: pointer !important; padding: 0 !important; width: 32px !important; height: 32px !important; display: flex !important; align-items: center !important; justify-content: center !important; border-radius: 50% !important; transition: var(--transition) !important; } .img-selector-close:hover { background: rgba(255, 255, 255, 0.1) !important; } .img-selector-body { padding: 20px !important; display: flex !important; flex-direction: column !important; gap: 16px !important; overflow-y: auto !important; flex: 1 !important; } .img-preview-container { position: relative !important; width: 100% !important; background: var(--header-bg) !important; border-radius: var(--border-radius) !important; overflow: hidden !important; display: flex !important; justify-content: center !important; align-items: center !important; min-height: 150px !important; } .img-preview { width: 100% !important; max-height: 200px !important; object-fit: contain !important; border-radius: var(--border-radius) !important; } .img-info { display: flex !important; flex-direction: column !important; gap: 8px !important; font-size: 14px !important; } .img-info-row { display: flex !important; justify-content: space-between !important; align-items: center !important; flex-wrap: wrap !important; } .img-info-label { color: var(--text-muted) !important; font-weight: 500 !important; } .img-info-value { font-weight: 500 !important; text-align: right !important; max-width: 60% !important; overflow: hidden !important; text-overflow: ellipsis !important; } .img-selector-actions { display: flex !important; gap: 12px !important; justify-content: flex-end !important; margin-top: 10px !important; flex-wrap: wrap !important; } .img-selector-btn { padding: 10px 16px !important; border: none !important; border-radius: var(--border-radius) !important; font-weight: 600 !important; cursor: pointer !important; transition: var(--transition) !important; display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; flex: 1 !important; min-width: 120px !important; justify-content: center !important; } .btn-download { background: var(--primary-color) !important; color: var(--text-light) !important; } .btn-download:hover { background: #3182ce !important; transform: translateY(-2px) !important; } .btn-view { background: var(--success-color) !important; color: var(--text-light) !important; } .btn-view:hover { background: #38a169 !important; transform: translateY(-2px) !important; } .btn-cancel { background: var(--neutral-color) !important; color: var(--text-light) !important; } .btn-cancel:hover { background: #4a5568 !important; transform: translateY(-2px) !important; } .img-selector-highlight { outline: 3px solid var(--primary-color) !important; outline-offset: -3px !important; transition: var(--transition) !important; position: relative !important; z-index: 2147483646 !important; } .img-selector-highlight::after { content: '' !important; position: absolute !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; background: rgba(66, 153, 225, 0.1) !important; pointer-events: none !important; z-index: 2147483646 !important; } .settings-panel { position: fixed !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; background: var(--dark-bg) !important; border-radius: var(--border-radius) !important; box-shadow: var(--shadow) !important; width: 90% !important; max-width: 500px !important; max-height: 90vh !important; overflow-y: auto !important; z-index: 2147483647 !important; color: var(--text-light) !important; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif !important; padding: 24px !important; display: flex !important; flex-direction: column !important; } .settings-header { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 20px !important; padding-bottom: 16px !important; border-bottom: 1px solid var(--header-bg) !important; } .settings-title { font-size: 20px !important; font-weight: 600 !important; margin: 0 !important; } .settings-close { background: none !important; border: none !important; color: var(--text-light) !important; font-size: 24px !important; cursor: pointer !important; padding: 4px !important; border-radius: 4px !important; transition: var(--transition) !important; } .settings-close:hover { background: rgba(255, 255, 255, 0.1) !important; } .settings-group { margin-bottom: 20px !important; } .settings-label { display: block !important; margin-bottom: 8px !important; font-weight: 500 !important; } .settings-input { width: 100% !important; padding: 12px !important; border-radius: var(--border-radius) !important; border: 1px solid var(--header-bg) !important; background: var(--darker-bg) !important; color: var(--text-light) !important; font-family: inherit !important; font-size: 14px !important; box-sizing: border-box !important; transition: var(--transition) !important; } .settings-input:focus { outline: none !important; border-color: var(--primary-color) !important; box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.2) !important; } .settings-hint { font-size: 12px !important; color: var(--text-muted) !important; margin-top: 5px !important; } .settings-footer { display: flex !important; justify-content: flex-end !important; gap: 12px !important; margin-top: 24px !important; flex-wrap: wrap !important; } .settings-footer .img-selector-btn { min-width: 100px !important; flex: none !important; } .hotkey-hint { position: fixed !important; bottom: 20px !important; right: 20px !important; background: rgba(45, 55, 72, 0.9) !important; color: var(--text-light) !important; padding: 12px 16px !important; border-radius: var(--border-radius) !important; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif !important; font-size: 14px !important; z-index: 2147483646 !important; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2) !important; transition: var(--transition) !important; max-width: 300px !important; backdrop-filter: blur(4px) !important; } .hotkey-hint.fade { opacity: 0.5 !important; } .url-debug { font-size: 12px !important; color: var(--text-muted) !important; margin-top: 5px !important; word-break: break-all !important; background: var(--darker-bg) !important; padding: 8px !important; border-radius: var(--border-radius) !important; } .url-debug-original { text-decoration: line-through !important; opacity: 0.7 !important; margin-bottom: 4px !important; } .url-debug-new { color: var(--success-color) !important; font-weight: 500 !important; } .download-status { position: fixed; top: 20px; right: 20px; background: rgba(45, 55, 72, 0.95); color: white; padding: 12px 16px; border-radius: 8px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; z-index: 2147483647; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3); max-width: 300px; backdrop-filter: blur(4px); animation: slideIn 0.3s ease; } .download-status.success { border-left: 4px solid #48bb78; } .download-status.error { border-left: 4px solid #e53e3e; } .download-status.warning { border-left: 4px solid #d69e2e; } @keyframes slideIn { from { transform: translateX(100%); opacity: 0; } to { transform: translateX(0); opacity: 1; } } .download-options { display: flex; flex-direction: column; gap: 8px; margin-top: 10px; padding: 10px; background: rgba(255, 255, 255, 0.1); border-radius: 6px; } .download-option { display: flex; align-items: center; gap: 8px; cursor: pointer; padding: 6px; border-radius: 4px; transition: background 0.2s; } .download-option:hover { background: rgba(255, 255, 255, 0.1); } .download-option input[type="radio"] { margin: 0; } /* 响应式设计 */ @media (max-width: 480px) { .img-selector-modal { max-width: 100% !important; margin: 0 10px !important; } .img-selector-body { padding: 16px !important; } .img-selector-actions { flex-direction: column !important; } .img-selector-btn { width: 100% !important; } .settings-panel { width: 95% !important; padding: 16px !important; } .settings-footer { flex-direction: column !important; } .hotkey-hint { bottom: 10px !important; right: 10px !important; left: 10px !important; max-width: none !important; } } @media (max-width: 768px) { .img-info-row { flex-direction: column !important; align-items: flex-start !important; gap: 4px !important; } .img-info-value { max-width: 100% !important; text-align: left !important; } } /* 加载动画 */ .loading-spinner { display: inline-block !important; width: 20px !important; height: 20px !important; border: 3px solid rgba(255,255,255,.3) !important; border-radius: 50% !important; border-top-color: var(--text-light) !important; animation: spin 1s ease-in-out infinite !important; } @keyframes spin { to { transform: rotate(360deg); } } .preview-loading { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; } `); // 初始化 function init() { loadConfig(); setupEventListeners(); // 只在首次使用时显示提示 const hintShown = GM_getValue('hint_shown', false); if (!hintShown && config.showHint) { createHotkeyHint(); GM_setValue('hint_shown', true); } registerMenuCommands(); } // 加载配置 function loadConfig() { const savedConfig = GM_getValue('img_downloader_config'); if (savedConfig) { config = { ...config, ...savedConfig }; } } // 保存配置 function saveConfig() { GM_setValue('img_downloader_config', config); } // 设置事件监听 function setupEventListeners() { // 键盘按下事件 document.addEventListener('keydown', (e) => { if (e.key === config.hotkey) { isHotkeyPressed = true; document.body.style.cursor = 'crosshair'; } }); // 键盘释放事件 document.addEventListener('keyup', (e) => { if (e.key === config.hotkey) { isHotkeyPressed = false; document.body.style.cursor = ''; removeImageHighlight(); } }); // 图片点击事件 - 使用捕获阶段以阻止默认行为 document.addEventListener('click', handleImageClick, true); // 鼠标移动事件(图片高亮) document.addEventListener('mousemove', (e) => { if (!isHotkeyPressed) return; const imgElement = findImageElement(e.target); highlightImage(imgElement); }); } // 处理图片点击事件 function handleImageClick(e) { if (!isHotkeyPressed) return; // 查找被点击的图片元素 const imgElement = findImageElement(e.target); if (imgElement) { // 阻止默认行为和事件传播 e.preventDefault(); e.stopPropagation(); e.stopImmediatePropagation(); currentSelectedImg = imgElement; showImageOptions(imgElement); // 对于B站等网站,额外添加一次阻止默认行为 setTimeout(() => { if (e.cancelable) { e.preventDefault(); } }, 0); return false; } } // 查找图片元素 - 增强版,专门处理B站评论区表情包 function findImageElement(element) { if (!element) return null; // 检查元素本身是否是图片 if (isImageElement(element)) { return element; } // 向上遍历DOM树查找图片元素 let currentElement = element; while (currentElement && currentElement !== document.body) { if (isImageElement(currentElement)) { return currentElement; } // 检查是否是表情包元素(常见于评论区) if (isEmojiElement(currentElement)) { return currentElement; } // 专门处理B站评论区表情包 if (isBilibiliCommentEmoji(currentElement)) { return currentElement; } currentElement = currentElement.parentElement; } return null; } // 判断是否是图片元素 function isImageElement(element) { // 标准的img标签 if (element.tagName === 'IMG') { return true; } // 带有背景图片的元素 const style = window.getComputedStyle(element); const backgroundImage = style.backgroundImage; if (backgroundImage && backgroundImage !== 'none') { return true; } // SVG图片 if (element.tagName === 'svg' || element.closest('svg')) { return true; } // Canvas元素 if (element.tagName === 'CANVAS') { return true; } // 排除文本元素 if (element.tagName === 'P' || element.tagName === 'SPAN' || element.tagName === 'DIV') { // 检查是否包含文本内容 const textContent = element.textContent || ''; if (textContent.trim().length > 0 && !element.querySelector('img')) { return false; } } return false; } // 判断是否是表情包元素 function isEmojiElement(element) { // 常见表情包类名和属性 const emojiClasses = ['emoji', 'face', 'biaoqing', 'expression', 'smiley', 'comment-emoji']; const emojiAttributes = ['data-emoji', 'data-face', 'data-src', 'data-url']; // 检查类名 for (const cls of emojiClasses) { if (element.classList.contains(cls)) { return true; } } // 检查属性 for (const attr of emojiAttributes) { if (element.hasAttribute(attr)) { return true; } } // 检查是否是图片但被其他元素包裹 if (element.querySelector('img')) { return true; } return false; } // 专门检测B站评论区表情包 function isBilibiliCommentEmoji(element) { // 检查是否在B站页面 if (!window.location.hostname.includes('bilibili.com')) { return false; } // 检查元素是否在评论区 const commentSection = element.closest('.bili-comment, [class*="comment"], [class*="Comment"]'); if (!commentSection) { return false; } // 检查元素特征 const isImg = element.tagName === 'IMG'; const hasEmojiClass = element.classList.contains('emoji') || element.classList.contains('face') || element.getAttribute('data-emoji') !== null; const hasEmojiSrc = element.src && ( element.src.includes('emoji') || element.src.includes('face') || element.src.includes('expression') || element.src.includes('hdslb.com/bfs/face') ); // 如果是图片且有表情包特征 if (isImg && (hasEmojiClass || hasEmojiSrc)) { return true; } // 如果元素包含表情包图片 const emojiImg = element.querySelector('img'); if (emojiImg && (emojiImg.classList.contains('emoji') || emojiImg.getAttribute('data-emoji') !== null || (emojiImg.src && emojiImg.src.includes('hdslb.com/bfs/face')))) { return true; } return false; } // 高亮图片 function highlightImage(imgElement) { removeImageHighlight(); if (imgElement) { // 使用更高优先级的类名 imgElement.classList.add('img-selector-highlight'); } } // 移除图片高亮 function removeImageHighlight() { const highlighted = document.querySelector('.img-selector-highlight'); if (highlighted) { highlighted.classList.remove('img-selector-highlight'); } } // 显示图片选项 function showImageOptions(imgElement) { // 如果已有模态框,先移除 const existingModal = document.querySelector('.img-selector-overlay'); if (existingModal) { document.body.removeChild(existingModal); } // 创建模态框 const overlay = document.createElement('div'); overlay.className = 'img-selector-overlay'; // 获取图片信息 const originalUrl = getBestImageUrl(imgElement); const processedUrl = getOriginalImageUrl(originalUrl); const imgName = getImageName(processedUrl); const imgSize = getImageSize(imgElement); overlay.innerHTML = `