Skip to content

Commit 423aeb6

Browse files
committed
Update Picviewer CE+.user.js
1 parent f5944cf commit 423aeb6

1 file changed

Lines changed: 79 additions & 34 deletions

File tree

Picviewer CE+/Picviewer CE+.user.js

Lines changed: 79 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
// @description:ja オンラインで画像を強力に閲覧できるツール。ポップアップ表示、拡大・縮小、回転、一括保存などの機能を自動で実行できます
1313
// @description:pt-BR Poderosa ferramenta de visualização de imagens on-line, que pode pop-up/dimensionar/girar/salvar em lote imagens automaticamente
1414
// @description:ru Мощный онлайн-инструмент для просмотра изображений, который может автоматически отображать/масштабировать/вращать/пакетно сохранять изображения
15-
// @version 2024.6.8.1
15+
// @version 2024.6.8.2
1616
// @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAV1BMVEUAAAD////29vbKysoqKioiIiKysrKhoaGTk5N9fX3z8/Pv7+/r6+vk5OTb29vOzs6Ojo5UVFQzMzMZGRkREREMDAy4uLisrKylpaV4eHhkZGRPT08/Pz/IfxjQAAAAgklEQVQoz53RRw7DIBBAUb5pxr2m3/+ckfDImwyJlL9DDzQgDIUMRu1vWOxTBdeM+onApENF0qHjpkOk2VTwLVEF40Kbfj1wK8AVu2pQA1aBBYDHJ1wy9Cf4cXD5chzNAvsAnc8TjoLAhIzsBao9w1rlVTIvkOYMd9nm6xPi168t9AYkbANdajpjcwAAAABJRU5ErkJggg==
1717
// @namespace https://github.com/hoothin/UserScripts
1818
// @homepage https://www.hoothin.com
@@ -46,8 +46,8 @@
4646
// @grant GM.notification
4747
// @grant unsafeWindow
4848
// @require https://update.greasyfork.org/scripts/6158/23710/GM_config%20CN.js
49-
// @require https://update.greasyfork.org/scripts/438080/1384302/pvcep_rules.js
50-
// @require https://update.greasyfork.org/scripts/440698/1389981/pvcep_lang.js
49+
// @require https://update.greasyfork.org/scripts/438080/1391020/pvcep_rules.js
50+
// @require https://update.greasyfork.org/scripts/440698/1391048/pvcep_lang.js
5151
// @downloadURL https://greasyfork.org/scripts/24204-picviewer-ce/code/Picviewer%20CE+.user.js
5252
// @updateURL https://greasyfork.org/scripts/24204-picviewer-ce/code/Picviewer%20CE+.meta.js
5353
// @match *://*/*
@@ -12389,6 +12389,8 @@ ImgOps | https://imgops.com/#b#`;
1238912389
sidebarSize: 120,//侧栏的高(如果是水平放置)或者宽(如果是垂直放置)
1239012390
backgroundColor: 'rgba(20,20,20,0.75)',
1239112391
formatConversion: "webp>png",
12392+
aria2Host: "http://localhost:6800",
12393+
aria2Token: "",
1239212394
sidebarToggle: true, // 是否显示隐藏按钮
1239312395
transition:true,//大图片区的动画。
1239412396
preload:true,//对附近的图片进行预读。
@@ -13649,6 +13651,7 @@ ImgOps | https://imgops.com/#b#`;
1364913651
'<span class="pv-gallery-head-command-drop-list-item" data-command="enterCollection" title="'+i18n("viewCollectionTip")+'">'+i18n("viewCollection")+'</span>'+
1365013652
'<span class="pv-gallery-head-command-drop-list-item" data-command="psImage" title="'+i18n("onlineEditTip"," " + prefs.gallery.editSite + " ")+'">'+i18n("onlineEdit")+'</span>'+
1365113653
'<span class="pv-gallery-head-command-drop-list-item" data-command="downloadImage" title="'+i18n("downloadImageTip")+'">'+i18n("downloadImage")+'</span>'+
13654+
'<span class="pv-gallery-head-command-drop-list-item" data-command="postImagesToAria2" title="'+i18n("post2Aria2")+'">'+i18n("post2Aria2")+'</span>'+
1365213655
'<span class="pv-gallery-head-command-drop-list-item" data-command="exportImages" title="'+i18n("exportImagesTip")+'">'+i18n("exportImages")+'</span>'+
1365313656
'<span class="pv-gallery-head-command-drop-list-item" data-command="copyImages" title="'+i18n("copyImagesUrlTip")+'">'+i18n("copyImagesUrl")+'</span>'+
1365413657
'<span class="pv-gallery-head-command-drop-list-item" data-command="scrollIntoView" title="'+i18n("findInPageTip")+'">'+i18n("findInPage")+'</span>'+
@@ -14407,12 +14410,38 @@ ImgOps | https://imgops.com/#b#`;
1440714410

1440814411
prefs.gallery.scrollEndAndLoad = !!storage.getListItem("scrollEndAndLoad", location.hostname);
1440914412
eleMaps['head-command-drop-list-others'].querySelector('input[data-command="scrollToEndAndReload"]').checked = prefs.gallery.scrollEndAndLoad;
14410-
var srcSplit,downloading=false;
14413+
let srcSplit, downloading=false, saveParams;
14414+
function getSaveParams() {
14415+
let nodes = self.eleMaps['sidebar-thumbnails-container'].querySelectorAll('.pv-gallery-sidebar-thumb-container[data-src]');
14416+
let saveParams = [],saveIndex=0;
14417+
[].forEach.call(nodes, function(node){
14418+
if(unsafeWindow.getComputedStyle(node).display!="none"){
14419+
saveIndex++;
14420+
if (node.dataset.src.indexOf('data') === 0) srcSplit = "";
14421+
else {
14422+
srcSplit=node.dataset.src || '';
14423+
}
14424+
let title = node.title.indexOf('\n') !== -1 ? node.title.split('\n')[0] : node.title;
14425+
title = title.indexOf('http') === 0 || title.indexOf('data') === 0 ? '' : title;
14426+
title = getRightSaveName(srcSplit, title, prefs.saveName);
14427+
let picName = (saveIndex < 10 ? "00" + saveIndex : (saveIndex < 100 ? "0" + saveIndex : saveIndex)) + (title ? "-" + title : ""), hostArr = location.host.split(".");
14428+
let host = hostArr[hostArr.length-2];
14429+
saveParams.push([node.dataset.src, picName]);
14430+
if (node.dataset.srcs) {
14431+
node.dataset.srcs.split(",").forEach(src => {
14432+
saveParams.push([src, picName]);
14433+
});
14434+
}
14435+
//saveAs(node.dataset.src, location.host+"-"+srcSplit[srcSplit.length-1]);
14436+
}
14437+
});
14438+
return saveParams;
14439+
}
1441114440
//命令下拉列表的点击处理
1441214441
eleMaps['head-command-drop-list-others'].addEventListener('click',function(e){
1441314442
if(e.button!=0)return;//左键
14414-
var target=e.target;
14415-
var command=dataset(target,'command');
14443+
let target=e.target;
14444+
let command=dataset(target,'command');
1441614445
if(!command)return;
1441714446
switch(command){
1441814447
case 'openInNewWindow':{
@@ -14429,9 +14458,9 @@ ImgOps | https://imgops.com/#b#`;
1442914458
self.showTips(i18n("inCollection"));
1443014459
return;
1443114460
};
14432-
var relatedThumb=self.relatedThumb;
14433-
var index=arrayFn.indexOf.call(self.imgSpans,relatedThumb);
14434-
var targetImg=self.data[index].img;
14461+
let relatedThumb=self.relatedThumb;
14462+
let index=arrayFn.indexOf.call(self.imgSpans,relatedThumb);
14463+
let targetImg=self.data[index].img;
1443514464

1443614465
if(targetImg){
1443714466
if(!document.documentElement.contains(targetImg) || unsafeWindow.getComputedStyle(targetImg).display=='none'){//图片不存在文档中,或者隐藏了。
@@ -14470,32 +14499,36 @@ ImgOps | https://imgops.com/#b#`;
1447014499
case 'exportImages':
1447114500
self.exportImages();
1447214501
break;
14502+
case 'postImagesToAria2':
14503+
if (!prefs.gallery.aria2Host) {
14504+
self.showTips("Configure aria2 first!", 1000);
14505+
return;
14506+
}
14507+
saveParams = getSaveParams();
14508+
[].forEach.call(saveParams, function(param){
14509+
_GM_xmlhttpRequest({
14510+
method: 'POST',
14511+
url: prefs.gallery.aria2Host + "/jsonrpc",
14512+
data: JSON.stringify({
14513+
params: [
14514+
"token:" + (prefs.gallery.aria2Token || ""),
14515+
[param[0]],
14516+
{"out": param[1]}
14517+
],
14518+
jsonrpc: "2.0",
14519+
method: "aria2.addUri",
14520+
id: Math.random()
14521+
}),
14522+
onload: function(d) {
14523+
}
14524+
});
14525+
});
14526+
self.showTips("Completed!", 1000);
14527+
break;
1447314528
case 'downloadImage':
1447414529
if(downloading)break;
1447514530
downloading=true;
14476-
var nodes = self.eleMaps['sidebar-thumbnails-container'].querySelectorAll('.pv-gallery-sidebar-thumb-container[data-src]');
14477-
var saveParams = [],saveIndex=0;
14478-
[].forEach.call(nodes, function(node){
14479-
if(unsafeWindow.getComputedStyle(node).display!="none"){
14480-
saveIndex++;
14481-
if (node.dataset.src.indexOf('data') === 0) srcSplit = "";
14482-
else {
14483-
srcSplit=node.dataset.src || '';
14484-
}
14485-
var title = node.title.indexOf('\n') !== -1 ? node.title.split('\n')[0] : node.title;
14486-
title = title.indexOf('http') === 0 || title.indexOf('data') === 0 ? '' : title;
14487-
title = getRightSaveName(srcSplit, title, prefs.saveName);
14488-
var picName = (saveIndex < 10 ? "00" + saveIndex : (saveIndex < 100 ? "0" + saveIndex : saveIndex)) + (title ? "-" + title : ""), hostArr = location.host.split(".");
14489-
var host = hostArr[hostArr.length-2];
14490-
saveParams.push([node.dataset.src, picName]);
14491-
if (node.dataset.srcs) {
14492-
node.dataset.srcs.split(",").forEach(src => {
14493-
saveParams.push([src, picName]);
14494-
});
14495-
}
14496-
//saveAs(node.dataset.src, location.host+"-"+srcSplit[srcSplit.length-1]);
14497-
}
14498-
});
14531+
saveParams = getSaveParams();
1449914532
self.batchDownload(saveParams, ()=>{
1450014533
downloading=false;
1450114534
self.showTips("Completed!", 1000);
@@ -14579,7 +14612,7 @@ ImgOps | https://imgops.com/#b#`;
1457914612
}
1458014613
break;
1458114614
case 'addImageUrls':
14582-
var urls = window.prompt(i18n('addImageUrls') + ": White space to split multi-image, '[01-09]' to generate nine urls from 01 to 09, '$http://xxx' to fetch images from page","https://xxx.xxx/pic-[20-99].jpg https://xxx.xxx/pic-[01-10].png");
14615+
let urls = window.prompt(i18n('addImageUrls') + ": White space to split multi-image, '[01-09]' to generate nine urls from 01 to 09, '$http://xxx' to fetch images from page","https://xxx.xxx/pic-[20-99].jpg https://xxx.xxx/pic-[01-10].png");
1458314616
if (!urls) return;
1458414617
self.addImageUrls(urls);
1458514618
break;
@@ -14742,7 +14775,7 @@ ImgOps | https://imgops.com/#b#`;
1474214775
}
1474314776
}
1474414777
addWheelEvent(eleMaps['body'],function(e){//wheel事件
14745-
if(e.deltaZ!=0)return;//z轴
14778+
if(e.deltaZ!=0 || e.target.nodeName=="TEXTAREA")return;//z轴
1474614779
if(eleMaps['sidebar-toggle'].style.visibility == 'hidden')return;
1474714780
var target=e.target;
1474814781
//e.preventDefault();
@@ -19014,6 +19047,7 @@ ImgOps | https://imgops.com/#b#`;
1901419047
height: 80vh;\
1901519048
border: 10px solid #272727;\
1901619049
background: #ffffffee;\
19050+
color: black;\
1901719051
}\
1901819052
span.pv-gallery-urls-textarea-close,\
1901919053
span.pv-gallery-urls-textarea-download{\
@@ -25333,6 +25367,17 @@ ImgOps | https://imgops.com/#b#`;
2533325367
type: 'textarea',
2533425368
"default": prefs.gallery.formatConversion || ''
2533525369
},
25370+
'gallery.aria2Host': {
25371+
label: i18n("aria2Host"),
25372+
type: 'text',
25373+
className: 'order',
25374+
"default": prefs.gallery.aria2Host || 'http://localhost:6800'
25375+
},
25376+
'gallery.aria2Token': {
25377+
label: i18n("aria2Token"),
25378+
type: 'text',
25379+
"default": prefs.gallery.aria2Token || ''
25380+
},
2533625381
'gallery.scaleSmallSize': {
2533725382
label: i18n("galleryScaleSmallSize1"),
2533825383
type: 'int',

0 commit comments

Comments
 (0)