Poipiku Remark

给 poipiku 作品和用户添加备注,支持分组。

Verzia zo dňa 26.03.2021. Pozri najnovšiu verziu.

// ==UserScript==
// @name         Poipiku Remark
// @namespace    https://greasyfork.org/zh-CN/users/8659-fc4soda
// @version      20210325
// @description  给 poipiku 作品和用户添加备注,支持分组。
// @author       fc4soda
// @match        https://poipiku.com/*
// @grant               GM_info
// @grant               GM.info
// @grant               GM.getValue
// @grant               GM.setValue
// @grant               GM.deleteValue
// @grant               GM.listValues
// @grant               GM.openInTab
// ==/UserScript==

// TODO 手机上用户页没显示编辑框
// TODO: 自动填写密码

/* jshint esversion: 6 */

const addonName = '8659-pr-';
const ICON = {};
const PAGE_TYPE = {
    'USER1': 'USER1', // https://poipiku.com/928521/
    'WORK1': 'WORK1', // https://poipiku.com/IllustViewPcV.jsp?ID=928521&TD=3996609
    'WORK2': 'WORK2', // https://poipiku.com/928521/2382608.html
};

// id:用户id td:作品id
var itemClass = '.script-link', listClass='.script-list', editboxClass= addonName + 'editbox';
var workItemClass = 'IllustThumbImg', idSelector = 'data-'+addonName+'id', tdSelector = 'data-'+addonName+'td', workItemClass2='IllustItemThumb';

(function() {
    'use strict';
'use esversion: 6';

    // 判断不同页面使用不同选择器
    var url = window.location.href;
    var pageType = checkPage(url);
    switch(pageType) {
        case PAGE_TYPE.USER1:
            userPageFunc();
            break;
        case PAGE_TYPE.WORK1:
        case PAGE_TYPE.WORK2:
            var regex = /(\d+)/g;
            var idtd = url.match(regex);
            var id = idtd[0], td = idtd[1];
            workPageFunc(id, td);
            break;
        default:
    }
})();

function workPageFunc(id, td){
    var work = document.getElementsByClassName(workItemClass2);
    for(let item of work){
        var oldVal = GM.getValue(addonName+id+'-'+td);
        oldVal.then((val) => {
            if(val != null){
                console.log("getVal",val);
                var editbox = newEditbox(id, td);
                editbox.value = val;
                editbox.addEventListener("change", storeVal);
                item.parentElement.insertBefore(editbox, item.nextSibling);
            }
        });
    }
}

function userPageFunc(){
    var elements = document.getElementsByClassName(workItemClass);
    for(let item of elements){
        var href = item.href;
        if (href == null){
            continue;
        }

        let regex = /(\d+)/g;
        let idtd = href.match(regex);
        var oldVal = GM.getValue(addonName+idtd[0]+'-'+idtd[1]);
        oldVal.then((val) => {
            if(val != null){
                console.log("getVal",val);
                var editbox = newEditbox(idtd[0], idtd[1]);
                editbox.value = val;
                editbox.addEventListener("change", storeVal);
                item.parentElement.insertBefore(editbox, item.nextSibling);
            }
        });



    }
}

function newEditbox(id, td){
    let editbox = document.createElement("textarea");
        editbox.class = editboxClass;
        editbox.setAttribute(idSelector, id);
        editbox.setAttribute(tdSelector, td);
    return editbox
}


function storeVal(event){
    var element = event.target;
    if(element.class == editboxClass){
        var id = element.getAttribute(idSelector);
        var td = element.getAttribute(tdSelector);
        var val = element.value;
        console.log('set', id+'-'+td, val);
        if (val!=null){
            GM.setValue(addonName+id+'-'+td, val);
        }
    }
    //console.log("change", element);
}

// USER1 https://poipiku.com/928521/
// WORK1 https://poipiku.com/IllustViewPcV.jsp?ID=928521&TD=3996609
// WORK2 https://poipiku.com/928521/2382608.html
function checkPage(url){
    // TODO 修改WORK1的匹配方式
    // TODO 取id td并返回
    var arr = url.split('?');
    if(arr.length==2){
        return PAGE_TYPE.WORK1;
    }
    var regex = /poipiku\.com\/\d+\/\d+\.html/;
    if(regex.test(url)){
        return PAGE_TYPE.WORK2;
    }
    return PAGE_TYPE.USER1;
}