Macのランチャーで人気のRaycastには「Script Commands」と呼ばれるPhytonやBashなどさまざまな言語で作成した簡単なプログラムを起動できる機能が備わっています。
そこで、Raycastからジョルダンの検索ができるスクリプトを作ってみました。
言語はBashを選択
PythonとかRubyだと、端末に環境が入っていない場合でも動くのかわからなかったので、どの環境でも動くかなと思ってBashを使うことにしました。
やりたいこと
ジョルダンでシンプルな経路検索をします。
- 出発駅、到着駅、時間を設定できるようにする
- ジョルダンのサイトをブラウザで開く
「Script Commands」に渡せる引数は3つまでですので注意
実装
引数が3つまでしか使えないので、パターンによってスクリプトを分けます
出発時間で検索
#!/bin/bash
# Required parameters:
# @raycast.schemaVersion 1
# @raycast.title Search Jorudan (出発時間で検索)
# @raycast.mode compact
# Optional parameters:
# @raycast.icon 🚃
# @raycast.argument1 { "type": "text", "placeholder": "出発駅", "percentEncoded": true }
# @raycast.argument2 { "type": "text", "placeholder": "到着駅", "percentEncoded": true }
# @raycast.argument3 { "type": "text", "placeholder": "出発時間", "optional": true, "percentEncoded": true }
# @raycast.packageName Rocomotion
# Documentation:
# @raycast.description ジョルダンで出発時間での検索
# @raycast.author Rocomotion
# @raycast.authorURL https://raycast.com/rocomotion
eki1=$(printf '%b\n' "${1//%/\\x}")
eki2=$(printf '%b\n' "${2//%/\\x}")
URL="https://www.jorudan.co.jp/norikae/cgi/nori.cgi?eki1="$eki1"&eki2="$eki2"&S=検索&Cway=0"
if [ -n "$3" ]; then
STR=$3
CNT=${#STR}
if [ $CNT -eq 12 ]
then
URL=$URL"&Dyy="${STR:0:4}"&Dmm="${STR:4:2}"&Ddd="${STR:6:2}"&Dhh="${STR:8:2}"&Dmn="${STR:10:2}
elif [$CNT -eq 8]
then
URL=$URL"&Dmm="${STR:0:2}"&Ddd="${STR:2:2}"&Dhh="${STR:4:2}"&Dmn="${STR:6:2}
else
URL=$URL"&Dhh="${STR:0:2}"&Dmn="${STR:2:2}
fi
fi
open $URL
exit 0
- 出発時間は必須ではないので、入れなければ現在時間での検索
- 出発時間は12桁か8桁か4桁で入力(yyyyMMddHHmm / MMddHHmm / HHmm)
到着時間で検索
#!/bin/bash
# Required parameters:
# @raycast.schemaVersion 1
# @raycast.title Search Jorudan (到着時間で検索)
# @raycast.mode compact
# Optional parameters:
# @raycast.icon 🚃
# @raycast.argument1 { "type": "text", "placeholder": "出発駅", "percentEncoded": true }
# @raycast.argument2 { "type": "text", "placeholder": "到着駅", "percentEncoded": true }
# @raycast.argument3 { "type": "text", "placeholder": "到着時間", "optional": true, "percentEncoded": true }
# @raycast.packageName Rocomotion
# Documentation:
# @raycast.description ジョルダンで到着時間での検索
# @raycast.author Rocomotion
# @raycast.authorURL https://raycast.com/rocomotion
eki1=$(printf '%b\n' "${1//%/\\x}")
eki2=$(printf '%b\n' "${2//%/\\x}")
URL="https://www.jorudan.co.jp/norikae/cgi/nori.cgi?eki1="$eki1"&eki2="$eki2"&S=検索&Cway=1"
if [ -n "$3" ]; then
STR=$3
CNT=${#STR}
if [ $CNT -eq 12 ]
then
URL=$URL"&Dyy="${STR:0:4}"&Dmm="${STR:4:2}"&Ddd="${STR:6:2}"&Dhh="${STR:8:2}"&Dmn="${STR:10:2}
elif [$CNT -eq 8]
then
URL=$URL"&Dmm="${STR:0:2}"&Ddd="${STR:2:2}"&Dhh="${STR:4:2}"&Dmn="${STR:6:2}
else
URL=$URL"&Dhh="${STR:0:2}"&Dmn="${STR:2:2}
fi
fi
open $URL
exit 0
- 到着時間は必須ではないので、入れなければ現在時間での検索
- 到着時間は12桁か8桁か4桁で入力(yyyyMMddHHmm / MMddHHmm / HHmm)
基本はこの2つでだいたい事足りると思いますが、最寄り駅からの検索が多い方は駅を固定してしまうと便利です。
出発駅を固定して出発/到着時間で検索
最寄り駅は「成田」と仮定しています。
「成田」の部分を最寄り駅にすると便利です。
#!/bin/bash
# Required parameters:
# @raycast.schemaVersion 1
# @raycast.title Search Jorudan 成田からの到着時間
# @raycast.mode compact
# Optional parameters:
# @raycast.icon 🚃
# @raycast.argument1 { "type": "text", "placeholder": "到着駅", "percentEncoded": true }
# @raycast.argument2 { "type": "text", "placeholder": "時間", "optional": true, "percentEncoded": true }
# @raycast.argument3 { "type": "text", "placeholder": "0:出発時間/1:到着時間", "optional": true, "percentEncoded": false }
# @raycast.packageName Rocomotion
# Documentation:
# @raycast.description ジョルダンで成田からの到着時間検索
# @raycast.author Rocomotion
# @raycast.authorURL https://raycast.com/rocomotion
FROM="成田"
if [ -n "$3" ]; then
if [ "$3" = "0" ]; then
CWAY=0
else
CWAY=1
fi
else
CWAY=1
fi
eki=$(printf '%b\n' "${1//%/\\x}")
URL="https://www.jorudan.co.jp/norikae/cgi/nori.cgi?eki1="$FROM"&eki2="$eki"&S=検索&Cway="$CWAY
if [ -n "$2" ]; then
TIME=$2
CNT=${#TIME}
if [ $CNT -eq 12 ]
then
URL=$URL"&Dyy="${STR:0:4}"&Dmm="${STR:4:2}"&Ddd="${STR:6:2}"&Dhh="${STR:8:2}"&Dmn="${STR:10:2}
elif [ $CNT -eq 8 ]
then
URL=$URL"&Dmm="${TIME:0:2}"&Ddd="${TIME:2:2}"&Dhh="${TIME:4:2}"&Dmn="${TIME:6:2}
else
URL=$URL"&Dhh="${TIME:0:2}"&Dmn="${TIME:2:2}
fi
fi
open $URL
exit 0
- 時間は必須ではないので、入れなければ現在時間での検索
- 時間は12桁か8桁か4桁で入力(yyyyMMddHHmm / MMddHHmm / HHmm)
- 初期値は到着時間での検索となりますが、「0:出発時間/1:到着時間」に0と入れれば出発時間で検索
出発駅/到着駅を固定して出発時間で検索
駅までのお迎えなど、最寄り駅に何時に着くのかを検索するのに便利です。
「佐倉」の部分に学校や会社など良く乗る出発駅、「成田」の部分に最寄り駅と変えておくと便利です。
#!/bin/bash
# Required parameters:
# @raycast.schemaVersion 1
# @raycast.title Search Jorudan 成田への到着時間
# @raycast.mode compact
# Optional parameters:
# @raycast.icon 🚃
# @raycast.argument1 { "type": "text", "placeholder": "出発時間", "percentEncoded": true }
# @raycast.argument2 { "type": "text", "placeholder": "出発駅", "optional": true, "percentEncoded": true }
# @raycast.packageName Rocomotion
# Documentation:
# @raycast.description ジョルダンで成田への到着時間検索
# @raycast.author Rocomotion
# @raycast.authorURL https://raycast.com/rocomotion
FROM="佐倉"
TO="成田"
if [ -n "$2" ]; then
str=$(printf '%b\n' "${2//%/\\x}")
FROM=$str
fi
TIME=$1
CNT=${#TIME}
URL="https://www.jorudan.co.jp/norikae/cgi/nori.cgi?eki1="$FROM"&eki2="$TO"&S=検索&Cway=0"
if [ $CNT -eq 12 ]
then
URL=$URL"&Dyy="${STR:0:4}"&Dmm="${STR:4:2}"&Ddd="${STR:6:2}"&Dhh="${STR:8:2}"&Dmn="${STR:10:2}
elif [ $CNT -eq 8 ]
then
URL=$URL"&Dmm="${TIME:0:2}"&Ddd="${TIME:2:2}"&Dhh="${TIME:4:2}"&Dmn="${TIME:6:2}
else
URL=$URL"&Dhh="${TIME:0:2}"&Dmn="${TIME:2:2}
fi
open $URL
exit 0
- 初期値は出発・到着駅固定ですが、違う駅から乗る場合は「出発駅」に入れればその駅から検索します
- 時間は12桁か8桁か4桁で入力(yyyyMMddHHmm / MMddHHmm / HHmm)
出発駅を学校や会社の駅にしておくと、何時に最寄り駅に着くのかを間単に検索できるので便利です
最後に
複雑な検索には未対応ですが、引数を3つしか渡せないので、これくらいの検索が限界かなと思います。
Raycastは本当に使いやすいランチャーですのでおすすめです。
長い間Alfredの有料版を使っていましたが、完全にRaycastへ乗り換えました。
無料で十分な機能が備わっていますが、RaycastからChat GPTを使いたい方はPro版が必要です。
個人的にはGPT-4 Turboに対応して、安くなればPro版にしようかなと考えています。
現在は無料版を使っているので、複数端末での設定同期は手動となります。
スクリプトファイル、設定ファイルの置き場としてDropboxのフォルダを指定すると、ファイル自体は同期されますので、設定ファイルをエクスポート、インポートするだけとなり便利です。