给 poipiku 作品和用户添加备注,支持分组。
当前为
// ==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;
}