Guest User

Fix_Caption2Ass.js

a guest
Nov 16th, 2017
214
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2. Caption2Assの誤表記を直すJScript
  3.  
  4. 概要
  5. ASSファイルのFormatのColorをColourに書き換えるJSciprtです。
  6. MX PlayerだとColourにしないと認識しないので作成しました。
  7.  
  8. 使い方
  9. このスクリプトの拡張子をjsにして保存する。
  10. コマンドラインで
  11. cscript このスクリプトのパス "オリジナルのass" "出力するass"
  12. を実行。
  13. "出力するass"を省略すると、オリジナルを上書きします。
  14. 変化の有無にかかわらず、オリジナルは上書きされます。
  15.  
  16. ColorとColourどちらが正しいのか?
  17. https://www.matroska.org/technical/specs/subtitles/ssa.html
  18. によると、どうやらColourが正しいようです。
  19. */
  20.  
  21. // assを読み込む
  22. var ass = ReadTextFile(WScript.Arguments(0), "UTF-8");
  23. // assを行に分割する
  24. var line = ass.split("\r\n");
  25. var i = 0;
  26. // [V4+ Styles]がある行
  27. var found = -1;
  28. // 出力ファイルのパス
  29. var output = WScript.Arguments(WScript.Arguments.length > 1 ? 1 : 0);
  30. var max = line.length;
  31.  
  32. // [V4+ Styles]が見つかるまで探す
  33. for (i = 0; i < max; i++) {
  34.     if (line[i] === "[V4+ Styles]") {
  35.         found = i;
  36.         break;
  37.     }
  38. }
  39.  
  40. // [V4+ Styles]が見つかった
  41. if (found >= 0) {
  42.     // Format:がある行を探してColorをColourに書き換える
  43.     for (i = found + 1; i < max; i++) {
  44.         if (line[i].substr(0,6) === "Format:") {
  45.             line[i] = line[i].replace(/Color,/g, "Colour");
  46.             break;
  47.         }
  48.     }
  49. }
  50. // 保存
  51. WriteTextFile(output, line.join("\r\n"), "UTF-8");
  52.  
  53. function ReadTextFile(path, charset) {
  54.     var sr = new ActiveXObject("ADODB.Stream");
  55.     // sr.Mode = 1; // 読み込み専用
  56.     sr.Charset = charset;
  57.     sr.Open();
  58.     sr.LoadFromFile(path);
  59.     return sr.ReadText();
  60. }
  61.  
  62. function WriteTextFile(path, context, charset) {
  63.     var sr = new ActiveXObject("ADODB.Stream");
  64.     // sr.Mode = 1; // 読み込み専用
  65.     sr.Charset = charset;
  66.     sr.Open();
  67.     sr.WriteText(context);
  68.     sr.SaveToFile(path, 2);
  69. }
Advertisement
Add Comment
Please, Sign In to add comment