自分用のメモ。
たちみどろいどのキャッシュの仕様
たちみどろいどになぜかニコニコ動画再生機能とキャッシュ再生機能が実装されたのでキャッシュ再生機能の仕様でも書き残します。
あとこの記事はバージョン7.1.1以降の話です。
たちみどろいどでキャッシュを再生するには
二通りのやり方があります
- たちみどろいどでキャッシュを取得する
- 自分の持ってる動画を再生する。必要なものは以下
- 動画ファイル。mp4
- コメントファイル。xml
たちみどろいどでキャッシュ取得
- 動画再生中なら
- 「メニュー」を選んで「キャッシュ取得」ボタンを押す
- 動画一覧画面なら
- 「︙」を押して「キャッシュ取得」を選ぶ。
なおどちらも通知に「ダウンロードが完了しました」が表示されるまで画面回転したりアプリを終了したりしてはいけません。
最新版からキャッシュ取得部分はバッググラウンドに移行させたのでどんどんキャッシュ取得ボタン押して大丈夫です。終わり次第取得されます。
キャッシュ取得が終われば通知が消えます。
ファイル構造
保存先は以下です
sdcard/Android/data/io.github.takusan23.tatimidroid/files/cache
ここのフォルダに動画IDでフォルダが生成されています。
フォルダの中身は以下の通りです。
- [動画ID].jpg
- サムネイルです。
- [動画ID].json
- 動画情報です。JSON形式です。
- もしJSON形式とHTMLスクレイピングをかじったことがあるなら↓
- ニコ動再生ページのHTML内のID「embedded-data」要素の「data-api-data」属性の値を保存しています。
- ニコ動再生ページでF12を押してConsoleを開いて以下のJSを叩くと見れます。↓
JSON.parse(document.getElementById('js-initial-watch-data').getAttribute('data-api-data'))
- もしJSON形式とHTMLスクレイピングをかじったことがあるなら↓
- 動画情報です。JSON形式です。
- [動画ID].mp4
- 動画ファイルです。
- 再生時の画質で保存していますので画質を変更した後ダウンロードすると変更した後の画質でダウンロードされます。
- 公式動画はダウンロードできないしやりません。
- [動画ID]_comment.json
- コメントです。JSON形式です。
- nmsg.nicovideo.jp/api.json/ にPOSTして帰ってきた中身を保存しています。
- XML形式ではありません!!!
自分の手元の動画を再生する場合
livedlなどのタイムシフト保存ツールなどで取得したファイルを再生するときに使えます。
以下のファイルを用意する必要があります。
- 動画ファイル。mp4形式で。
- コメントファイル。
ファイル構造
以下の場所にフォルダを作成してください。
sdcard/Android/data/io.github.takusan23.tatimidroid/files/cache
ニコ動の場合は動画ID、生放送なら生放送IDでいいとお思います。
中に入れるファイル
動画ファイル
mp4形式で頼む。
ファイル名は何でもいいです。動画ファイル名はキャッシュ一覧で表示される名前になります。
コメントファイル
xml形式の場合はファイル名は何でもいいです。(変換時にxml形式のファイルを探すため)
こんな感じの↓
1 | <chat thread="ThreadId" no="3" vpos="コメントの再生位置(100で1秒)" date="投稿日時" user_id="ユーザーID">コメント</chat> |
JSON形式の場合は以下の名前で保存することで読み込まれます。
[動画ID]_comment.json
例:sm157_comment.json
xml形式の場合はJSON形式に変換しないと扱えないため変換する必要があります。
キャッシュ一覧画面で「︙」を押して「XML形式のコメントをJSON形式に変換する」を押して変換する作業をする必要があります。
この作業をすると[動画ID]_comment.jsonというファイルが生成されて無事再生できるようになるはずです。
なお自分の動画を再生する際は以下のファイルは必要ありません。
- 動画情報ファイル(動画ID.json)
- ない場合は「動画情報」タブが表示されないだけで再生はできます。
- サムネイルファイル(動画ID.jpg)
- ない場合はキャッシュ一覧でサムネイルが表示されないだけで再生はできます。
以上です。
注意点
アプリを消すとキャッシュもなくなります。
あと保存先フォルダがくっそ長い理由ですが、Android 10からScopedStorageを使わないとファイル保存ができないので私は悪くない。