バッチファイル実行機能 - nekopanda/Amatsukaze GitHub Wiki
バッチファイルの実行タイミングは、TSファイル追加時、エンコード実行直前、エンコード実行直後、の3つ。それぞれの実行バッチファイルは個別に設定できる。TSファイル追加時に実行するバッチファイルは、TSファイルドロップ時に出る画面で選択可能。他の2つはプロファイルで設定可能。
batフォルダに 追加時_
, 実行前_
, 実行後_
プリフィックスを付けてバッチファイルを置くと、GUIから選択できるようになる。
変数名 | 説明 |
---|---|
ITEM_ID | アイテムに一意に振られるID。 追加時、実行前、実行後で同じアイテムを追跡できる。 Amatsukazeを再起動するとIDが変わるので注意。 |
IN_PATH | 入力ファイルパス |
OUT_PATH | 出力ファイルパス(拡張子を含まない) |
SERVICE_ID | サービスID(チャンネルID) |
SERVICE_NAME | サービス名(チャンネル名) |
TS_TIME | TSファイルの時刻 |
ITEM_MODE | モード。下表参照。 |
ITEM_PRIORITY | アイテム優先度(1-5) |
EVENT_GENRE | 番組ジャンル |
IMAGE_WIDTH | 映像幅 |
IMAGE_HEIGHT | 映像高さ |
EVENT_NAME | 番組名 |
TAG | タグ(セミコロン区切り) |
ITEM_MODEのモード
モード | 説明 |
---|---|
Batch | 通常 |
AutoBatch | 自動追加 |
Test | テスト |
DrcsCheck | DRCSチェック |
CMCheck | CMチェック |
例
echo ITEM_ID=%ITEM_ID%
echo IN_PATH=%IN_PATH%
echo OUT_PATH=%OUT_PATH%
echo SERVICE_ID=%SERVICE_ID%
echo SERVICE_NAME=%SERVICE_NAME%
echo TS_TIME=%TS_TIME%
echo ITEM_MODE=%ITEM_MODE%
echo ITEM_PRIORITY=%ITEM_PRIORITY%
echo EVENT_GENRE=%EVENT_GENRE%
echo IMAGE_WIDTH=%IMAGE_WIDTH%
echo IMAGE_HEIGHT=%IMAGE_HEIGHT%
echo EVENT_NAME=%EVENT_NAME%
echo TAG=%TAG%
実行結果
ITEM_ID=40
IN_PATH=D:\ts\201108020200020102-ゆるゆり 第5話「あかりとかミンミンゼミとかなく頃に」.ts
OUT_PATH=D:\ts\encoded\201108020200020102-ゆるゆり 第5話「あかりとかミンミンゼミとかなく頃に」
SERVICE_ID=1072
SERVICE_NAME=テレビ東京1
TS_TIME=2011/08/02 2:14:58
ITEM_MODE=Batch
ITEM_PRIORITY=3
EVENT_GENRE=アニメ/特撮 - 国内アニメ
IMAGE_WIDTH=1440
IMAGE_HEIGHT=1080
EVENT_NAME=ゆるゆり 第5話「あかりとかミンミンゼミとかなく頃に」
TAG=
変数名 | 説明 |
---|---|
PROFILE_NAME | プロファイル名 |
例
echo PROFILE_NAME=%PROFILE_NAME%
実行結果
PROFILE_NAME=サンプル_x265-高品質インタレ解除アニメ用(CUDA必須)
変数名 | 説明 |
---|---|
SUCCESS | 成功=1,失敗=0 |
ERROR_MESSAGE | エラーメッセージ(失敗したときのみ) |
IN_DURATION | 入力ファイルの再生時間 |
OUT_DURATION | 出力ファイルの再生時間 |
IN_SIZE | 入力ファイルのサイズ(バイト単位) |
OUT_SIZE | 出力ファイルのサイズ(バイト単位) |
LOGO_FILE | ロゴファイルパス |
NUM_INCIDENT | インシデント数 |
JSON_PATH | 出力JSONパス |
LOG_PATH | ログファイルパス |
例
echo SUCCESS=%SUCCESS%
echo ERROR_MESSAGE=%ERROR_MESSAGE%
echo IN_DURATION=%IN_DURATION%
echo OUT_DURATION=%OUT_DURATION%
echo IN_SIZE=%IN_SIZE%
echo OUT_SIZE=%OUT_SIZE%
echo LOGO_FILE=%LOGO_FILE%
echo NUM_INCIDENT=%NUM_INCIDENT%
echo JSON_PATH=%JSON_PATH%
echo LOG_PATH=%LOG_PATH%
実行結果
SUCCESS=1
ERROR_MESSAGE=
IN_DURATION=1812.577
OUT_DURATION=1812.477
IN_SIZE=3588439472
OUT_SIZE=975992985
LOGO_FILE=SID1072-3.lgd
NUM_INCIDENT=0
JSON_PATH=D:\Amatsukaze\data\logs\2018-08-29_223635.668.json
LOG_PATH=D:\Amatsukaze\data\logs\2018-08-29_223635.668.log
- AddTag <タグ名>
- 追加時/実行前/実行後で使用可能
- タグを追加。また、現在設定されているタグを標準出力に出力。(複数ある場合は";"(セミコロン)区切り)
- 同じタグは重複できないので、既に存在するタグを追加しようとしても無視される。
- 引数なしで実行すると、タグ追加は行わず、現在設定されているタグだけ出力。
- SetOutDir <出力フォルダ>
- 追加時/実行前で使用可能
- 出力先を変更
- SetPriority <優先度>
- 追加時で使用可能
- 優先度(1~5)を変更
- CancelItem
- 追加時/実行前で使用可能
- キャンセル
- GetOutFiles <オプション>
- 実行後で使用可能
- 出力ファイルリストを取得(複数ある場合は";"(セミコロン)区切り)
- オプションは下表の項目の組み合わせ、または、all
- 例) メイン動画と対応する字幕とログファイルを取得: GetOutFiles vsl
オプション | 説明 |
---|---|
v | メインの出力動画ファイル(1つだけ) |
c | メインの出力に対応するCM部分のファイル |
s | メインの出力に対応する字幕ファイル |
w | メイン以外の出力動画ファイル |
d | メイン以外の出力に対応するCM部分のファイル |
t | メイン以外の出力に対応する字幕ファイル |
r | EDCB関連ファイル |
l | ログファイル |
@echo off
for /f %%i in ('AmatsukazeCLI -i "%IN_PATH%" -s %SERVICE_ID% --mode probe_subtitles') do if %%i == 字幕あり (AddTag 字幕)
for /f "tokens=2" %%i in ('AmatsukazeCLI -i "%IN_PATH%" -s %SERVICE_ID% --mode probe_audio') do if %%i == 1 (AddTag 多音声)
追加したタグをプロファイル自動選択の条件にして、字幕があるか、多音声か、でプロファイルを分けることができる。
@echo off
for /f "delims=" %%a in ("%IN_PATH%") do set IN_NAME=%%~na
for /f "delims=" %%a in ("%OUT_PATH%") do set OUT_DIR=%%~dpa
echo %IN_NAME% | find "test" >NUL
if not ERRORLEVEL 1 SetOutDir "%OUT_DIR%test"
echo %IN_NAME% | find "hoge" >NUL
if not ERRORLEVEL 1 SetOutDir "%OUT_DIR%hoge"
入力ファイル名にtest
を含む場合はtest
に、hoge
を含む場合はhoge
に出力
@echo off
for /f "delims=" %%a in ("%OUT_PATH%") do set DST=%%~dpaメイン動画以外
mkdir "%DST%"
for /f "delims=" %%a in ('GetOutFiles cwdtl') do set FILES=%%a
:loop
for /f "tokens=1* delims=;" %%a in ("%FILES%") do (
move /Y "%%a" "%DST%"
set FILES=%%b
)
if defined FILES goto :loop
出力先を変更したい場合は %%~dpaメイン動画以外
の部分を変更する。移動するファイルの種類を変えたい場合は、 GetOutFiles cwdtl
の引数を変更する。例えば、出力ファイルすべてなら GetOutFiles all
。ファイルを移動ではなく、コピーにしたい場合は、move
を copy /B
に変える。