Auto hide next up card for Amazon Prime Video v2.8.0 リリース

JavaScriptchat_bubble0

Amazon Prime VideoのNext up等の邪魔な要素を非表示にする「Auto hide next up card for Amazon Prime Video v2.8.0」をリリースしました。

v2.7.0からの変更点

  • 動画を閉じた後にオプションダイアログを開いた場合にページのスクロールを許容してしまう問題の修正
  • 実験的: 動画終了時に自動的に閉じた場合に次のエピソードを再生する機能を追加(xhookを使用)

v2.7.0で動画を開いていない場合でもオプションダイアログを開けるようにしたのですが、動画を閉じた後にオプションダイアログを開くとページのスクロールが許容されるという問題がありました。これは動画を閉じるとbodyに新しく「overflow: visible;」が設定されるというプライムビデオの挙動が原因だったようで、スクロールを許容しないようにするCSSに !important を追加することで解決しました。

「動画終了時に自動的に閉じた場合に次のエピソードを再生する機能」は、プライムビデオの自動再生の挙動に対する対処策です。プライムビデオは自動再生をオンにすることで次のエピソードを自動的に再生してくれますが、6話分を再生すると動画を閉じるという仕様になっています。

v2.7.0で追加した「自動再生のフラグをtrueに変更する機能」は通信内容を改変することで強制的に自動再生をオンの状態にしますが、それをやっても6話の制限は回避できませんでした。通信内容を確認した限りでは怪しいフラグなどは見当たらず、自動再生のフラグがtrueになっていても6話目が終了した時点で動画が閉じることから、私としてはこの仕様はページ側で自動再生の回数をカウントするという感じの仕様なのだろうと判断しました。

勝手に閉じる挙動を無効化するのは無理そうだったので、動画が閉じている状態から次のエピソードを再生する方法を模索することにしました。結果、自動再生がオフの場合も自動再生がオンで6話連続で再生して動画が閉じた場合も、毎回ではないものの、次のエピソードが存在するのであればDOM上の動画プレイヤーの要素は次のエピソードの情報で更新される場合があるということが分かりました。この場合は動画プレイヤーの要素を表示するようにしてやればそのまま次のエピソードが再生できるようになる、という感じでした。次のエピソードの有無の判定もしておく必要がありますが、それについては次のエピソードが存在する場合は動画プレイヤー右下に次のエピソードにスキップするボタンが表示されるので、再生中にそれの出現を監視するという感じの実装にしています。

「次のエピソードが存在するのに動画が閉じても動画プレイヤーの要素が次のエピソードの情報で更新されない」というパターンもあり、これは私としては条件が全く分からず、仕方無くxhookを使用して通信の監視処理を実装することにしました。自動再生がオフの場合でも自動再生のための情報は必ず取得されるので、通信を監視して次のエピソードのIDを取得し、動画プレイヤーの要素が更新されていないならそのIDを使用したURLに移動して再生を継続する、というような実装にしました。

サジェストされたコンテンツに遷移した後の次のエピソードの再生についてはサポートしていません。今回追加した機能を有効にする場合は動作の安定性のために「動画終了時にサジェストされたコンテンツに遷移するのを防ぐ」も有効にすることを推奨します。また、動作の安定性のために次のシーズンへの遷移もサポートしていません。

今回追加した機能でURLの変更が発生するパターンの場合、ブラウザ側でサイトに対しての権限設定を変更する必要があります。オプションダイアログ内のツールチップにも記載していますが、Chrome(Chromiumベースのブラウザ)の場合、サイトに対して「音声」の権限を許可する必要があります。Firefoxの場合、サイトに対して「自動再生」の権限を許可する必要があります。これらの権限はユーザーがページを操作していない状態(ページ読み込み直後など)でのメディアの再生の制御に関わっており、再生の継続のためにURLを変更するとその権限に引っかかってしまうので権限を許可する必要があります。

今回追加した機能は建前としては実験的という位置づけです。私の環境で意図した通りに動作してくれたのでリリースしましたが、他の環境でうまく動作するだろうという自信や確信は無く、正直不安でしかなかったのでその言い訳として実験的という扱いにしています。

6話制限の挙動テストについては「ちいかわ」「てーきゅう」「僕とロボコ」で行いました。これらの作品は各エピソードが短いので、合わせてVideo Speed Controllerも使用することで比較的短時間でテストすることが可能でした。

ちなみに、今回の機能は6話制限の対処というのが主目的ですが、一応「自動再生の代替手段」としても機能します。「自動再生のフラグをtrueに変更する機能」があるので自動再生の代替手段として使う人はいないようにも思いますが、「動画終了時に自動的に閉じた場合」というのは「自動再生オフで動画を最後まで再生した状態」にも当てはまるので自動再生的な感じで機能します。

ブラウザ拡張機能

藤乃音りょう