5.gif

BornForPorn

GF  2021-07-05 22:08
(happyboat)

求教一种在yande.re(Y站)运行的油猴脚本编写问题

在y站上,在没有任何操作的情况下,我们可以看到的图片记作○。另外有些图片的最上方,有一行提示——“This post has been temporarily held from the index by the poster.”,这样的图片我们暂且记作△。
最近呢,从它的论坛上知道了在搜索栏加一个"holds:true"的标签,就可以把所有的△单独显示出来;而如果加的标签是“holds:all”,那就可以在正常页面中看到所有图片,即○+△。当然,你不添加任何标签,和添加"holds:false",效果是一样的,仅仅会得到○。
为了利用脚本解放双手,实现自动化(就是懒,每次输入这几个字母觉得麻烦...),我想编写一个可以自动添加'holds:all'标签的脚本、奈何知识储备有限,难以达成此目标,特此向论坛程序员大佬们求助。
我只会写下面这行代码...每次进入主页就可以自动跳转到含有"holds:all"的网页:if(window.location.href=="https://yande.re/post"){window.location.href+="?tags=+holds%3Aall+";}
请问如果在非"holds:all"的任意标签中,添加一个"holds:all"该如何写代码?比如现在有一个sakimichan的标签,其网址理应为“https://yande.re/post?tags=sakimichan+”,如果想自动添加"holds:all",变成"https://yande.re/post?tags=sakimichan+holds%3Aall+"该如何编写呢?window.location.href这个变量只能执行加法,无法进行减法操作吗?每次与网址相减,最后结果都是NaN...

5.gif

BornForPorn

B1F  2021-07-05 22:09
(happyboat)
草,好像有点长,而且不能排版吗?感觉会有大佬瞟一眼就懒得看了...

1217403.png

b5ebe3f5

我是js新手
楼主试试这样
if(window.location.href.match("https://yande.re/post") !== null && window.location.href.match("Aall") === null){
  if (window.location.href.match("tags") !== null){
    window.location.href+="holds%3Aall+";
  }
  else{
         window.location.href+="?tags=+holds%3Aall+";
  }
}

1217403.png

b5ebe3f5

另外字符串应该没有减法这种操作吧,只能用replace这种

none.gif

胖次郎

可以试试这段:
    if(window.location.href.indexOf('?tags=') > -1 && window.location.href.indexOf('holds%3Aall') === -1) {
        window.location.href += '+holds%3Aall+';
    }
另js中字符串操作可以参考:https://zh.javascript.info/string

5.gif

BornForPorn

B5F  2021-07-05 23:39
(happyboat)

回 2楼(b5ebe3f5) 的帖子

试了一下你的代码,发现有两处问题。
第一个是,代码第三行,即if后、else前的操作:如果点击一个标签a,那么直接就变成了网址就变成了 /post?tags=aholds%3Aall+ 这种形式,然后就啥也显示不出来了,当然解决方法也很简单,就是前面填个加号,即+holds%3Aall+这样,url里多一个+没有什么影响。
第二个是,当网址不显示tag,而显示某一张post的时候,还是在后面执行了else的操作:比如一张图的编号是666666,正常网址显示为post/show/666666,执行完脚本就变成了post/show/666666?tags=+holds%3Aall+ 虽然依然不会影响画面显示,但是额外刷新了一次网页,有些别扭。
试了一下4L兄弟的代码,好像可以完美解决添加标签的操作。但还是要谢谢你啦   

5.gif

BornForPorn

B6F  2021-07-05 23:40
(happyboat)
引用
引用第3楼b5ebe3f5于2021-07-05 22:29发表的  :
另外字符串应该没有减法这种操作吧,只能用replace这种

我以前学的C/C++,字符串好像可以减操作。js完全陌生,用起来就懵逼了

5.gif

BornForPorn

B7F  2021-07-05 23:42
(happyboat)
引用
引用第4楼ff3b8f4b于2021-07-05 23:06发表的  :
可以试试这段:
    if(window.location.href.indexOf('?tags=') > -1 && window.location.href.indexOf('holds%3Aall') === -1) {
        window.location.href += '+holds%3Aall+';
    }
另js中字符串操作可以参考:https://zh.javascript.info/string

这就叫专业.jpg。两行代码就搞定了,太谢谢大佬了

5.gif

BornForPorn

B8F  2021-07-05 23:51
(happyboat)
引用
引用第4楼ff3b8f4b于2021-07-05 23:06发表的  :
可以试试这段:
    if(window.location.href.indexOf('?tags=') > -1 && window.location.href.indexOf('holds%3Aall') === -1) {
        window.location.href += '+holds%3Aall+';
    }
另js中字符串操作可以参考:https://zh.javascript.info/string

单独用你的代码,可以完成点击一个标签后自动添加“holds:all+”的操作,但是一进入主页面的时候就没办法自动加了。就是进入【https://yande.re/post】这里,没有自动变成【https://yande.re/post?tags=holds%3Aall+】。但如果把我在1L写的代码和你的结合起来,就开始在主界面无限循环添加"holds%3Aall"刷新页面了

623457.gif

deadstranded

B9F  2021-07-06 00:17
(deadstranded)
yande的图片资料应该不算太珍贵吧,ehentai应该都有吧,在pixiv里的也有挺多的,难道说!!!

1248026.jpg

一般通过

没看懂什么true、false的 ,这个行不行

location.pathname == "/post" && !/\?tags=.*?\+holds%3Aall/.test(location.href) ? (/\?tags=/.test(location.href) && !/\+holds%3Aall/.test(location.href) ? location.href += '+holds%3Aall' : location.href += '?tags=+holds%3Aall') : location.href

none.gif

91919

B11F  2021-07-06 05:52
(麻了 麻了 麻麻了)
不会 给你顶下

5.gif

BornForPorn

B12F  2021-07-06 10:23
(happyboat)
引用
引用第10楼fd7bedda于2021-07-06 03:59发表的  :
没看懂什么true、false的   ,这个行不行   

location.pathname == "/post" && !/\?tags=.*?\+holds%3Aall/.test(location.href) ? (/\?tags=/.test(location.href) && !/\+holds%3Aall/.test(location.href) ? location.href += '+holds%3Aall' : location.href += '?tags=+holds%3Aall') : location.href

好家伙,虽然一行代码我啥也没看懂,但好像确实效果不错谢谢大佬

5.gif

BornForPorn

B13F  2021-07-06 10:30
(happyboat)
引用
引用第9楼4902e2b3于2021-07-06 00:17发表的  :
yande的图片资料应该不算太珍贵吧,ehentai应该都有吧,在pixiv里的也有挺多的,难道说!!!

emmm...怎么说呢。ehentai上面有太多欧美的,还有西方人的cosplay,非常不喜欢(虽然开了标签过滤也能解决),而且ehentai得挂梯子吧,yande.re有个可以直连的镜像【https://oreno.imouto.us/post】。pixiv呢就属于只能看到自己关注的画师的,也得连梯子;yande基本上是很多网友去实时分享新画作,有的时候能发现新画师。个人喜欢先通过直连yande找图,遇到喜欢的就会通过附带链接,挂梯子去pixiv找画师、或者在ehentai上扒作品。

5.gif

BornForPorn

B14F  2021-07-06 10:33
(happyboat)
引用
引用第10楼fd7bedda于2021-07-06 03:59发表的  :
没看懂什么true、false的   ,这个行不行   

location.pathname == "/post" && !/\?tags=.*?\+holds%3Aall/.test(location.href) ? (/\?tags=/.test(location.href) && !/\+holds%3Aall/.test(location.href) ? location.href += '+holds%3Aall' : location.href += '?tags=+holds%3Aall') : location.href

一开始没注意到,后来发现每次切换页面,都会在后面加一个hold。切5次页面就会带上5个hold(强迫症看着难受,虽然没影响

1217403.png

b5ebe3f5

// ==UserScript==
// @name     Unnamed Script 378048
// @version  1
// @grant    none
//


// @run-at document-start
// @include https://yande.re/*


if(/post$/.test(location.pathname) && !/holds%3Aall/.test(location.search)){
  if(/tags=/.test(location.search)){
    newURL = location.protocol+"//"+location.host+location.pathname+location.search.replace(/tags=/, "tags=holds%3Aall\+")
    location.replace(newURL);
  }
  else{
      newURL = location.protocol+"//"+location.host+location.pathname+"?tags=holds%3Aall+";
      location.replace(newURL);
  }

}




试试

5.gif

BornForPorn

B16F  2021-07-09 16:03
(happyboat)
引用
引用第15楼b5ebe3f5于2021-07-06 11:25发表的  :
// ==UserScript==
// @name     Unnamed Script 378048
// @version  1
// @grant    none
//
.......

好像可以是终极版了