TXTbonk

Bonk!

当前为 2023-03-10 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         TXTbonk
// @namespace    http://tampermonkey.net/
// @version      0.1
// @license      MIT
// @description  Bonk!
// @author       tharglet
// @match        https://myfigurecollection.net/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=myfigurecollection.net
// @grant        GM_setValue
// @grant        GM_getValue
// ==/UserScript==

(function() {
    'use strict';
    let bonkGraphic = 'data:image/png;base64,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'
    // Array of {itemId: {toBonk: bool, date: Date}}
    let bonkables = JSON.parse(GM_getValue("txtbonk", "{}"));
    let ONE_WEEK_AGO = new Date(Date.now() - 604800000);

    let bonk = (imgTag) => {
        imgTag.setAttribute('src', bonkGraphic);
    };

    let saveBonkable = (itemId, toBonk) => {
        bonkables[itemId] = {toBonk: toBonk, date: (new Date()).toString()}
        GM_setValue("txtbonk", JSON.stringify(bonkables));
    };

    let fetchIfBonkable = (itemId, imgTag) => {
        fetch(`/item/${itemId}`).then((response) => {
                    return response.text();
                }).then((html) => {
                    var parser = new DOMParser();
                    var doc = parser.parseFromString(html, 'text/html');
                    var img = doc.querySelector('.item-picture');
                    if(!img) {
                        saveBonkable(itemId, true);
                        bonk(imgTag);
                    } else {
                        saveBonkable(itemId, false);
                    }
                }).catch(function (err) {
                    console.warn('Something went wrong.', err);
                });
    };

    let icons = document.getElementsByClassName("item-icon");
    for(let icon of icons) {
        let imgTag = icon.getElementsByTagName('img')[0];
        if(imgTag.getAttribute('alt').startsWith('[NSFW+]')) {
            let metaTag = icon.getElementsByTagName('meta')[0];
            let itemId = metaTag.getAttribute('content').substring(2);
            let bonkable = bonkables[itemId];
            if(bonkable) {
                if(new Date(bonkable.date) < ONE_WEEK_AGO) {
                    fetchIfBonkable(itemId, imgTag);
                } else if(bonkable.toBonk) {
                    bonk(imgTag);
                }
            } else {
                fetchIfBonkable(itemId, imgTag);
            }
        }
    };
})();