Edgeで使えなくなった「ニコ動履歴」のデータ移行方法

愛用していた拡張機能「ニコ動履歴」がEdgeで使えなくなってしまった。Google Chrome がWebSQLを廃止したためだが、同じChromiumを共有するEdgeでも使えなくなるばかりか、Chromeには残されたはずのWebSQLを再有効化する試験機能すら奪われてしまった。そのため、後継機能である「ニコ動アーカイブ」へデータの移行を行うことができなかったが、力技で解決できたので、記録として残す。

chromewebstore.google.com

症状および原因

2023年11月上旬ごろから、「ニコ動履歴」という拡張機能が使えなくなった。具体的には、拡張機能アイコンをクリックしても設定画面を開くことができない。同拡張機能のレビューを引用するに、「WebSQLの強制廃止」により使用不可能になったとのことだった。

代替手段として、chrome://flags から、[Allows access to WebSQL APIs] を [Enable]にすることが紹介されているが*1、実はEdgeのカウンターパートである edge://flags にはそもそもWebSQLの文言すらない。

その後ほどなくして、「ニコ動アーカイブ」という後継の拡張機能が公開された。「履歴」に遜色なく、新仕様に対応したモダンなアドオンである。更には、「履歴」からのデータインポート機能が組み込まれており、こちらへの移住を促すものであった。

chromewebstore.google.com

しかしながら、「履歴」拡張機能にはエクスポート機能が備わっているが、Edgeでは拡張機能の起動ができないために、ファイルをエクスポートすることができない。移住には、エクスポートすることが課題となった。

解析作業(読み飛ばしてよい)

Edgeから拡張機能が開かないのであれば、直接拡張機能のhtmlを開いてやればよい。Edgeの拡張機能フォルダをエクスプローラから開く。ディレクトリは次の通り*2

%localappdata%\Microsoft\Edge\User Data\Default\Extensions

config.html

このうち hldgbliocaaomajmalgenbhheinjlhgm が「ニコ動履歴」の拡張機能のフォルダである。さらにこのフォルダの配下にある config.html が、データエクスポート画面のhtmlファイルである。これをダブルクリックしてやると、履歴データの管理画面が開く。

これでひと安心、「エクスポート」ボタンをクリックすれば履歴をサルベージできる...とはいかず、ボタンをクリックしても何の反応もない。

ボタン #export をクリックすると、裏にある config.js が動いて WebSQLでデータを持ってくる仕組みとなっている。そのデータをJSON形式で格納し、base64エンコードして「ニコ動履歴_export.data」というファイルを、jQueryによりhtml上に表示し、ダウンロードさせるらしい*3

今回、WebSQLが廃止されたため、動こうはずもない。そのため、かなりの力技で解決する。

対策①

履歴が保存されたファイルを発掘する

上述した拡張機能のフォルダは機能のファイルが格納されているにすぎず、拡張機能の履歴の保存は別のディレクトリにおいて行われている。通常、拡張機能の設定はExtension Status などのフォルダに設定ファイルが入るが、本件はWebSQLを採用している関係か、databases フォルダに入っている。フルパスは下記*4

%localappdata%\Microsoft\Edge\User Data\Default\databases\chrome-extension_hldgbliocaaomajmalgenbhheinjlhgm_0

この中に、自分は1つだけファイルを見つけた。更新日時が 2023-11-05 で止まっている。ちょうどWebSQLが廃止され、本件拡張機能が使えなくなったころである。

発見したファイル

このファイルを作業フォルダにコピーして、次の処理に移る。

SQLiteの中身をぶっこぬく

この拡張子が謎のファイル「2」はsqlite format 3のファイルである。そのため、「2.sqlite」などと拡張子を入れてやる。

次に、これを「ニコ動アーカイブ」に読ませることのできる形式に変える。「アーカイブ」はニコ動履歴のdata形式に対応しているため、これに合わせる。中身はbase64になった、ただのJSONファイルである。

SQLite を読むためのソフトウェアとして、自分は下記を利用した*5

sqlitebrowser.org

操作は簡単で、先ほど命名したSQliteのファイルを読ませてから、Jsonへエクスポートする。「tagrank」と「vinfo」両方使うので、2つ選んでエクスポートする*6

ファイル操作画面

JSONファイルへの出力画面

JSONの整形

そのままでも「アーカイブ」に読ませることができるらしいが、「ニコ動履歴」のエクスポート形式に合わせてJSONファイルを成型する。下記ような形式となればよいので、簡単に頭に[{"name": "vinfo","data": [ をつけて、}] で囲んでやるだけでよい。また、vinfo.json の直後に同様に {"name": "tagrank","data": [ を入れて tagrank.json の内容をコピペしてやれば、1つでインポート可能なファイルができる。すなわち下記のようになればよい:

[
    {
        "name": "vinfo",
        "data": [
            {
              "comment": ...
          }
       ]
    },
    {
        "name": "tagrank",
        "data": [
            {
              "disptag": "hogehoge",
              "rank": fugafuga,
              "tag": "hoge",
              "updated": piyopiyo
          },
          {
          ...
            }
        ]
    }
]

base64エンコード

適当な手段でbase64エンコードする(UTF-8)。自分は下記サイトを利用した。3万行ほどあったが、コピペでOKだった。

www.en-pc.jp

出力されたものを.data形式で保存する。

ニコ動アーカイブへの読み込み

「ニコ動アーカイブ」の「ニコ動履歴から履歴追加」機能を使い、上記で作成したdataファイルを読み込む。これで完了である。

なお、投稿者名については、「アーカイブ」の仕様により「ーーー」でインポートされるが、一度その動画を閲覧することで反映されるようである。

ウイニングラン

対策②

基本的な流れは一緒であるが、Chromeに同じ拡張機能を入れ、Web APIを有効化して、EdgeからChromeのdatabasesへ履歴ファイルを移し、フラグを有効化して「履歴」を使ってエクスポートしなおすことで、Sqliteのファイルを変換する手間が省ける。

ただし、chrome://flagsにWebAPIのフラグが残っている間しか行うことができないため、時限的であり、恒久的な対処法としては①の手法の方が優れている。

結語

以上の手法により、Edgeからデータをサルベージして「履歴」から「アーカイブ」へデータを全て移行することができる。

少し解決に時間がかかったので、同じ悩みを抱えている人の助けとなれば大いに幸いである。

以上。

*1:Chrome版での対応方法を探されている場合は、次の手法で対処可能である(「履歴」のレビュー欄から引用):
chromeのflags設定から[Allows access to WebSQL APIs]と入力し、該当項目を[Enabled]に切り替え保存

*2:プロファイルを分けている場合は、...\Edge\User Data\Profile 1\Extenstions などとなる

*3:config.jsおよびbase64.jsが必須

*4:参考としたサイト:

stackoverflow.com

*5:使い方はググって見つけた。

www.javadrive.jp

*6:sqliteを出力したものでは、「履歴」のエクスポート形式とjsonのデータの並び順が異なるが、影響はない。

Chromeを起動した際に勝手にBingタブが開く事象について

2023年春ごろから、Chromeの起動時に、ランダムな確率で、Bing のサイトが開く現象が起こっており、大変に鬱陶しい思いをしている。

この原因がBing Wallpaperにあることが分かり、対策を講じることができたため、同じ思いを抱えている人のためにこれを書く。

事象

Chromeを起動した際に、体感3回に1回、Bingのサイトが立ち上がる。

その際のBingのサイトURLは、「 https://www.bing.com/?PC=U661 」となっている。

私は起動時には「 chrome://newtab 」のみ開くようにしているが、これとは別に新しくbingタブが開き、起動時タブが上書きされるような形になる。

 

原因調査

上記、「 bing.com/?PC=U661 」でググってみると、同様の事象が引っかかる。

特に、上記2番目の MS Community に答えが書いてあり、「Bing Wallpaper」が悪さをしていることが分かった。

Bing Wallpaper

Bing Wallpaper は壁紙を毎日更新してくれるソフトウェアであり、美しい画像が日替わりで表示されることから、インストールし愛用しているところであった。

Bing wallpaper は下記からダウンロードできる*1

www.microsoft.com

正規サイトではないが、アーカイブがネット上に転がっており、その画像は一見の価値がある。

bingwallpaper.anerg.com

閑話休題。本ソフトウェアは「Bing」と冠称するだけあって、Bingの利用をしつこく奨めてくる。壁紙画像はただの広告にすぎず、Bingのスパイウェアに近い*2。インストール時もBing Bingとうるさい。

「美しい画像はほんの手始め」らしい

対策

さて、Bing Wallpaper が原因であるとわかったところで、これをアンインストールすれば解決する話であるが、いままで使えていた日替わりの美しい画像を手放してしまうのは非常に惜しい。

そこで、これをアンインストールすることなく、Chromeの利用時にBingを差し込まれるのを防ぎたいと思う。

結論としては、Bing.com をリダイレクトすることにより、解決できた。

Redirector

リダイレクト用にユーザjsを用意したりするのは大変面倒なので、Chrome拡張機能を利用する。「Redirector」という、わかりやすい名前のアドオンを使う。

chromewebstore.google.com

①インストール後、拡張機能のポップアップから [Edit Redirects] > [Create new Redirect]

②各種設定値を入力し[save]。正規表現の腕に覚えがあれば広く利用可能である。

Example URL: https://www.bing.com/
Include pattern: https://www.bing.com/
Redirect to: https://google.com/*3
Pattern type: ☑Regular Expression*4

設定値。Descriptionは任意の値でよい。

③ bing.comの通信が全てgoogle.comへリダイレクトされるようになった。

結語

以上によりBingのサイトがChrome上で勝手に表示される問題を解決できた。

今回徹底的にBingを殺しているが、私はBingを使いたくないわけではない。ただ、広告のように何度も何度もうっとおしく表示されるのが嫌だから、ここまで対策を行った。

なお、私は Firefox, Edgeも頻繁に利用するが、これらはGoogle を標準の検索エンジンにしておいても同じ事象が発生していない。

以上。

*1:本事象が発生するため、推奨しない

*2:同事象についてBing Chatに聞いてみたところ、「Chromeを起動したときにBingが勝手に開くのは、マルウェア拡張機能Chromeの設定を変更している可能性があります」との回答を得た

*3:任意のサイトで良いが、chrome://newtab は動作しなかった。

*4:Wildcardだと別の書き方が必要