既知の問題・仕様など(ダウンロード以外)

関連リンク : 既知の問題・仕様(ダウンロード関連)ToDo(やる予定のこと一覧)サイト内検索

(ページ内リンク : ▼不正なコメントの処理▼「&」+なにか+「;」について▼BoonPlayerやSaitamaとの併用時の注意▼その他、当ツールの仕様▼ほぼ自分用メモ▼当ツールがちゃんとしていないところ

不正っぽいコメントの処理について

「XMLの再構成」の挙動

・「XMLの再構成」の「再構成」というボタンを押したときの処理では、BoonPlayerでエラーが出るようなコメントを見つけると、エラーが出ないように改変します。

・まず、文字参照の先頭ではない半角の「&」がコメントに含まれていれば、「&」に置換します。

(「詳細設定」の「XMLの再構成」の「文字参照に関連する配慮を何も行わない」で、この処理を行いません。詳細は次の項目を参照)

・また、0x01~0x1f を含むコメントは削除します(いまのところ、0x09、0x0a、0x0d は例外あつかい)。

(「詳細設定」の「XMLの再構成」の「不正な文字を発見した場合の処理」で、この処理を変更できます。設定を「置換」に変更すると、不正な文字のみを除去したり、違う文字に置き換えたりすることができます。ただし、「0x00」や「0x1a」が含まれる場合は、この処理に達する前に、コメントファイルの読み込みそのものに失敗すると思います)

・このあたりは、とりあえず自分が過去に遭遇したことがあるケースだけ対応しています。

文字参照について(「&」+なにか+「;」について)

(1)

・「XMLの再構成」「実況ログtoXML」では、処理をするコメントの本文に「♥」「♥」「♥」などが含まれていた場合に、それを「♥」などに置き換えます

・「NGワード」や「置換」や「文字数による削除」なども、置き換え前の「♥」ではなく、置き換え後の「♥」を対象に処理されます。

(たとえば、コメントの本文が「あずにゃん♥」である場合に、NGワードを「heart」と指定していても、そのコメントはNGになりません。NGワードを「♥」と指定しているなら、そのコメントはNGとなります)

(また、「置換」などの結果として「♥」がコメント本文に含まれるようになった場合も、最終的な出力の前に「♥」に置き換えられます)

・置き換えの対象になるのは、「&#」+数字+「;」 および 「&」+“設定:文字参照.txt”で設定した言葉+「;」 です。

(なお、厳密ではないのですが、当ツール内においては、それらをすべて文字参照と呼ぶということにさせていただきます)

(2)

・上記の通り、コメント本文に「&amp;」「&#38;」「&#x0026;」、「&lt;」「&#60;」「&#x003C;」、「&gt;」「&#62;」「&#x003E;」などが含まれていた場合も、それを「&」や「<」や「>」に置き換えます。

・「NGワード」や「置換」や文字数による制限なども、置き換え前の文字列ではなく、置き換え後の「&」や「<」や「>」を対象に処理されます。

・なのですが、「&」「<」「>」に限っては、XMLの仕様のため、最終的な出力の前に、「&amp;」「&lt;」「&gt;」に置換します

(コメント本文に「&lt;」と「&#60;」と「&#x003C;」が混在していたとしても、途中のNGワードや置換ではすべて「<」としてあつかわれて、最終的にはすべて「&lt;」として出力される形になります)

(3)

・ところで、ニコニコ動画では「&hearts;」という発言だったものが、ひまわり動画などを経由した結果として「&amp;hearts;」という発言になってしまっていることがあります。

・「XMLの再構成」と「実況ログtoXML」では、そうした「&amp;hearts;」とか「&amp;#38;hearts;」といった記述も、すべて「♥」に置き換えるようになっています。

(これは、発言者が意図的に「&hearts;」という文字列を表示させようとしていた場合に問題となりますが、とりあえず、当ツールの用途の範囲内では、そのような意図の発言はほとんど存在せず、発言者の意図と違ってそうなってしまっているケースの方が圧倒的に多いという前提です)

補足

・「詳細設定 → 個別 → XMLの再構成」で、「文字参照に関連する配慮を何も行わない」に設定した場合は、「XMLの再構成」において、上記の(1)~(3)のような挙動をしなくなります。

(その場合は、最終的に出力するコメントファイルで、コメント本文に「&」や「<」がそのまま入るような形になったとしても、ツール側では何も配慮せずにそのまま出力します)

※「実況ログtoXML」については、上記の(1)~(3)のような挙動をしない設定は用意しておりません(その設定が必要な状況が想像できないので)

・当ツールでは、「&#」+数字+「;」について、数字が有効かどうかを判定していません。

(無効な数字が指定されている場合、たとえば、コメント本文が「&#19196969;」だったならば、「・」みたいな文字に置き換わったりします)

・文字参照を置き換えた結果が「BoonPlayerでエラーが出るような文字」になる場合は、「不正な文字を発見した場合の処理」になります。

(ひまたんぷれいやでの再生だけを想定する場合など、「詳細設定 → XMLの再構成 → 不正な文字を発見した場合の処理」を「無視」にした方が良い状況もあります)

(サロゲートペアになるものは置き換えずに 「&#」+数字+「;」 のままにしておく、といった柔軟な対応が選択できると良いのですが、手が回っておりません)

・当ツールでは、セミコロンで終わらない文字参照については、処理しません。

(たとえば、コメント本文が「Alpha&Beta」だったならば、「&」の直後に識別子が続いていることから「AlphaΒ」に置き換える実装もあり得ますが、当ツールではこれを「Alpha&amp;Beta」と置き換えて、BoonPlayerなどでの再生時に「Alpha&Beta」と表示されるようにすることにしています)

ほかのツールと併用する場合の留意事項

BoonPlayer について

・「BoonPlayer」では、view_counter要素のvideo属性がないコメントファイルは読み込めません。

・しかし、NicomentXenoglossiaの「実況ログtoXML」の処理は、実況掲示板をソースにするので、view_counter要素のvideo属性(再生数)にあたるデータが元々存在しません。

・そこで、作成したコメントファイルを「BoonPlayer」でも使用できるように、view_counter要素のvideo属性にダミーの数値を入れて、コメントファイルを作成する仕様になっています。

(※ダミーの数値は「文字数やNGワードで制限しなかった場合のコメント数」にしています)

・なお、「XMLの再構成」の元にするファイルが、「no」のデータがないという理由でBoonPlayerで再生できないファイルである場合には、「noを振り直さない」にチェックして再構成を行っても、BoonPlayerで再生できないままのファイルが作られます。その場合は、「noを振り直さない」にチェックしないでください(現状では、「noを振り直さない」の有効時は、値がなければ「no」属性を出力しないようにしております)

SaitamaPlayer について

・「SaitamaPlayer」では、thread要素のticket属性がないコメントファイルや、view_counter要素のid属性がないコメントファイルは読み込めないようです。

・ticket属性がないコメントファイルを「SaitamaPlayer」で使用する場合は、以下のようにticket属性の部分を書き足す必要があります。

・NicomentXenoglossiaの「実況ログtoXML」と「再構成」では、「詳細設定」の「共通」の「ticket要素は空でも出力」をチェックした場合のみ、ticket属性がない場合も「ticket=""」と書き出すようになっています。

「ticket要素は空でも出力」にチェックをしていない場合は、「SaitamaPlayer」では読み込めないコメントファイルが作成されます。

当ツールの仕様 (作者としては、どこかに説明を書いておきたいこと)

正規表現関係のメモ

・「XMLの再構成」などの正規表現では、置換後の文字列内の後方参照は「$1」「$2」を指定するようになっています。Flexible Renamer や サクラエディタ のように「\1」「\2」でも通るようにしても良いのですが、「$1」「$2」と「\1」「\2」をごっちゃにすべき理由がよくわからなくて、とりあえず何もしておりません。

・現在のバージョンでは、正規表現には std::wregex を使っております。

\d で全角の数字もマッチすることにお気を付けください。

ダイアログの設定項目の変更が反映されるタイミングについて

・設定項目は、「再構成」「変換」などのボタンを押した瞬間の状態を使います。処理中にダイアログの状態を変えても反映されません。

「実況ログtoXML」で使用できるソースについて

・当ソフトの「実況ログtoXML」は、2ch形式のdatログを元にするのではなく、ブラウザなどで表示させた状態から、データをアバウトに読み取る方式です。

※これは、「すべての2chブラウザがログをdat形式で保存しているわけではないこと」「2chで失われたログが『○○保管庫』にだけ残っている場合など、dat形式でデータを得られない実況ログがあること」などの理由で、表示状態からの変換も必要だと思ったので、とりあえず先に作ったところ、自分的には意外と使いやすかったので、datファイルからの変換機能については放置中……みたいな感じです。

※この方式の利点として、ツール側で対応していない形式のログについても、テキストエディタでソースを整形すれば通るということもあります。

・しかし、ブラウザからコピペした文字列をそのまま使うという開き直った方式のため、「ひとつの投稿の開始の行(投稿日やIDの情報がある行)」と、「ひとつの投稿のコメント内容の中に、別の投稿が開始行ごとコピペされているもの」との区別をしないという問題があります。

(レス番や投稿日の連続性から、明らかにおかしなものは除外するようにしても良いとは思うのですが、とりあえず、おかしな順番でコピペしても処理できる、ということを優先しています)

・このため、実際の投稿数よりも、処理上の投稿数が少し多くなるなど、微妙に問題が出ることがあります。

・なお、レス番号が「1000」の投稿については、次のスレッドにコピペされることが非常に多いため、レス番号が「1000」でコメント内容が類似する投稿については、ある程度削除するようになっています。

ほぼ自分用メモ

改善すべき問題

・「XMLの再構成」というダイアログのコントロールが、255以上あります(リソース不足にならなければ問題ないかもしれませんが、修正すべきところです)

調べる必要があること

・premium の値が2以上のコメントについて(2がシステム、3が放送主、6~7が運営やバックステージパス、8~9がiPhoneアプリからのコメント?)

・click_revision とか leaf とかの仕様。

・watch_harmful、強制エコノミー、音楽DLなど、自分がほとんど使わないものの挙動の確認。

・BoonPlayer などで再生時にエラーが出る文字の詳細な確認(もしも、制御文字の一部以外にもパーサを通らない文字があるなら)

ちゃんとしていないところ

ちゃんとしていないところ(重要なところ)

・以下のように、色々なところが、あまりちゃんとしていません。

メモリ使用量がギリギリの状況で「詳細設定」ボタンを押すと、「引数が間違っています」などと表示されて、詳細設定ダイアログが正常に開かなかったりするかも知れません。

・これは当ツールに限ったことではありませんが、WINDOWSのシャットダウンや再起動の際に、ソフトの終了処理が途中で強制キャンセルされてしまって、保存中だった設定ファイルの中身がカラになってしまう可能性があります。このため、なるべくなら、ソフトを先に終了させてからWINDOWSのシャットダウンを行ったり、定期的に設定ファイルをバックアップしたりしていただくのが無難です。

(ソフト側で「終了時に設定ファイルを保存しないオプション」や「設定ファイルの自動的な世代バックアップ」といった処理を用意しておくと良いのですが、後回しになっております)

終了処理で保存される設定ファイルは、コントロールの選択状態やウインドウの位置を保存する「NicomentXenoglossia.ini」と、ブックマークツリーの状態を保存する「設定:固定URL.txt」です。もしも、再起動したらブックマークツリーの内容がカラになっていた……といったことが頻繁に起こるようでしたら、上記のようなことが原因の可能性があります)

※上記2点より、「NicomentXenoglossia.ini」や「設定:固定URL.txt」は、定期的にバックアップしていただいた方が万全かもしれません。

ちゃんとしていないところ(表示関連)

・最大化ボタンをいちおう有効にしておりますが、最大化したまま終了してからの再起動など、一部の操作に対応するちゃんとした実装を行っておりません(重大な問題につながることはないと思いますが、特定の手順で表示が崩れます)

・「詳細設定→ダウンロード→ツリーのオプション」の「ウインドウを拡大したときに、ブクマツリーを左側に配置する」の有効状態を特定の手順で変更すると、一時的に表示が崩れます(表示が崩れるのは、見た目には致命的な不具合っぽく見えるかも知れませんが、特に重要な問題が発生しているわけではありません。ウインドウサイズの変更などで直ります)

・“WINDOWSの「画面のプロパティ」でアクティブタイトルバーの高さを100に設定するとダウンロードリストのチェックボックスがズレる”など、通常あまりしない設定で、微妙に不便になる場合があるかも知れません(タイトルバーの高さを広く設定した場合はサムネイルの高さをそれ以上に設定して使う……といった感じで凌いでください)

・ドロップダウンメニューの高さが変更できないので、状況によっては、不便なことになり得ます。

・省略表示になっている場合だけツールチップで全文を表示するところで、まれに、省略されていないのにツールチップが表示される可能性があります。

その他、仕様のメモなど

・もしも、起動時にエラーを出して異常終了するようなことがありましたら、「詳細設定 → 共通 → 起動/ログ/その他」の「初期タブがダウンロードなら、起動処理を見た目だけ高速化」のチェックを外してみてください(既知のバグはありませんが、OSやCPUの違いによって予期せぬ事態が比較的発生しやすそうな部分で、かつ、無効にしても何も変わらないところです)

※起動時にエラーが出るならチェックを外せないので、「NicomentXenoglossia.ini」 の [OptionDialog] にある 「CB124=1」 を 「CB124=0」 に書き換えてください。

・リストの行の高さを指定する際に、アイコンや文字が入る部分の高さではなく、グリッド線の高さも含めた数値を指定する形になっているところがあります(とんちきな仕様ですが、実用上の問題は特にないと思います)

・「前回終了時の列幅を復元」は、列幅を自分で調節する設定状態でツールを終了したことが過去にある場合に動作します。その他、列幅関係は、自動調整のときを除外した挙動になっているものが多いです。

その他、ちゃんとしていないところ

・「XMLの再構成」で、形式のおかしいXMLファイルを処理させると、読み込めるところだけで処理するのですが、その際にパースエラーなどを表示しません。

・コモンコントロールのバージョン6を使うことで発生する、バージョン5との挙動の違いに対応できておりません(これが問題となる場合、適当な NicomentXenoglossia.exe.manifest を設置して、バージョン5を使うようにすれば回避できます)

※作者の環境では、ダウンロードリストのチェックボックスを左端以外に移動させると、フォーカスの移動時にドット単位のゴミが残ります。また、ツールチップを表示させる際のマウスの止め方によって、表示されたツールチップがすぐ消えてしまい、再表示を待たないといけなくなる場合があります。

・「プレイリスト」というタブで、極端に多くのプレイリストをあつかうと、iniファイルの[MariMite]の「MVSelなんとか」の項目が多くなりすぎて、64KBを超えてしまうかもしれません。

・アプリケーションのアイコンの作りが、フルカラー以外の環境やWin2k以前に配慮していません。

・そのほか、画面のチラつきなど、色々とアレなところは、もっとずっとどうにかできるはずですが、手が回っていません。ごめんなさい。

・この「使い方」サイト内の説明用のスクリーンショットには、旧バージョンの画像が使われているところが多数あります。また、説明が旧バージョンのままになっている部分がところどころあります。

※大変申し訳ございませんが、バージョンアップのたびに説明を修正しようとすると意外と時間をとられてしまうので、ある程度は妥協すべきところだと考えております。