解禁p站历史记录

为Pixiv历史记录页面上的图片添加超链接并修正透明度

// ==UserScript==
// @name         解禁p站历史记录
// @namespace    http://greasyfork.org
// @version      0.1
// @description  为Pixiv历史记录页面上的图片添加超链接并修正透明度
// @author       You
// @match        https://www.pixiv.net/history.php
// @icon         https://www.google.com/s2/favicons?sz=64&domain=pixiv.net
// @grant        none
// @license MIT
// ==/UserScript==

(function() {
    'use strict';
    // 延迟执行
    setTimeout(function() {

        // 获取所有符合条件的 span 元素
        const items = document.querySelectorAll('span._history-item.trial');

        console.log('Found', items.length, 'items to process.');

        items.forEach(item => {
            const img = item.querySelector('img');
            if (!img) {
                console.log('No image found in item', item);
                return;
            }

            // 提取文件名中的 pid (4到10位数字)
            const src = img.src;
            const pidMatch = src.match(/(\d{4,10})_.*\.jpg/);

            if (pidMatch) {
                const pid = pidMatch[1]; // 获取提取的 pid
                console.log('Found pid:', pid);

                // 创建一个新的链接元素
                const link = document.createElement('a');
                link.href = `https://www.pixiv.net/artworks/${pid}`;
                link.target = "_blank";
                link.className = "_history-item show-detail list-item";
                link.rel = "noreferrer";
                link.style.position = "relative";

                // 选择包裹图片的 div,并将其添加到链接中
                const divContainer = item.querySelector('div'); // 选择包裹图片的 div 元素,不依赖具体类名
                if (divContainer) {
                    link.appendChild(divContainer); // 将 div 包装到链接中
                }

                // 设置图片的 opacity 为 1
                img.style.opacity = 1;

                // 替换原有的 span 元素
                item.parentNode.replaceChild(link, item);

                console.log('Replaced item with link:', link);
            } else {
                console.log('No pid match for src:', src);
            }
        });

    }, 1000);
})();