やりたいこと
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