録画が終わった録画TSファイルを、設定した条件で自動エンコードするツールです。 面倒なエンコード前後の処理、番組毎のフォルダ作成と振り分け、移動やコピー、FTP転送、しょぼいカレンダー情報を元にファイルリネーム等の処理をするものです。 空いた時間にコツコツエンコードするのは面倒で非効率だ!自動化できるだろ!と思い立った次第です。
主に TVTest + TvRock + Amatsukaze 環境での動作を想定しています。 いわゆるTS抜き環境が導入されている必要があります。
解凍すると下記ファイルがあると思いますので、例えば"C:\TVTest"に設置して下さい。 TvRock及びTvTestのPATHは"C:\TVTest"を想定し、AmatsukazeのPATHは("C:\TVTest\Amatsukaze")を想定しています。 その他のPATHで運用されている方は設定ファイル"execselect.json"を修正してください。
execselect.exe
execselect.json
channelsetting.json
channelsettingSAMPLE.json
ReadMe.md
※ 関東圏で地上波のみの方は、同梱のexecselect.jsonとchannelsetting.jsonがそのまま使えますので下記3に飛ばしてOKです。
アニメジャンルで尚且つ”しょぼいカレンダー”を使用したい場合にはこのファイル作成が必須です。 何故かと言うと、しょぼいカレンダーは独自チャンネル番号で管理されており、その為の変換が必要になり、このファイル作成が必須になります。
※同梱されているchannelsetting.jsonは東京の地上デジタル放送チャンネルが設定されています。
※1行に作成されてしまいますので編集する場合は「JSON 整形」で検索したサイト等で整形すると見易くなります。 ※編集する場合はUTF-8対応のエディタで編集を行ってください。
処理の挙動を記述します。 自分の行いたい動作になる様に下記execselect.jsonの設定項目を見てexecselect.jsonを記述します。 完了したらexecselect.exeと同じPATHに入れて下さい。
とりあえずサンプルのexecselect.jsonが同梱されていますのでそれを自分の環境に合わせて修正するのが良いかと思います。
※大体最初はJSONの記述で失敗すると思いますので、Web等でJSONチェッカーとかでチェックしてみるのもありです。 ※設定ファイルの各項目についての詳しい設定については、下記「execselect.jsonの設定項目」を参照して下さい。
録画終了時にexecselect.exeが実行される様に下記の通り設定します。
プロセスタブの"コマンドを実行する"にチェックし、BOX内に下記コマンドを設定 する。
TN:C:\TVTest\execselect.exe "%1"
exit:rem 何もしない
ブラウザでTvRock画面を開き、「自動検索予約リスト」の「終了後コマンド」を「規定コマンドを実行」に変更。 これで録画終了時にTSファイルがexecselect.exe渡され起動される筈です。
これで設定は終了です。 お疲れ様でした。
この設定ファイルを起動時に読み込み、コレに基づいた動作をします。 ※JSONファイルの文字コードは "UTF8" のみですので、こ注意下さい。 記述できたら正しいJSONになっているかどうかをcheckオプションで
C:\TVTest> execselect.exe --check
チェックしてみてください、何も表示されなければOKです。 ※WebにJSONチェッカーがありますので、それでチェックするのが早いと思います。
全体に関わる設定です。
例
"INTERNET": true,
例
"SHOBOCAL": true,
例
"VALID_TS": true,
コマンドラインで-a(--auto)オプション指定時にこの設定を参照します。
C:\TVTest> execselect.exe --auto
録画デレクトリが決まった場所であれば、パラメータとパスを一々記述しなくてもデフォルト設定として機能させたい場合に便利です。 指定されたデレクトリから(再帰的に)ファイルを探し出し、自動的に処理に登録します。 複数箇所設定可能です。
例:PATHで指定したフォルダを拡張子tsで再帰的にファイル検索し処理します。
"AUTOENTRY": [
{
"AVAILABLE": true,
"RECURSIVE": false,
"REGEX": ".ts$",
"PATH": "E:\\rec1"
},
{
"AVAILABLE": true,
"RECURSIVE": true,
"REGEX": ".ts$",
"PATH": "F:\\rec2"
}
],
例
"AVAILABLE": true,
"AVAILABLE": false,
例
"PATH": "H:\\Movie\\test",
例
"RECURSIVE": true,
例
"REGEX": ".*\\.ts$",
ユーザーが自由に設定できるユーザー定義定数です。 出現箇所が多い文字、PATHやオプション名などを設定すると便利です。 フォーマットは'#{}'で囲ったものが定数として判断され、書かれた場所ば置換されます。 '#{ユーザー自由設定文字列}'
例
"#{EncodeFilePath}": "C:\\Encode\\",
"#{EncodeEndPath}": "C:\\EncodeEndTS\\",
内部で保持している値で、指定があるとその値で置換されます。 フォーマットは'${}'で囲ったものが定数として判断され、書かれた場所ば置換されます。
例
"#{EncodeFilePath}": "${InDrive}\\Encode\\",
"#{PathAnime}": "${Genre}\\${Genre}${RecYear}年\\${SeasonName}\\[アニメ] ${Title}\\",
"#{FilenameAnime}": "[アニメ] ${Title} 第${EpisodeNo2}話「${SubTitle}」(${ChannelNameS})(${RecDate}${RecTime})#{extensionMKV}",
"#{Amatsukaze_OP_Anime}": "-s ${serviceID} "
変数名 | 機能 | 説明 |
---|---|---|
${Title} | 番組タイトル名 | TSの番組名/取得できたらしょぼいカレンダーのTitle |
${SubTitle} | 番組サブタイトル | |
${EpisodeNo} | 話数(1桁) | |
${EpisodeNo2} | 話数(2桁ゼロ埋め) | 話数を2桁表示します。取得できない場合は空白 |
${Genre} | 大ジャンル名 | 16種類の大ジャンル名を返します |
${GenreM} | 中ジャンル名 | 中ジャンル名を返します |
${Category} | しょぼかるカテゴリー | しょぼいカレンダーで指定されているカテゴリーです |
${RecYear} | 録画年 | |
${RecMonth} | 録画月 | |
${RecDay} | 録画日 | |
${RecDate} | 録画年月日 | |
${RecTime} | 録画時分秒 | |
${SeasonNo} | シーズンNo | 1月~12月を3で割った数。1~4の数値 |
${SeasonName} | シーズン名 | 季節名 |
${ChannelName} | チャンネル名 | |
${serviceID} | サービスID | サービスIDを数値で置換します。 |
${networkID} | ネットワークID | ネットワークIDを数値で置換します。 |
${InDrive} | 入力ファイルのドライブ名 | |
${InFullPath} | 入力ファイルのフルパス | |
${InPath} | 入力デレクトリ | |
${InBaseName} | 入力ファイル名(拡張子無し) | |
${InFileName} | 入力ファイル名(拡張子あり) | |
${OutDrive} | 出力ファイルのドライブ名 | |
${OutFullPath} | 出力ファイルフルパス | |
${OutPath} | 出力デレクトリ | |
${TEMP} | 環境変数TEMP | |
※予告無く変数が追加される事があります。 |
処理する(動画)ファイルの条件を設定します。 TASKLISTには優先順位があり、複数条件を設定している場合は、上の方の設定から評価していきます。
AVAILABLE この項目の有効/無効(true/false)を設定します。 falseに設定するとこの項目は無視されます。
例
"AVAILABLE": true,
"AVAILABLE": false,
SELECT どこの情報から実行する判断をするかを選択します。 ファイル名/TSからの番組名/TSからのジャンルNoから選びます。
例
"SELECT": "FILENAME",
"SELECT": "TSTITLE",
"SELECT": "7",
REGEX 上記'SELECT'で "FILENAME" か "TSTITLE" を指定した場合の条件になります。 '正規表現'で記述し、マッチする文字の場合は処理を行います。 例えば "[NHK] サイエンスZERO.ts" というファイル名だとしたら・・・
例:
"REGEX": "^\\[NHK\\] サイエンスZERO.*$",
こんな感じで正規表現を記述します。("[]"は正規表現で使用するキャラなのでバックスラッシュでエスケープしています。)
PROGRAM 実行するプログラムのフルパスを記述します。
例:
"PROGRAM": "C:\\TVTest\\Amatsukaze\\exe_files\\AmatsukazeCLI.exe",
"PROGRAM": "C:\\TVTest\\AutoConvert\\acutil.bat",
"PROGRAM": "\"C:\\Program Files\\HandBrake\\HandBrakeCLI.exe\"",
※注意としてProgram Files等、スペースがPATHに入る場合はダブルクオーテーションで必ず囲って下さい(※ダブルクオーテーションのエスケープも必ず忘れずに!)
OPTIONS 上記"PROGRAM"で指定したオプションを列挙します。
例
"OPTIONS": "-s ${serviceID} --drcs \"#{AmatsukazePath}drcs\\drcs_map.txt\" -w \"R:\\TEMP\" --chapter-exe \"#{AmatsukazeEXEs}chapter_exe.exe\" --jls ......"
"OPTIONS": "-f mp4 --crop 0:0:0:0 --deinterlace=\"qsv\" --custom-anamorphic"
INFILEOPT 上記PROGRAMで入力ファイルに対するオプション名を指定します。 ※AmatsukazeCLIやHandBrakeCLIは"-i"で、AutoConvertは指定無しです。
例
"INFILEOPT": "-i"
OUTFILEOPT 出力先指定オプションを記述します。 ※AmatsukazeCLIやHandBrakeCLIは"-o"で、AutoConvertは指定無しです。
例
"OUTFILEOPT": "-o",
OUTFILEPATH 出力先ファイルパスをフルパスで記述します。
"OUTFILEPATH": "E:/Encode/[NHK] NHKスペシャル/[NHK] NHKスペシャル「サブタイトル」(NHK).mkv",
上記「内部変数」を使うと出力ファイル名がユニークに設定できます。 TSファイル内の番組名から話数やサブタイトルを切り出して設定されます。
"OUTFILEPATH": "E:/Encode/[NHK] ${Title}「${SubTitle}」(${ChannelNameT}).mkv"
しょぼいカレンダー使用時(アニメ)はSCRenameと同じ感じです。
"OUTFILEPATH": "E:/Encode/${Title} 第${EpisodeNo2}話「${SubTitle}」(${ChannelNameS})(${RecDate}${RecTime}).mkv"
FILESEARCH AutoConvert等、出力先指定が無い、出来ない場合、指定PATH内を検索して探します。 空白は検索しません。 指定はフルパスで書き、下記例の通り変数や正規表現と組み合わせて使う感じです。 今の所AutoConvert専用かも。 AmatsukazeとかHandBreakを使う方は出力先指定が出来るので空白です。
例
"FILESEARCH": "",
"FILESEARCH": "${InDrive}\\Encode\\${Title} 第${EpisodeNo2}話",
"FILESEARCH": "${InPath}${Title} 第${EpisodeNo2}話",
AFTER_TASK 処理後にどうするかの後処理をする設定へのリンクです。空白は何も実行しません。 ※下記AFTER_TASK参照
例
"AFTER_TASK": "",
"AFTER_TASK": "IMOVE_COPY_FTP_ETC",
RECOVERY もし処理がエラーで終了した場合、どうするかの設定です。
""(空白) 次のファイル処理に移行します(default)
"ABORT" 全ての処理を終了します。
"NEXTTASK" 次のTASK設定の評価に移ります。
例
"RECOVERY": "",
"RECOVERY": "ABORT",
"RECOVERY": "NEXTTASK",
後処理に関する設定です。 ファイルのコピー、移動、FTPアップロード、コマンド実行等があります。 下記コマンド名の前に数字とコロン「例 1:」をつけるとその数字の順番で処理を行います。 数字を付けないと順不同で実行されます。
例
"AFTER_TASK": {
"DO_NOTHING": {},
"IMOVE_COPY_FTP_ETC": {
"1:IMOVE": "#{MovePathETC}",
"2:COPY": "#{CopyPathETC}",
"3:FTP": "LOCALFTPETC"
"4:MOVE": "#{MovePathETC}",
},
"AFTER_TEST": {
"1:EXECUTE": "cmd.exe /C del /Q ${InPath}*.json"
},
}
例
"IMOVE": {
"1:IMOVE": "C:/EncodeEndTS/",
},
フルパス指定の場合はリネームを行います(変数使用可能)
例
"IMOVE": {
"1:IMOVE": "C:/EncodeEndTS/[NHK] ${Title}「${SubTitle}」(${ChannelName}).mp4",
},
例
"MOVE": {
"1:MOVE": "C:/EncodeEnd/",
},
例
"COPY": {
"2:COPY": "C:/EncodeEnd/"
},
例
"FTP": {
"4:FTP": "LOCAL_FTP"
},
例
"AFTER_TEST": {
"1:EXECUTE": "cmd.exe /C del /Q ${InPath}*.json"
},
FTP転送する設定項目です。 転送先サイトを複数登録できます。 上記「FTP」と同じ名前の項目が実行されます。
例
"FTP_LIST": {
"LOCAL_FTP": {
"ADDRESS": "192.168.1.4",
"REMOTEPATH": "#{LocalFtpAnimePath}",
"ID": "admin",
"PASS": "password"
},
}
例
"ADDRESS": "192.168.1.2",
例
"REMOTEPATH": "/video/tvrock/nhk_special/",
例
"ID": "admin",
例
"PASS": "password",
execute selector Ver. 1.0.0 by RONJI
usage : execselect.exe [options...] Filenames... or Directorys...
Options:
-c | --check Check only setting files.
-a | --auto Automatic file entry from 'AUTOENTRY' list.
-r | --recursive Recursively search for files.
-f | --filter Regular-Expression filter. example '--filter=.ts$'
-i | --tsinfo TS file info print.
-m | --chmake channelsetting.json auto maker.
例
execselect.exe C:\RecTS\rec.ts
execselect.exe C:\RecTS
※フォルダ指定の場合はフォルダ内のファイルを全て抽出します。 下記オプションでフィルタリングと再帰的検索が行えます。
--check 設定ファイルのチェックのみを行います。 エラーがある場合はその行とエラーについてのメッセージが表示されます。エラーが無い場合は何も表示されません。
例
execselect.exe --check
※WebでJSONチェッカーを使うのが早いかもしれません
--recursive ファイルを再帰的に検索します。
--filter 正規表現フィルターです。 指定の正規表現にマッチしたファイルのみを抽出します。
例:拡張子がtsのものだけ抽出
execselect.exe --filter=.ts$
--tsinfo TSファイルの情報のみを表示します。 処理は行われません。
例
execselect.exe --tsinfo C:\RecTS\rec.ts
execselect.exe --tsinfo C:\RecTS
--auto 上記設定ファイルの"AUTOENTRY"で指定した設定でファイルを検索し処理します。
例
execselect.exe --auto
--chmake 指定のフォルダ内TSファイルから、チャンネル設定ファイルを生成します。
例
execselect.exe --chmake C:\RecTS
execselect.exeと同じフォルダ内にログファイル(execselect.log)が出力されます。 うまく動作しない場合はログを見て、エラーが示す場所を修正してみてください。 大体最初はJSONあたりの記述や正規表現で失敗すると思いますので、Web等でJSONチェッカーとかでチェックしてみるのもありです。
地上デジタル放送しかテストしていないので、もしかしたら不具合等あるかと思います。 不具合報告やフィードバックは Twitter か メール にてお願い致します。 また使い方がよくわからない等も質問頂いても構いません。 今回このような公開は初めてなので、非常に拙く抜けている所があると思いますが何卒ご容赦下さいませ。
下記ソフトウェア等開発者様方々に感謝致します。
このソフトウェアは「現状のまま」で、明示であるか暗黙であるかを問わず、何らの保証もなく提供されます。 ここでいう保証とは、商品性、特定の目的への適合性、および権利非侵害についての保証も含みますが、それに限定されるものではありません。 作者または著作権者は、契約行為、不法行為、またはそれ以外であろうと、ソフトウェアに起因または関連し、あるいはソフトウェアの使用またはその他の扱いによって生じる一切の請求、損害、その他の義務について何らの責任も負わないものとします。