JSON入力コメント投下ブックマークレット
ニコニコ動画の投稿者コメントエディタ形式のJSONを入力して、コメントを投下するブックマークレットです。
バージョン情報
v1.1 191012
使用方法
以下のリンクをブックマークして、ニコニコ動画の動画再生画面でブックマークを開く。
JSON入力コメント投下 v1.1
実行環境
制作環境
- windows10 Firefox 70 (developer edition)
動作確認ブラウザ
- Firefox
- Chrome
基本的にPC版のニコニコ動画のみで動作します。
注意事項
このブックマークレットの動作が完璧かは保証できません。
また、ニコニコ動画の仕様が変更されると問題が出ることがあります。
なるべくコメントアートを本番投下する直前にテスト動画等で動作チェックしてください。
オプション項目
**_seek
abs_seek
予め動画に合わせて調整済みのJSON情報を投下するための機能です。
JSON入力のtime情報のそのままの位置へコメントを投下します。
diff_seek
起点となる地点は自分で指定しつつ、時間差で投稿するための機能です。
一番最初のコメントがloadボタンを押した時と等しくなるような位置へコメントを投下します。
例
[
{"time": "00:10.00","command": "","comment": "1"},
{"time": "00:11.00","command": "","comment": "2"},
{"time": "00:12.00","command": "","comment": "3"}
]
このような入力で、16秒の時点でloadボタンを押した場合、
[
{"time": "00:16.00","command": "","comment": "1"},
{"time": "00:17.00","command": "","comment": "2"},
{"time": "00:18.00","command": "","comment": "3"}
]
のような入力とみなします。
no_seek
自分で時間を合わせて投下するための機能です。
JSON入力のtime情報を無視してコメントを投下します。
manual/auto-post
手動投稿か自動投稿かを選択します。
手動投稿の場合、入力データが自動でプレイヤーの入力欄にセットされるので、
プレイヤーのコメントするボタンを手動で押して投稿します。
自動投稿の場合、最初の1コメント目だけ手動でボタンを押して投稿し、その後は送信可能になり次第自動で投稿されます。
length_xx
コメントの長さチェックを選べます。
視聴者コメントの場合通常は75文字、
投稿者コメントの場合1024文字が制限なので、それがデフォルトになっています。
no_checkの場合長さチェックをしません。実験用途向けです。
text_safe/unsafe
コメント内容が視聴者コメントで安全かどうかをチェックします。
チェック内容は以下です
- 行末のU+0020,U+3000,tab
- 3つ以上の空行(4連続の改行)
- 先頭・末尾の空行
通常、該当する内容を含むコメントは、その部分が削除されて反映されます。
なお投稿者コメントの場合は関係ないのでunsafeがデフォルトです。
command_safe/unsafe
コマンド内容が視聴者コメントで安全かどうかをチェックします。
チェック内容は以下です。
- U+3000の特殊挙動によりコマンド内容が消えそうな場合
- コマンドが長すぎる場合(末尾の空白文字を除いて128文字以内)
- 送信時に消える「重複したコマンド」がある場合
- 送信時に消える「_で始まるコマンド」がある場合
- PC版で無効になる「@秒コマンド」
なお投稿者コメントの場合は関係ないのでunsafeがデフォルトです。
ca
caコマンドの付与・削除などを指定できます
caコマンドはコメントの残り方をコントロールするコマンドです。
詳しくは https://yammaboo.sakura.ne.jp/weblog/190914.html 等を参照してください
patissier
patissierコマンドの付与・削除などを指定できます。
patissierコマンドはコメントの残り方をコントロールするコマンドです。
詳しくは https://www37.atwiki.jp/commentart/pages/16.html 等を参照してください
184
184コマンドを自動付与するか削除するか指定します。
184コマンドは通常、送信時に動画プレイヤーによって自動的に付与されます。
184コマンドがある場合、コメント情報のコメントをした人を表すIDは匿名(何日かで変わる英数字の列)になります。
184コマンドがない場合、コメント情報のコメントをした人を表すIDはID番号(アカウントに割り当てられた固定番号)になります。
184_autoの場合特に何もしないので、大抵の場合匿名IDによるコメントになります。
184_removeの場合184が付与されないように邪魔するので、非匿名IDによるコメントになります。
(U+3000の特殊挙動やコマンドの最大長128文字を使い切ることで邪魔します。)
なお、強制的に匿名IDとなるように設定された動画もあります。
この場合184コマンドが自動的に付与されず、手動で184コマンドを付与すると投稿エラーとなります。
その他の事項
ファイルドロップ読み込み
入力欄付近にファイルドロップでファイル内容を文字コードUTF-8のテキストとして読み込みます。
入力欄の外にドロップしてしまうとブラウザがファイルを開く(ページ遷移する)ので注意してください。
メッセージ欄に"drop file to read"と表示されて入力欄がグレーアウトしてる間は読み込み可能です。
投稿動作中のエラー検知
以下のような場合にエラーが出て投稿動作が中断されます。
- キャンセルボタンが押された(manual_cancel)
- 動画再生時刻が目標以外へ変更された(time_changed)
- 動画が停止していない(video_not_paused)
- 別の動画へ移動した(video_changed)
- 何等かのコメント投稿エラーが出た(post_error)
- 投稿者コメント編集モードと切り替わった(owner_mode_switched)
- 入力内容の読み込みに失敗した(comment_parse_error)
- 指定されたコマンドを追加できなかった(add_command_error)
- その他何等かの内部エラー(comment_send_internal_error)
time_changedとvideo_not_pausedについては、
manual_postかつno_seekの場合はエラーは出ないので、
手動でそれぞれのコメントを投下したい位置に移動して投稿できます。
diff_seek中断からの再開方法
エラーなどでdiff_seek動作がキャンセルされた場合、
「直前に成功したコメントの時間情報」付きのデータを入力欄に残します。
例
[
{"time": "00:11.00"},
{"time": "00:12.00","command": "","comment": "3"}
]
この状態で、直前に成功したコメントをダブルクリックしてその時間に移動してから、もう一度diff_seekで起動すると、
中断しなかった場合と同様にコメントすることができます。(誤差等はあります。)
投稿間隔について
視聴者コメントには連投規制(21秒以内に5コメント?)があるため、規制されないよう5.5秒程度の間隔が空くように設定されています。
このブックマークレットを通さずに投稿した分や最後の1コメントをした後等はカウントしていないので、注意してください。
投稿者コメントには特に規制がないので、動作上必要な間隔のみ空けて投稿できます。
オプションをjsonデータに埋め込む(実験的)
jsonデータのコメントのどれかに以下のようなpost_tool_option
属性をつけることで、
データを入力した時点でその属性で指定したオプションを選択済み状態にします。
{
"time": "00:00.00",
"command": "red big",
"comment": "test",
"post_tool_option":{
"seek": "abs"
}
},
指定可能なオプションは以下のようになっています。
{
"seek": "abs" | "diff"| "no",
"post": "manual" |"auto",
"textLength": "75" | "1024" | "no",
"textSafe": "safe" | "unsafe",
"commandSafe": "safe" | "unsafe",
"ca": "no_change" | "add" | "remove",
"patissier": "no_change" | "add" | "remove",
"184": "auto" | "remove",
}
変更履歴等
- v1.0->v1.1
- CAコマンドの追加・削除機能を追加
- コマンド追加時にU+3000がある場合の挙動を変更
- コマンド追加に失敗した時エラーメッセージ
- コマンドに"U+0020U+3000"がある場合の挙動修正