Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Caption2Assの誤表記を直すJScript
- 概要
- ASSファイルのFormatのColorをColourに書き換えるJSciprtです。
- MX PlayerだとColourにしないと認識しないので作成しました。
- 使い方
- このスクリプトの拡張子をjsにして保存する。
- コマンドラインで
- cscript このスクリプトのパス "オリジナルのass" "出力するass"
- を実行。
- "出力するass"を省略すると、オリジナルを上書きします。
- 変化の有無にかかわらず、オリジナルは上書きされます。
- ColorとColourどちらが正しいのか?
- https://www.matroska.org/technical/specs/subtitles/ssa.html
- によると、どうやらColourが正しいようです。
- */
- // assを読み込む
- var ass = ReadTextFile(WScript.Arguments(0), "UTF-8");
- // assを行に分割する
- var line = ass.split("\r\n");
- var i = 0;
- // [V4+ Styles]がある行
- var found = -1;
- // 出力ファイルのパス
- var output = WScript.Arguments(WScript.Arguments.length > 1 ? 1 : 0);
- var max = line.length;
- // [V4+ Styles]が見つかるまで探す
- for (i = 0; i < max; i++) {
- if (line[i] === "[V4+ Styles]") {
- found = i;
- break;
- }
- }
- // [V4+ Styles]が見つかった
- if (found >= 0) {
- // Format:がある行を探してColorをColourに書き換える
- for (i = found + 1; i < max; i++) {
- if (line[i].substr(0,6) === "Format:") {
- line[i] = line[i].replace(/Color,/g, "Colour");
- break;
- }
- }
- }
- // 保存
- WriteTextFile(output, line.join("\r\n"), "UTF-8");
- function ReadTextFile(path, charset) {
- var sr = new ActiveXObject("ADODB.Stream");
- // sr.Mode = 1; // 読み込み専用
- sr.Charset = charset;
- sr.Open();
- sr.LoadFromFile(path);
- return sr.ReadText();
- }
- function WriteTextFile(path, context, charset) {
- var sr = new ActiveXObject("ADODB.Stream");
- // sr.Mode = 1; // 読み込み専用
- sr.Charset = charset;
- sr.Open();
- sr.WriteText(context);
- sr.SaveToFile(path, 2);
- }
Advertisement
Add Comment
Please, Sign In to add comment