// ==UserScript==
// @name Pixiv小工具
// @namespace http://tampermonkey.net/
// @version 0.3
// @icon http://www.pixiv.net/favicon.ico
// @description try to take over the world!
// @author You
// @include *://www.pixiv.net/*
// @match *://www.pixiv.net/bookmark.php?*
// @match *://www.pixiv.net/bookmark_detail.php?*
// @match http://www.pixiv.net/
// @require https://code.jquery.com/jquery-migrate-3.0.0.min.js
// @run-at document-end
// @grant none1
// @grant unsafeWindow
// @grant GM_setValue
// @grant GM_getValue
// @grant GM_listValues
// @grant GM_info
// @grant GM_addStyle
// @grant GM_registerMenuCommand
// @grant GM_deleteValue
// @grant GM_xmlhttpRequest
// ==/UserScript==
(function() {
'use strict';
var css = '';
//增大管理收藏的复选框点击有效范围
$('.image-item .input-container').click(function (e){
// console.log('点击有效范围checked');
// console.log(e.target);
// console.log(this);
if(e.target!=this){
// console.log('true执行checked');
return true;
}
// console.log('false执行checked');
var _cb = $(this).find('input[type=checkbox]');
_cb.prop('checked', !_cb.prop('checked'));
// e.stopPropagation();
// e.preventDefault();
});
//每行开头添加勾选本行
var rowNum = 4;
//alert($('._image-items').length);
// var rowFirstHeight = [];
// var _maxHeight = 0;
// $('._image-items .image-item').each(function(i, ele){
// if(_maxHeight < $(this).height()){
// _maxHeight = $(this).height();
// }
// if((i + 1)%rowNum === 0){
// rowFirstHeight[rowFirstHeight.length] = _maxHeight;
// _maxHeight = 0;
// }
// });
//alert(rowFirstHeight);
var rowCheckbox = $('<div>').css({
height: '20px',
width: '20px',
position: 'absolute',
left: '-20px',
'background-color': 'rgba(0,0,0,0.1)'
});
css +=
'.rowCheckbox {' +
'height: 100%;' +
'width: 100%;' +
'}';
var _checkbox = $('<input>')
.prop('type', 'checkbox')
.addClass('rowCheckbox')
.appendTo(rowCheckbox);
//$('.display_editable_works').prepend(rowCheckbox);
// :contains(checkbox)
$('._image-items .image-item .input-container').parent('.image-item').each(function(i, ele){
// $('._image-items .image-item').each(function(i, ele){
//console.log('index:' + i + '=' + i%rowNum);
if(i%rowNum === 0){
var rc = rowCheckbox.clone();
$(this).prepend(rc);
rc.click(function(e){
// console.log(e.target==this);
var _cb = $(this).find('input[type=checkbox]');
// console.log(_cb.get(0));
var _f = _cb.prop('checked');
console.log(_f);
if(e.target==this){
//不是直接点击复选框时需要手动改变
_f = !_f;
_cb.prop('checked', _f);
}
var _imgLi = $(this).parent('li.image-item');
// console.log(_imgLi.get(0));
// console.log(_imgLi.add(_imgLi.nextAll().slice(0, rowNum - 1)));
// console.log(_imgLi.add(_imgLi.nextAll().slice(0, rowNum - 1)).find('.input-container input[type=checkbox]'));
_imgLi.add(_imgLi.nextAll().slice(0, rowNum - 1))
.find('input[type=checkbox]')
.prop('checked', _f);
});
}
});
css +=
'/* 额外添加样式 */' +
'.fast_click-ul {' +
'position: relative;' +
'}' +
'.fast_click-ul .image-item {' +
// 'background-color: rgba(96, 188, 242, 0.22)' +
'}' +
'.fast_click-ul .ranking-item {' +
// 'background-color: rgba(96, 188, 242, 0.22)' +
'}' +
'.fast_click-ul .fastClickDiv {' +
'display: block;' +
'}' +
'.fastClickDiv {' +
'display: none;' +
'position: absolute;' +
'height: 100%;' +
'width: 100%;' +
'left: 0px;' +
'z-index: 99;' +
// 'background-color: rgba(0, 0, 0, 0.1);' +
'background-color: rgba(96, 188, 242, 0.22);' +
'}';
//console.log(unsafeWindow);
GM_registerMenuCommand('快速点击',function(){
//$('._image-items .image-item').toggleClass('fast_click');
//console.log($('._image-items .image-item').length);
//console.log($('._image-items .image-item:not(fast_click)').length);
//console.log($('._image-items .image-item.fast_click').length);
//$('._image-items .image-item:not(fast_click)').css( 'background-color', 'rgba(96, 188, 242, 0.22)');
//$('._image-items .image-item.fast_click').css( 'background-color', '');
console.log("快速选择-状态更改");
toggle_fastClick();
},'fast_click');
GM_registerMenuCommand('相似列表',function(){
//alert(window.location.href);
//alert(window.location.href.match(/id=(\d*)[^\d]*/));
window.location.href = "https://www.pixiv.net/bookmark_add.php?id=" + window.location.href.match(/id=(\d*)[^\d]*/)[1];
},'similar_list');
$(document).keydown(function(e){
// console.log(e.which);
// console.log(e.altKey);
// e.shiftKey、e.ctrlKey
// alt + s 热键触发
if(e.altKey && e.keyCode == 83){
toggle_fastClick();
}
});
function toggle_fastClick(){
$('._image-items').toggleClass('fast_click-ul');
$('.ranking-items').toggleClass('fast_click-ul');
items3.toggleClass('fast_click-ul');
}
var fastClickDiv = $('<div>').addClass('fastClickDiv');
//列表快速点击模式
//$('#illust-recommend')
$('._image-items').each(function(i, ele){
console.log('_image-item:' + i);
$(this).on('DOMNodeInserted', function(e) {
//动态加载内容时触发
// console.log('element now contains: ' + $(e.target).html());
var ele;
if($(e.target).hasClass('fastClickDiv')){
// continue;
return true;
}else if($(e.target).hasClass('image-item')){
ele = e.target;
}else{
ele = $(e.target).parent('.image-item').get(0);
}
fastClick_imageItemsBuild(ele);
});
$(this).find('.image-item').each(function(i, ele){
// console.log('image-item:' + i);
fastClick_imageItemsBuild(ele);
});
});
function fastClick_imageItemsBuild(ele){
// console.log(ele);
if(!ele || $(ele).find('.fastClickDiv').length > 0){
return false;
}
var _fcd = fastClickDiv.clone();
$(ele).prepend(_fcd);
_fcd.click(function(e){
console.log('fastClickDiv>>>');
// console.log($(this).parent('.image-item').find('_one-click-bookmark'));
var _imgLi = $(this).parent('.image-item');
var _cb = _imgLi.find('input[type=checkbox]');
if(_cb.length > 0){
_cb.prop('checked', !_cb.prop('checked'));
}else{
_imgLi.find('._one-click-bookmark:not(.on)').click();
}
});
}
//附加拖蓝模
window.onselect = function() {
// alert('window');
};
window.onSelect = function() {
// alert('window');
};
//alert(window.onselect);
$('._image-items').on('select', '.image-item .fastClickDiv', function(e){
// alert(this.html());
});
$('._image-items').on('select', '.image-item', function(e){
// alert(this.html());
});
$('._image-items').on('select', '.image-item img', function(e){
// alert(this.html());
});
// ranking-items
// ranking-item
$('.ranking-items').each(function(i, ele){
console.log('_ranking-item:' + i);
$(this).find('.ranking-item').each(function(i, ele){
// console.log('ranking-item:' + i);
fastClick_imageItemsBuild2(ele);
});
$(this).on('DOMNodeInserted', function(e) {
//动态加载内容时触发
// console.log('element now contains: ' + $(e.target).html());
// console.log('element now contains: ');
// console.log(e.target);
var ele;
if($(e.target).hasClass('fastClickDiv')){
// continue;
return true;
}else if($(e.target).hasClass('ranking-item')){
// console.log('element now contains: hasClass');
// console.log(e.target);
ele = e.target;
}else{
// console.log('element now contains: not hasClass');
// console.log(e.target);
// ele = $(e.target).parent('.ranking-item').get(0);
}
fastClick_imageItemsBuild(ele);
});
});
// 让jquery动态绑定
$('.ranking-items').on('click', '.ranking-item .fastClickDiv', function(e){
console.log('fastClickDiv>>>');
console.log(this);
console.log($(this).parent('.ranking-item').get(0));
// console.log($(this).parent('.ranking-item').find('_one-click-bookmark'));
var _imgLi = $(this).parent('.ranking-item');
var _cb = _imgLi.find('input[type=checkbox]');
if(_cb.length > 0){
_cb.prop('checked', !_cb.prop('checked'));
}else{
_imgLi.find('._one-click-bookmark:not(.on)').click();
}
});
function fastClick_imageItemsBuild2(ele){
// console.log(ele);
if(!ele || $(ele).find('.fastClickDiv').length > 0){
return false;
}
var _fcd = fastClickDiv.clone();
$(ele).prepend(_fcd);
// 此方式自动新加载的内容点击时this无法使用
// _fcd.click(function(e){
// console.log('fastClickDiv>>>');
// console.log(this);
// console.log($(this).parent('.ranking-item').get(0));
// // console.log($(this).parent('.ranking-item').find('_one-click-bookmark'));
// var _imgLi = $(this).parent('.ranking-item');
// var _cb = _imgLi.find('input[type=checkbox]');
// if(_cb.length > 0){
// _cb.prop('checked', !_cb.prop('checked'));
// }else{
// _imgLi.find('._one-click-bookmark:not(.on)').click();
// }
// });
}
css +=
'/* 额外添加样式 */' +
'._7IVJuWZ {' +
'position: relative;' +
// 'background-color: rgba(96, 188, 242, 0.22);' +
'width: 200px;' +
'max-height: 272px;' +
'}';
var itemClass3 = "_7IVJuWZ";
var items3 = $('section.column-search-result #js-mount-point-search-result-list div');
// var items3 = $('#js-mount-point-search-result-list div:eq(0)');
// var items3 = $('section.column-search-result');
// console.log('itemClass3-' + itemClass3);
// console.log(items3);
$('section.column-search-result').on('DOMNodeInserted', function(e) {
items3 = $('#js-mount-point-search-result-list div:eq(0)');
if(items3.length < 1){
console.log('items3未完成加载');
return false;
}else if(items3.find('> div').length > 0){
console.log('items3完成加载');
// this.off('DOMNodeInserted');
// $('section.column-search-result').
// $('section.column-search-result').unbind();
$('section.column-search-result').off('DOMNodeInserted');
fastClick_searchList();
return true;
}
});
function fastClick_searchList(){
items3.each(function(i, ele){
console.log('items:-' + i);
$(this).find('> div:not(._premium-lead-popular-d-body)').each(function(i, ele){
console.log('item:-' + i);
// console.log(ele);
fastClick_searchListBuild(ele);
});
$(this).on('DOMNodeInserted', function(e) {
//动态加载内容时触发
// console.log('element now contains: ');
// console.log(e.target);
var ele;
if($(e.target).hasClass('fastClickDiv')){
// continue;
return true;
}else if($(e.target).hasClass(itemClass3)){
// console.log('element now contains: hasClass');
// console.log(e.target);
ele = e.target;
}else{
// console.log('element now contains: not hasClass');
}
fastClick_searchListBuild(ele);
});
});
console.log('items3:jquery委托点击事件');
// 让jquery动态绑定
// items3.on('click', '._one-click-bookmark', function(e){
// // 不论事件函数添加顺序都可停止冒泡
// e.stopPropagation();
// // return false;
// });
items3.on('click', '.' + itemClass3, function(e){
// console.log('fastClickDiv>>>');
// console.log(this);
// console.log(e.target);
if($(e.target).hasClass('_one-click-bookmark')){
// 收藏按钮应该也是委托在上册,所以不能中断
return true;
}
var _imgLi = $(this);
var _cb = _imgLi.find('input[type=checkbox]');
if(_cb.length > 0){
_cb.prop('checked', !_cb.prop('checked'));
}else{
// console.log(_imgLi.find('._one-click-bookmark:not(.on)').get(0));
_imgLi.find('._one-click-bookmark:not(.on)').click();
}
});
}
function fastClick_searchListBuild(ele){
// console.log(ele);
if(!ele || $(ele).find('.fastClickDiv').length > 0){
return false;
}
var _fcd = fastClickDiv.clone();
$(ele).prepend(_fcd);
}
//收藏星星
var _bookmarkIcon = $('<div>')
.prop('type', 'checkbox')
.addClass('_one-click-bookmark js-click-trackable')
.attr('data-click-category', 'abtest_www_one_click_bookmark')
.attr('data-click-action', 'illust')
.attr('data-click-label', 'id')
.attr('data-type', 'illust')
.attr('data-id', 'id')
.attr('title', '添加收藏');
console.log($('#illust-recommend ._image-items .image-item ._layout-thumbnail'));
//右侧推荐列表
//#illust-recommend
$('#illust-recommend').on('DOMNodeInserted', function(e) {
var items = $('#illust-recommend ._image-items .image-item ._layout-thumbnail');
if(items.length < 1){
console.log('推荐列表 未完成加载');
// }else if(items.find('> div').length > 0){
}else{
console.log('推荐列表 完成加载');
$(this).off('DOMNodeInserted');
// $('#illust-recommend').off('DOMNodeInserted');
items.each(function(i, ele){
var img = $(this).find('img');
var imgUrl = img.prop('src');
// var imgUrlEnd = imgUrl.match(/(\d+)([^\/]*$)/g);
var imgId = imgUrl.replace(/^.*\//g, '').replace(/_.*$/g, '');
var b = _bookmarkIcon.clone();
b.attr('data-click-label', imgId).attr('data-id', imgId);
$(this).append(b);
});
}
});
//作品查看页的添加收藏按钮
(function addPuls(){
var add = $('.reaction-container .bookmark-container .add-bookmark');
if(add.length < 1){
return false;
}
// illust_id
var illust_id = add.prop('href').replace(/^.*=/g, '');
add.append(_bookmarkIcon.clone().attr('data-click-label', illust_id).attr('data-id', illust_id));
})();
// console.log('???');
var TagTranslation = {
'タイツ' : '裤袜',
'パンスト' : '连裤袜',
'パンスト越しのパンツ' : '连裤袜',
'黒タイツ' : '黑色紧身衣',
'白タイツ' : '白色紧身衣',
'黒スト(ストッキング简写)' : '黑色丝袜',
'黒ストッキング' : '黑色丝袜',
'ニーソックス' : '膝袜',
'ソックス足裏' : '袜子脚底',
'足裏' : '脚底',
'パンスト' : '内裤',
'高品質パンツ' : '高品质裤子',
'ガールズ&パンツ' : '女孩和裤子',
'長手袋' : '?长筒手套',
'ドレス' : '一件衣服',
'ゴスロリ' : '哥特式服装',
'ブチ込みたい尻' : '胸闷屁股屁股',
'尻神様' : '上帝的屁股',
'揉みしだきたい尻' : '摩擦屁股飙升屁股',
'掴みシーツ' : '夹片?夹逼',
'潮吹き' : '喷',
'乳首ピアス' : '乳头耳环',
'首輪' : '项圈',
'調教' : '调教',
// 拘束
'乳出し' : '挤出来',
'乳上げ' : '哺乳',
'オナニー' : '手淫',
'マスターベーション' : '手淫',
'愛液' : '爱液',
'素股' : '股间性交',
'足コキ' : '足交',
'靴コキ' : '鞋交',
'お風呂' : '洗澡',
'胸膝位' : '乳房膝盖?跪着胸贴地',
'尿道' : '尿道',
'尿道責め' : '尿道折磨',
'アナルビーズ' : '肛门珠',
'乳内射精' : '乳交',
'馬乗りパイズリ' : '骑马乳交',
'着衣パイズリ' : '穿衣乳交',
'おっぱい' : '奶,乳房',
'極上の貧乳' : '精致的乳房',
'ロリ巨乳' : 'loli巨乳',
'胸がぱんぱかぱーん' : '乳房铅笔',
'ダイヤモンドバスト' : '钻石胸围',
'母乳' : '母乳',
'搾乳' : '搾乳',
'片乳' : '半乳',
'長髪' : '长发',
'黒髪ロング' : '黑长发',
'黒髪超ロング' : '很长的黑发',
'陰毛' : '阴毛',
'百合' : '百合',
'貝合わせ' : '配合一起',
'男の娘' : '男的女',
'女装' : '女装',
'女装オナニー' : '女装手淫',
'巨根' : '大鸡吧',
'dickgirl' : '爸爸女孩',
'futanari' : '扶他',
'ふたなり' : '雌雄同体',
'コンドーム' : '避孕套',
}
// console.log('原翻译的标签' + $('.tags-container .tags .tag a.text:has(.illust-tag-translation)').length);
$('.tags-container .tags .tag a.text:not(:has(.illust-tag-translation))').each(function(i, ele){
// var tagText = $(ele).find('a.text');
var tagObj = $(ele);
var tagText = $(ele).html();
// console.log(i + tagText);
var translationText;
if(TagTranslation[tagText]){
translationText = TagTranslation[tagText];
}else {
$.each(TagTranslation, function(key, value){
if(tagText.search(key) != -1){
translationText = tagText.replace(key, value);
return false;
}
});
}
if(translationText){
// console.log('翻译标签+' + translationText);
tagObj.append($('<span>').addClass('illust-tag-translation').html(translationText));
}
})
/** 最后添加额外的样式 **/
GM_addStyle(css);
})();