日記

日本語の勉強のためのブログ

pixiv検索時にusersタグを付与するブックマークレットを作る

やりたいこと

pixivには作品のブックマーク数に応じてタグをつける風習がある。
具体的には「艦これ1000users入り」や「アイマス1000users入り」のように、「[作品名][ブックマーク数]users入り」という形式のタグが追加される。
このタグを付けて検索すると人気の作品を見つけやすいため、個人的によく使っている。

しかし検索時に毎回そのタグを入れるのは面倒である。
なので今回は、押すだけで「1000users入り」タグを付与して検索してくれるブックマークレットを作ろうと思う。
具体的には、
https://www.pixiv.net/tags/電(艦隊これくしょん)/artworks?s_mode=s_tag
のようなURLを、
https://www.pixiv.net/tags/電(艦隊これくしょん) 1000users/artworks?s_mode=s_tag
のように整形して遷移するようにしたい。

準備

最初はwindow.location.replaceと正規表現を使おうかと思っていたが、window.location.replaceを使うと、遷移前のページに戻れないことが判明した。
Location.replace() - 現在のURLを置換する

結局、splitメソッドとwindow.location.hrefを用いる方が簡単そうなので、そちらを用いることにした。
ブックマークレットでURLを置換したいのですが、2箇所の任意の文字列を保持し... - Yahoo!知恵袋
String.prototype.split() - JavaScript | MDN

splitメソッドを使えば、文字列を指定した文字で分割してくれる。
また、window.location.hrefは現在表示しているページのURLを示す。これに遷移先のURLを入れれば、そのURLのページに移動できる。

作る

作ったらたった2行になった。
まず、

var splitedURL = location.href.split('/');

で現在表示しているページのURLを/で分割し、配列splitedURLに入れる。
次に

window.location.href = "https://www.pixiv.net/tags/" + splitedURL[4] + " 1000users/artworks?s_mode=s_tag";

で「1000users」タグを付与したURLに遷移させている。ここで、splitedURL[4]は現在の検索クエリである。

ブックマークレット

できた。

javascript:(function(){var a=location.href.split("/");window.location.href="https://www.pixiv.net/tags/"+a[4]+" 1000users/artworks?s_mode=s_tag"})();

いつものようにこのサイトを利用した。
Closure Compiler Service