イノたまごラボ・あのぶる の「こんなの作ったよ!」

「イノたまごラボ」はひとり同人サークルのようなものです。今のところ同人誌は作っていませんが、ソフトウェアからイベントまで、心惹かれたものを細々と。

週刊のしいたけ占いが復活したので、一発で今週の占いに飛ぶブックマークレットを書いた

週刊しいたけ占いがついに復活しましたね、しいたけ占いは読んでいて元気が出たり励まされたりするので好きです。

ということで今週の自分の星座のしいたけ占いにバチっと一発でアクセスしたい*1ので、ブックマークレットを書きました。*2
コピペ用のコードはGistを眺めていただくとして、シンプルなコードではあるのですが微妙に引っかかったところの知見でもまとめておこうと思います。

gist.github.com

最初はわりとスタンダードなお作法(?)に従ってこんな風に書いてたんですが、これだとブランクタブでは動作しないという罠に引っかかりました。
(読みづらくて仕方ないので以降のコードは適宜改行とインデントを入れています)

javascript:(function(){
    const thisMonday = new Date();
    const dayOfWeek = thisMonday.getDay();
    const subDate = dayOfWeek === 0 ? 6 : dayOfWeek - 1;
    thisMonday.setDate(thisMonday.getDate() - subDate);
    window.location.href = `https://shiitakeuranai.jp/weekly-horoscope/${thisMonday.getFullYear()}-${(thisMonday.getMonth() + 1).toString().padStart(2, %270%27)}-${thisMonday.getDate().toString().padStart(2, 0)}/pisces/`;
})();

ありがたいことに対処法を記事にしている方がいたので、 neos21.net

参考にして(というかそのまま真似して)こんな風に修正しました。

data:text/html,
<script>
    const thisMonday = new Date();
    const dayOfWeek = thisMonday.getDay();
    const subDate = dayOfWeek === 0 ? 6 : dayOfWeek - 1;
    thisMonday.setDate(thisMonday.getDate() - subDate);
    window.location.href = `https://shiitakeuranai.jp/weekly-horoscope/${thisMonday.getFullYear()}-${(thisMonday.getMonth() + 1).toString().padStart(2, %270%27)}-${thisMonday.getDate().toString().padStart(2, 0)}/pisces/`;
</script>

その他注意点というかあんまり真面目に考慮していない点としては、おそらくまだページが公開されていないであろう月曜の日付が変わった直後にこのブックマークレットを使うと問答無用でその日公開されるはずのURLを見に行って404になっちゃうかもね、というあたりですかね。
来週あたり公開時間を何となく推測してその時間前であれば先週のページを、とかやってもいいのかもですが、最新の占いを見たくてアクセスしてるのに先週の占い見てもという気もしますし、正直個人的に困ってないのでそこまで頑張らなくてよいのかなと思っています。

よいしいたけ占いライフをお送りください。

*1:VOGUE GIRL掲載時はURLの日付を削ったURLにアクセスすると直近の分に飛んでくれるので、それをブックマークしていた

*2:遡る日数を三項演算子で判断しているところについて、競プロerなら剰余使ってどうにかしろとは自分でもちょっと思っています。