「どこかにビューーン」の候補駅チェッカーを自作する(Chrome拡張機能)

「どこかにビューーン」の候補駅チェッカー

「どこかにビューーン」で、好みの4駅が揃うまで検索を繰り返す。
候補4駅の即時確認と、そのログを残すことを目的として、Chrome拡張機能を活用する。

自分の場合、↓のようにChrome(PC)の画面下に「仙台75%」「郡山75%」などの結果と候補4駅を出力。
新幹線駅に詳しくないので、駅名や路線図を見て判断するのは時間がかかっていた。
あと自分は候補駅の結果をメモっておきたいんだが、毎回候補駅をコピペするのが大変だった。

そこでChrome拡張機能で、機械的にチェック&ログ出力することにしたんだな。
※駅名の確認を少し補助するだけのもので、全自動で検索をするようなものではない

どこかにビューーン Chrome拡張 実行結果

この結果コンソールを見ながら、ひたすら「再検索」ボタンを押す。
100回の再検索に、だいたい5分かかる。
※どこかにビューーンは1日100回までしか検索できない

「仙台75%」云々については、以下を参照。
新幹線「どこかにビューーン!」の路線出現ルールと途中駅下車で抽選突入条件を考える

Chrome拡張機能

「byunview」という名前のフォルダを作成し、その中に以下の2ファイルを作成する。

  • manifest.json
  • content.js

テキストエディタで「manifest.json」を作成する。

{
  "manifest_version": 3,
  "name": "びゅんVIEW",
  "version": "1.0",
  "description": "「https://dokokani-eki-net.com/dokokani/candidates」にアクセス時のみ自動実行する拡張機能",
  "permissions": ["activeTab"],
  "content_scripts": [
    {
      "matches": ["https://dokokani-eki-net.com/dokokani/candidates"],
      "js": ["content.js"],
      "run_at": "document_idle"
    }
  ]
}

テキストエディタで「content.js」を作成する。

(() => {
// タブ区切りで①~③をコンソールに1行出力・・・①[ターゲット駅][仙台75%?][福島75%?][郡山75%?](各1文字)、②候補駅、③候補路線
var shinkansen = [{station:'那須塩原駅',rosen:'東北新幹線'},{station:'新白河駅',rosen:'東北新幹線'},{station:'郡山駅',rosen:'東北新幹線'},{station:'福島駅',rosen:'東北新幹線'},{station:'白石蔵王駅',rosen:'東北新幹線'},{station:'仙台駅',rosen:'東北新幹線'},{station:'古川駅',rosen:'東北新幹線'},{station:'くりこま高原駅',rosen:'東北新幹線'},{station:'一ノ関駅',rosen:'東北新幹線'},{station:'水沢江刺駅',rosen:'東北新幹線'},{station:'北上駅',rosen:'東北新幹線'},{station:'新花巻駅',rosen:'東北新幹線'},{station:'盛岡駅',rosen:'東北新幹線'},{station:'いわて沼宮内駅',rosen:'東北新幹線'},{station:'二戸駅',rosen:'東北新幹線'},{station:'八戸駅',rosen:'東北新幹線'},{station:'七戸十和田駅',rosen:'東北新幹線'},{station:'新青森駅',rosen:'東北新幹線'},{station:'米沢駅',rosen:'山形新幹線'},{station:'高畠駅',rosen:'山形新幹線'},{station:'赤湯駅',rosen:'山形新幹線'},{station:'かみのやま温泉駅',rosen:'山形新幹線'},{station:'山形駅',rosen:'山形新幹線'},{station:'天童駅',rosen:'山形新幹線'},{station:'さくらんぼ東根駅',rosen:'山形新幹線'},{station:'村山駅',rosen:'山形新幹線'},{station:'大石田駅',rosen:'山形新幹線'},{station:'新庄駅',rosen:'山形新幹線'},{station:'雫石駅',rosen:'秋田新幹線'},{station:'田沢湖駅',rosen:'秋田新幹線'},{station:'角館駅',rosen:'秋田新幹線'},{station:'大曲駅',rosen:'秋田新幹線'},{station:'秋田駅',rosen:'秋田新幹線'},{station:'上毛高原駅',rosen:'上越新幹線'},{station:'越後湯沢駅',rosen:'上越新幹線'},{station:'浦佐駅',rosen:'上越新幹線'},{station:'長岡駅',rosen:'上越新幹線'},{station:'燕三条駅',rosen:'上越新幹線'},{station:'新潟駅',rosen:'上越新幹線'},{station:'安中榛名駅',rosen:'北陸新幹線'},{station:'軽井沢駅',rosen:'北陸新幹線'},{station:'佐久平駅',rosen:'北陸新幹線'},{station:'上田駅',rosen:'北陸新幹線'},{station:'長野駅',rosen:'北陸新幹線'},{station:'飯山駅',rosen:'北陸新幹線'},{station:'上越妙高駅',rosen:'北陸新幹線'}];
var station = '';
rosen = '';
result = '';
var ttl = document.getElementsByClassName('ttl');
for(i=0;i<4;i++){ station += '\t' + ttl[i].outerText.split('\n')[1]; rosen += '\t' + shinkansen.find(e => e.station === ttl[i].outerText.split('\n')[1]).rosen; }
// ターゲット駅・・・お目当ての駅のリストのうち何件ヒットしたらOKかを数字で設定、例えば上越・北陸から1駅、東北で1駅、計2件なら「2」。駅を複数書く場合は「|」で繋ぐ(何駅でもOK)。最初の「/」と最後の「/g」は触らない。全てが登場したら「★」、しなかったら「×」を出力
if ( (station.match( /新青森駅|七戸十和田駅|新潟駅|燕三条駅/g) || []).length >= 2) { result += '★'; } else { result += '×'};
// 仙台75%の場合は「仙」、そうでない場合は「×」を出力。福島と郡山も同様。上記ターゲット駅の結果に繋げて1文字ずつで出力。
if ( (station.match( /仙台駅|古川駅|くりこま高原駅|一ノ関駅|水沢江刺駅|北上駅|新花巻駅|盛岡駅|いわて沼宮内駅|二戸駅|八戸駅|七戸十和田駅|新青森駅|雫石駅|田沢湖駅|角館駅|大曲駅|秋田駅/g) || []).length >= 3) { result += '仙'; } else { result += '×'};
if ( (station.match( /福島駅|白石蔵王駅|仙台駅|古川駅|くりこま高原駅|一ノ関駅|水沢江刺駅|北上駅|新花巻駅|盛岡駅|いわて沼宮内駅|二戸駅|八戸駅|七戸十和田駅|新青森駅|雫石駅|田沢湖駅|角館駅|大曲駅|秋田駅|米沢駅|高畠駅|赤湯駅|かみのやま温泉駅|山形駅|天童駅|さくらんぼ東根駅|村山駅|大石田駅|新庄駅/g) || []).length >= 3) { result += '福'; } else { result += '×'};
if ( (station.match( /郡山駅|福島駅|白石蔵王駅|仙台駅|古川駅|くりこま高原駅|一ノ関駅|水沢江刺駅|北上駅|新花巻駅|盛岡駅|いわて沼宮内駅|二戸駅|八戸駅|七戸十和田駅|新青森駅|雫石駅|田沢湖駅|角館駅|大曲駅|秋田駅|米沢駅|高畠駅|赤湯駅|かみのやま温泉駅|山形駅|天童駅|さくらんぼ東根駅|村山駅|大石田駅|新庄駅/g) || []).length >= 3) { result += '郡'; } else { result += '×'};
console.log('\t' + result + station + rosen);
})();

以下の手順でChromeにインストールする。

  1. Chromeのメニュー「拡張機能」→「拡張機能を管理」(chrome://extensions/)
  2. 「パッケージ化されていない拡張機能を読み込む」で上記「byunview」フォルダを指定

「どこかにビューーン」のページを開いて、実行する。

  1. Chromeのメニュー「その他のツール」→「デベロッパーツール」を開く
  2. デベロッパーツールの「コンソール」を表示する
  3. この状態で「どこかにビューーン」を実行すると、ログが表示される

ほい。

そんな感じ。

tonogata
tonogata

2件のコメント

  1. 完全リタイアして5年経過し、その間プログラミングはまったくしていないので、自宅に戻ってからやってみようかな。

    子供がAI専門で、最近はAIでプログラミングできるので楽になったし、中途半端な技術者(就職先無くて、いやいやソフト業界に入ったような人たち)は不要になるだろうと言っていました。ちなみに、子供も私に似てしまい、2歳からPC触っていてプログラミングやハード周りも趣味でもやっています。

    • どもども。
      AIを使うとこの手のちょっとしたプログラムは簡単に作れるようになって、楽ちんですね。
      自分もChrome拡張機能の作り方は知らなかったですが、AIで「こういう機能をChrome拡張機能で作って」とかいうと、ソースからインストール方法まで教えてくれました。
      さすがにロジックは自分で書く部分がありますが、manifest.jsonとかは100%AIが作ってくれましたね。

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です