婆罗门
精华
|
战斗力 鹅
|
回帖 0
注册时间 2011-11-13
|
楼主 |
发表于 2025-7-1 12:51
|
显示全部楼层
本帖最后由 猫出没注意 于 2025-7-1 12:58 编辑
老哥NB,试了一轮下来结果是让AI写个tempermonkey脚本最简单可靠 让它自动保存图片然后自动关掉窗口,效率提高了太多。啊,科技的力量!
先是让微软的copilot写了结果有小毛病改了几轮放弃了,改成了google的gemini
// ==UserScript==
// @Name 自动下载新标签页图片 (自动关闭窗口)
// @namespace http://tampermonkey.net/
// @version 0.4
// @description 在新标签页打开图片时自动下载它,并在下载成功后关闭该标签页。
// @author Your Name
// @Match *://*/*.jpg*
// @match *://*/*.jpeg*
// @match *://*/*.png*
// @match *://*/*.gif*
// @match *://*/*.bmp*
// @match *://*/*.webp*
// @grant GM_download
// @run-at document-start
// ==/UserScript==
(function() {
'use strict';
const currentUrl = window.location.href;
console.log('[自动下载图片脚本] 当前URL:', currentUrl);
// 检查当前URL是否直接指向一个图片文件
function isImageUrl(url) {
const urlWithoutQuery = url.split('?')[0].split('#')[0]; // 同时移除查询参数和哈希
const isImage = /\.(jpg|jpeg|png|gif|bmp|webp)$/i.test(urlWithoutQuery);
console.log('[自动下载图片脚本] isImageUrl(', url, '):', isImage);
return isImage;
}
// 获取文件名
function getFileNameFromUrl(url) {
const urlParts = url.split('/');
let filename = urlParts[urlParts.length - 1];
// 移除可能的查询参数和哈希
filename = filename.split('?')[0].split('#')[0];
// 如果文件名太短或者看起来不像是有效文件名,添加一个默认前缀和时间戳
if (filename.length < 5 || !/\./.test(filename)) {
const extMatch = url.match(/\.(jpg|jpeg|png|gif|bmp|webp)(?:\?|#|$)/i);
const ext = extMatch ? extMatch[1] : 'jpg'; // 默认一个扩展名
filename = 'downloaded_image_' + new Date().getTime() + '.' + ext;
console.warn('[自动下载图片脚本] 生成了备用文件名:', filename, '因为URL文件名不明确。');
} else {
console.log('[自动下载图片脚本] 从URL解析的文件名:', filename);
}
return filename;
}
// 当文档开始加载时执行
if (isImageUrl(currentUrl)) {
const imageUrl = currentUrl;
const filename = getFileNameFromUrl(imageUrl);
console.log('[自动下载图片脚本] 检测到图片URL,准备下载:', imageUrl, ',文件名为:', filename);
GM_download({
url: imageUrl,
name: filename,
saveAs: false,
onload: function() {
console.log('[自动下载图片脚本] 图片下载成功:', filename);
// 尝试关闭当前标签页
// 注意:由于浏览器安全策略,脚本可能无法关闭非由脚本打开的标签页
window.close();
console.log('[自动下载图片脚本] 尝试关闭当前标签页。');
},
onerror: function(error) {
console.error('[自动下载图片脚本] 图片下载失败!错误信息:', error);
let errorMessage = '未知错误';
if (error && error.details) {
if (error.details.error) errorMessage = error.details.error;
if (error.details.url) errorMessage += ' (URL: ' + error.details.url + ')';
}
alert('图片下载失败:' + errorMessage + '。请查看浏览器控制台获取更多详情。');
},
ontimeout: function() {
console.error('[自动下载图片脚本] 下载超时!');
alert('图片下载超时。');
}
});
} else {
console.log('[自动下载图片脚本] 当前URL不是图片,跳过下载。');
}
})();
|
|