nxml2merge

最終更新:

匿名ユーザー

- view
だれでも歓迎! 編集

nxml2merge.exe

wxDev-C++(mingw)の勉強がてら作った小物ツール。 ニコニココメントをマージするためのものです。

BOON SUTAZIOのお供に、、なったらいいな
てことで、ここまとめサイトですが、公開場所がないのでこの場所借りてます


【お知らせ 2008-2-2】

残していた実装や修正を行いまして、RCを取って正式版としました。 HPを作りましたのでそちらに最新版を置いときます。(といってもreadmeの写しな体裁ですが)

qnd.info http://qnd.info.googlepages.com/home

ここは道標代わりに残しておきますが、問題出ましたらさくっと消してください。

以下、情報としては古いので注意です。


ダウンロード

【重要】ここにあるものは古いバージョンです。

最新バージョン
NicoNico XML File to Merge Version Version 0.02 RC 20080115-01

DLL 1 DLL 2 (アップロード制限のためファイル分けてます)

最新版ダウンロード(ベータ)

  • 上記 DLL1, DLL2 と最新版を同じフォルダに放り込んで下さい
  • まだ人柱版です
    - オプション「-at」の加算される秒数は、100=1秒の換算値となっています
    • ミリ秒単位だと思ったけど 1/1000秒じゃなくて1/100秒だった これって単位なんだろう?
  • テスト用にダミーのXMLファイルいれてます。
  • さくっと起動できるようにcmdファイルいれてますんで、XPな方はまんま起動できるはず
  • vistaやその他は起動するかさえ不明です

履歴

  • 2008-01-15 Version 0.02 RC 20080115-01
    • < や >等 特殊文字が変換されたままだったのを修正
    • user_idの完全一致によるNG指定オプション実装
    • コメントの正規表現によるNG指定オプション実装
  • 2008-01-10 Version 0.02 RC 20080110-01
    • 開発環境を ruby から wxDev-C++(mingw) に変更
      • 環境変化によるバグ確率高し
    • ruby版と同等機能を実装
    • ソートオプション実装
    • BOON用XMLコメント手動出力実装
  • 2007-12-09 Version 0.01 RC 20071209-01
    • 半角カタカナ > 全角変換 をしないように(コマンド欄にも適用)
    • < や >等 特殊文字の変換をしないように(コマンド欄にも適用)
  • 2007-12-07 Version 0.01 RC 20071207-01
    • 半角カタカナ > 全角変換 をしないように(コメント欄)
    • < や >等 特殊文字の変換をしないように(コメント欄)
    • オプション「-at」の説明を追加 (1秒=100)
  • 2007-12-05 Version 0.01 RC 20071205-02 初回アップ

特徴

  • Powerd by wxDev-C++(mingw)とか色々
  • CUIアプリケーション
  • 相変わらずメモリが大好物
  • 勉強がてらってところで察してください

パフォーマンス

IN1:10万コメント IN2:10万コメント OUT:20万コメント

10万 + 10万 = 20万 = 60 秒

各 10 万件のコメントファイル2つのマージ処理にかかる時間 約 60 秒 (in1読込 約 20秒 in2読込 約 20 秒 出力 約 20秒)

テストPC CPU:AMD Athlon64 3G メモリ:1G

PC性能やその他なんやかやで上下します

守備範囲

  • パターン1:同じ動画用のコメント複数あるのをまとめたい
    • 同じ動画のコメント2つをマージ
    • File1をベースにFile2をくっつける
    • File1,File2共にある同Noは捨てる
    • XMLのNoはそのまま
  • パターン2:パートで分けられた動画を一つにしたらやっぱコメントもまとめたい
    • 分割してアップされた動画のコメントをマージ
    • 動画のマージは別でやってね
    • File2の表示時間に任意の秒数を加算する
    • XMLのNoは1から順に振り直し

使用方法

Usage: nxml2merge [Options]
 Options (全て省略可能)
   -o --output (初期値 outfile.xml)
       出力 XML File
   -i1 --infile1 (初期値 infile1.xml)
       入力 XML File1, 出力 XML File のベース
   -i2 --infile2 (初期値 infile2.xml)
       入力 XML File2, ベースに追加
   -at --addtime (初期値 0)
       入力 XML File2 のコメント時間に一律加算する秒 (1秒=100)
   -rn --renumbering (初期値 0, 0:NO 1:YES)
       XML内のNoを1番から振り直すか
       ※このオプションは入力File1,2での同一NOに対する扱いも決定します
         0=file2の同一Noコメントを無視 1=Noを変更して出力対象に
   -ml --messagelevel (初期値 2, 0:なし 1:処理時間だけ 2:経過も)
       処理中のメッセージ表示頻度
   -sb --sortby (初期値 date, 指定可能列: fileno, date, no, vpos, user_id)
       出力 XML File のソート順序指定
       複数指定はコンマ(,)で区切る, 逆順指定可能 (desc)
       列:fileno はinfile1,infile2の出力順を指定 (renumbering 時に有効)
        例. -sb "user_id, date desc"
            (ユーザID昇順で日付逆順毎に出力)
   -bc --booncomment (初期値 無し)
       BOON SUTAZIO用のXMLコメント(VIDEO ID)をその有無に関わらず手動付与
         例. -bc "sm1234567"
            (<!-- BoonSutazioData=sm1234567 --> を出力XMLに付与)
   ※未実装 -ni --ngid (初期値 無し)
       入力File1,2 共に user_id 固定値でNG指定 (出力対象としない)
         例. -ni "abcdefghijklmn"
   ※未実装 -nc --ngcomment (初期値 無し)
       入力File1,2 共に コメント欄の内容を正規表現でNG指定 (出力対象としない)
         例. -nc "^[wWwW].+$"
   ※未実装 -sf --singlefile (初期値 無し)
       入力 XML File1 のみで各変換処理を行い出力する
   -h --help
       ヘルプ表示 (このメッセージ)
   -v --version
       バージョン表示

テストケース用ソース

file1.xml (実際は改行無し no18 no19 no20 3件)

<?xml version="1.0" encoding="UTF-8"?>
<!-- BoonSutazioData=sm1111111 -->
<packet>
<thread last_res="0" resultcode="0" thread="1111111111"
 ticket="0x1234abcd"/>
<view_counter video="0"/>
<chat date="1111111111" mail="shita" no="18" thread="1111111111"
 user_id="abcdefghijklmnopq1234567890" vpos="1111">コメントひとつ</chat>
<chat date="1111111111" no="19" thread="1111111111"
 user_id="abcdefghijklmnopq1234567890" vpos="1112">コメントふたつ</chat>
<chat date="1111111111" no="20" thread="1111111111"
 user_id="abcdefghijklmnopq1234567890" vpos="1112">コメントみっつ</chat>
</packet>

file2-1.xml (実際は改行無し no20 no21 no22 3件 ヘッダはfile1と共通)

<?xml version="1.0" encoding="UTF-8"?>
<!-- BoonSutazioData=sm1111111 -->
<packet>
<thread last_res="0" resultcode="0" thread="1111111111"
 ticket="0x1234abcd"/>
<view_counter video="0"/>
<chat date="1111111111" no="20" thread="1111111111"
 user_id="abcdefghijklmnopq1234567890" vpos="1112">コメントみっつ</chat>
<chat date="1111111111" mail="shita" no="21" thread="1111111111"
 user_id="abcdefghijklmnopq1234567890" vpos="1111">コメントよっつ</chat>
<chat date="1111111111" no="22" thread="1111111111"
 user_id="abcdefghijklmnopq1234567890" vpos="1112">コメントいつつ</chat>
</packet>

file2-2.xml (実際は改行無し file1よりdate が少し古い no18 no19 no20 3件)

<?xml version="1.0" encoding="UTF-8"?>
<!-- BoonSutazioData=sm2222221 -->
<packet><thread last_res="0" resultcode="0" thread="2222222221"
 ticket="0x5678abcd"/>
<view_counter video="0"/>
<chat date="1111111100" no="20" thread="2222222221"
 user_id="abcdefghijklmnopq1234567890" vpos="1112">コメントむっつ</chat>
<chat date="1111111102" mail="shita" no="21" thread="2222222221"
 user_id="abcdefghijklmnopq1234567890" vpos="1111">コメントななつ</chat>
<chat date="1111111103" no="22" thread="2222222221"
 user_id="abcdefghijklmnopq1234567890" vpos="1112">コメントやっつ</chat>
</packet>

使用パターン1

元動画は同じだが、取得時期の違い等でコメントが複数ある

想定コマンド

% nxml2merge.exe -i2 infile2-1.xml

入力 6 件 出力 5件

  • file1:no18-no20 file2:no21-no22(no20重複分は削除)
  • 出力ファイルに改行付与
  • noはまんま出力

outfile.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- BoonSutazioData=sm1111111 -->
<packet>
<thread last_res="0" resultcode="0" thread="1111111111"
 ticket="0x1234abcd"/>
<view_counter video="0"/>
<chat date="1111111111" mail="shita" no="18" thread="1111111111"
 user_id="abcdefghijklmnopq1234567890" vpos="1111">コメントひとつ</chat>
<chat date="1111111111" no="19" thread="1111111111"
 user_id="abcdefghijklmnopq1234567890" vpos="1112">コメントふたつ</chat>
<chat date="1111111111" no="20" thread="1111111111"
 user_id="abcdefghijklmnopq1234567890" vpos="1112">コメントみっつ</chat>
<chat date="1111111111" mail="shita" no="21" thread="1111111111"
 user_id="abcdefghijklmnopq1234567890" vpos="1111">コメントよっつ</chat>
<chat date="1111111111" no="22" thread="1111111111"
 user_id="abcdefghijklmnopq1234567890" vpos="1112">コメントいつつ</chat>
</packet>

想定コマンド

% nxml2merge.exe -i2 infile2-2.xml

入力 6 件 出力 5件

  • file1:no18-no20 file2:no21-no22(no20重複分は削除)
  • 出力ファイルに改行付与
  • noはまんま出力
  • file2のdateの方が古いので順番的には前に来る

outfile.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- BoonSutazioData=sm1111111 -->
<packet>
<thread last_res="0" resultcode="0" thread="1111111111"
 ticket="0x1234abcd"/>
<view_counter video="0"/>
<chat date="1111111102" mail="shita" no="21" thread="2222222221"
 user_id="abcdefghijklmnopq1234567890" vpos="1111">コメントななつ</chat>
<chat date="1111111103" no="22" thread="2222222221"
 user_id="abcdefghijklmnopq1234567890" vpos="1112">コメントやっつ</chat>
<chat date="1111111111" mail="shita" no="18" thread="1111111111"
 user_id="abcdefghijklmnopq1234567890" vpos="1111">コメントひとつ</chat>
<chat date="1111111111" no="19" thread="1111111111"
 user_id="abcdefghijklmnopq1234567890" vpos="1112">コメントふたつ</chat>
<chat date="1111111111" no="20" thread="1111111111"
 user_id="abcdefghijklmnopq1234567890" vpos="1112">コメントみっつ</chat>
</packet>

使用パターン2

元動画は違うものだが、パート分け等でファイル結合したもの

想定コマンド

% nxml2merge.exe -rn 1 -at 1800 -i2 infile2-1.xml
  • file2に同NOがある場合は、同NOコメントを無視する仕様なので「rn」の指定でそれを出力対象として扱う
  • 「at」の指定数値は追加するXMLファイルのコメント表示を何秒ずらしたいか、本想定のような場合は、元にする動画の動画時間を秒に直して記述するのが基本

入力 6 件 出力 6件

  • file1:no18-no20 file2:no20-no22
  • 出力ファイルに改行付与
  • noは1から連番で振り直し(dateで昇順)
  • file2のvposに指定秒数を加算
  • コメントやらのヘッダ部分はfile1のを使用

outfile.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- BoonSutazioData=sm1111111 -->
<packet>
<thread last_res="0" resultcode="0" thread="1111111111"
 ticket="0x1234abcd"/>
<view_counter video="0"/>
<chat date="1111111111" mail="shita" no="1" thread="1111111111"
 user_id="abcdefghijklmnopq1234567890" vpos="1111">コメントひとつ</chat>
<chat date="1111111111" no="2" thread="1111111111"
 user_id="abcdefghijklmnopq1234567890" vpos="1112">コメントふたつ</chat>
<chat date="1111111111" no="3" thread="1111111111"
 user_id="abcdefghijklmnopq1234567890" vpos="1112">コメントみっつ</chat>
<chat date="1111111111" no="4" thread="1111111111"
 user_id="abcdefghijklmnopq1234567890" vpos="2912">コメントみっつ</chat>
<chat date="1111111111" mail="shita" no="5" thread="1111111111"
 user_id="abcdefghijklmnopq1234567890" vpos="2911">コメントよっつ</chat>
<chat date="1111111111" no="6" thread="1111111111"
 user_id="abcdefghijklmnopq1234567890" vpos="2912">コメントいつつ</chat>
</packet>

想定コマンド

% nxml2merge.exe -rn 1 -at 1800 -i2 infile2-2.xml
  • file2に同NOがある場合は、同NOコメントを無視する仕様なので、「rn」の指定でそれを出力対象として扱う
  • 「at」の指定数値は追加するXMLファイルのコメント表示を何秒ずらしたいか、本想定のような場合は、元にする動画の動画時間を秒に直して記述するのが基本

入力 6 件 出力 6件

  • file1:no18-no20 file2:no20-no22
  • 出力ファイルに改行付与
  • noは1から連番で振り直し(dateで昇順)
  • file2のvposに指定秒数を加算
  • コメントやらのヘッダ部分はfile1のを使用

outfile.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- BoonSutazioData=sm1111111 -->
<packet>
<thread last_res="0" resultcode="0" thread="1111111111"
 ticket="0x1234abcd"/>
<view_counter video="0"/>
<chat date="1111111100" no="1" thread="2222222221"
 user_id="abcdefghijklmnopq1234567890" vpos="2912">コメントむっつ</chat>
<chat date="1111111102" mail="shita" no="2" thread="2222222221"
 user_id="abcdefghijklmnopq1234567890" vpos="2911">コメントななつ</chat>
<chat date="1111111103" no="3" thread="2222222221"
 user_id="abcdefghijklmnopq1234567890" vpos="2912">コメントやっつ</chat>
<chat date="1111111111" mail="shita" no="4" thread="1111111111"
 user_id="abcdefghijklmnopq1234567890" vpos="1111">コメントひとつ</chat>
<chat date="1111111111" no="5" thread="1111111111"
 user_id="abcdefghijklmnopq1234567890" vpos="1112">コメントふたつ</chat>
<chat date="1111111111" no="6" thread="1111111111"
 user_id="abcdefghijklmnopq1234567890" vpos="1112">コメントみっつ</chat>
</packet>

あれこれ

  • 2chのプロバ規制が解除されないのでこっち書いときます -- 名無しさん (2008-01-10 22:19:06)
    ニッチツールをバージョンアップしました。
    ttp://www29.atwiki.jp/bsmw/pages/23.html
    
    NicoNico XML File to Merge Version 0.02 RC 20080110-01
    
    -- 開発環境を ruby から wxDev-C++(mingw) に変更
    --- 環境変化によるバグ確率高し
    -- ruby版と同等機能を実装
    -- ソートオプション実装
    -- BOON用XMLコメント手動出力実装
    
    1M以上のアップロードは怒られたのでファイルを分けてます。
    続きはまた今度やります。
    
    >>274
    まだ未実装分がありますが、ソートオプションは実装したので、ひとまず公開します。
    環境を変えたんで、人柱度アップでアレなのですが、よかったら使ってみてください。
    
    >>829
    InFile1もInFile2も全部一緒にして日付ソートかけてから出力しますので、
    残念ながら、1の後2というような動作にはなりません。
    今回の実装でソートを追加しましたので、その指定で
     # nxml2merge -sb "fileno, date"
    みたいな感じで指定してやれば希望通りの動きになるはずです。
  • 更新お疲れ様です。あちらにも書きましたが、mail欄、コメント欄に&lt; や &gt; や&amp; など特殊文字が含まれていると、 < や > や & に変換されてしまうという以前のバグが復活していることが確認できました。ご確認ください<(_ _)> -- 人柱er (2008-01-14 13:26:43)
  • いつもどうもです 確認しました 確かに復活してましたね(汗 さらっと見た限りではライブラリを追っていかないと原因わからない風なので少し時間かかりそうです もうしばらく待っててください -- 名無しさん (2008-01-15 00:54:12)
  • 嵐・・・何回2ch規制を繰り返せば安定するんだろう。。。また書けないのでこちらで申し訳ない。 -- 名無しさん (2008-01-16 00:01:35)
    BOONアップデートで盛り上がってる所からは程遠い内容ですが
    ニッチツールをひっそりとバージョンアップ。
    
    DLLを更新したのでDLL1,2と本体をDLして下さい。
    
    前版でもあった意図しないリプレース問題ですが、
    今回ので解決したと思います、多分。
    残り実装予定のシングルファイルオプションはまた今度。
    
    NicoNico XML File to Merge Version 0.02 RC 20080115-01
    
    -- &lt; や &gt;等 特殊文字が変換されたままだったのを修正
    -- user_idの完全一致によるNG指定オプション実装
    -- コメントの正規表現によるNG指定オプション実装
  • 使用方法からして全く分からないのですが。exeにxmlをドロップすればいいのでしょうか -- 名無しさん (2008-04-26 11:38:46)
  • exeにドロップしてもダメです。ヘルプやcmdファイルなんぞを隅々見て頂くとわかるかなと。あるいはココは思い切ってコメントファイルを手軽にホゲホゲできる別ツールを試してみるのも手です。リアルがデスマーチ状態でして現状で提供している情報以上の事は激しく無理難題なわけでして、それでもなお奇特にもお使いの意思がおありなら・・・我がデスマーチが過ぎ去るのをお待ちください。 -- qnd (2008-04-29 00:34:07)
  • 一般人にCUIを動かせというのは酷 -- 名無しさん (2008-05-17 23:11:43)
  • cmdのatを変更して出力してみたのですが、atの変更が反映されません、どうしてなのでしょうか?分かる方、助言をお願いします。 -- 名無しさん (2008-07-06 23:13:56)
  • 使い方が全くわかりません。調べようにもどこにも記事がのってないので。PC初心者には扱えないんですか? -- 名無しさん (2008-09-22 17:47:54)
  • cmdファイルを右クリしてやっと1歩進めたが、手軽とは行かないなぁ。全50話の前編後編つなぎ合わせるのにどれほどかかるだろう -- 名無しさん (2010-07-16 02:51:34)
  • 非常に使いづらい上に一部ワードをNG登録するとエラーを吐く・・・正直、似たソフトがないから仕方なく使う程度の代物。コメ付動画作成にこだわる人以外には薦められない -- 名無しさん (2010-12-15 08:48:56)
    名前:
    コメント:

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

目安箱バナー