Amatsukazeにてタイトル別フォルダ分け方法

未分類
Group of cypresses in the middle of Tuscany field (Val D'orcia, Italy).

Amatsukazeはジャンル別フォルダ分けには対応しているんですが、タイトル別には対応していないんで、batコードにてタイトル別フォルダ分けを対応させたいと思います。

構想

Amatsukazeには環境変数として番組名がEVENT_NAMEとして渡されているのでこれをいじってタイトルを取得する
(EDCBで変換したファイル名を取得したこともあったのですが、番組によって別法則でタイトルをつけていたりして、取り回しが悪かったので環境変数の形になりました)

処理内容

処理内容としてやることは以下になります。

  1. 番組名の取得
  2. 特殊パターンへの対応(法則外のフォルダに保存する場合への対応)
  3. 全角を半角に変換
  4. タイトルが「」括りの場合への対応(鬼滅の刃など)
  5. 不要な文字の削除(番組名に放送枠がつく場合など削除[日曜劇場])
  6. サブタイトル部分の削除(「、▽など)
  7. 「アルファベット」タイトルへの対応
  8. ジャンル/タイトルのフォルダ作成
  9. 出力後ファイル移動

batコード作成

以下に自分の使っているbatコードを記載しておきます。
コードは素人なので文法的に少しおかしいところがあるかもしれません。

自分はベースとする移動先が2つあるのでbatコードを2段式にしています。

以下を実行後_ファイル移動.batとして保存します。Amatsukazeの実行後batもこれを選択します。

@echo off

::以下のフォルダの下に「ジャンルフォルダ」「タイトルフォルダ」が作成されます
set "FPath=V:\"

::下で作るbatコードの場所を記載します
call "E:\Program Files\Amatsukaze\bat\ファイル移動.bat"

以下がメインプログラム部分になります。
だいたいの番組はそのまま使えると思いますが、一部各自で修正お願いします。

2024-09-06:[初]と[終]を含むタイトルの場合ミスする状況を修正
2024-10-08:2024年冬からフジドラマの枠名が追加されたので処理追加

@echo off

set Title=%EVENT_NAME%
set Service=%SERVICE_NAME%
set Genre=%EVENT_GENRE%

:: 特殊処理 番組名などから特定文字を見つけた場合
:: 任意のフォルダに移動させたい場合
:: 番組名が変わるパターン(CDライブのようにSPがつく場合)
echo %Title% | find "ドラえもん" >NUL
if not ERRORLEVEL 1 (
move "%OUT_PATH%*" "V:\1_アニメ\ドラえもん\1_水田版"
exit
)

echo %Title% | find "CDTVライブ" >NUL
if not ERRORLEVEL 1 (
move "%OUT_PATH%*" "V:\5_音楽\CDTVライブ!ライブ!"
exit
)

echo %Title% | find "仮面ライダー" >NUL
if not ERRORLEVEL 1 (
echo %SERVICE_NAME% | find "東映" >NUL
if not ERRORLEVEL 1 (
move "%OUT_PATH%*" "V:\4_特撮\01_仮面ライダー"
exit
)
)

echo %Service% | find "サービス: SKY STAGE" >NUL
if not ERRORLEVEL 1 (
move "%OUT_PATH%*" "V:\舞台\宝塚"
exit
)
echo %Title% | find "新しいカギ" >NUL
if not ERRORLEVEL 1 (
move "%OUT_PATH%*" "V:\3_バラエティ\新しいカギ
"
exit
)

:: サブルーチン 全角文字を半角文字に置換
call :ZtoH

:: サブルーチン タイトルが「」くくりの場合「」内を抽出
call :rip_brackets

:: サブルーチン タイトルの不要な部分を削除
call :del_title

:: 空白なしでサブタイトルに入るパターンへの対応
for /f "tokens=1 delims=#" %%A in ("%Title%") do set "Title=%%A"
for /f "tokens=1 delims=▼" %%A in ("%Title%") do set "Title=%%A"
for /f "tokens=1 delims=★" %%A in ("%Title%") do set "Title=%%A"
for /f "tokens=1 delims=「" %%A in ("%Title%") do set "Title=%%A"
for /f "tokens=1 delims=【" %%A in ("%Title%") do set "Title=%%A"
for /f "tokens=1 delims=[" %%A in ("%Title%") do set "Title=%%A"
for /f "tokens=1 delims=〈" %%A in ("%Title%") do set "Title=%%A"
for /f "tokens=1 delims=≪" %%A in ("%Title%") do set "Title=%%A"
for /f "tokens=1 delims=(" %%A in ("%Title%") do set "Title=%%A"



:: ファイル名を半角スペースで区切って変数に代入
for /f "tokens=1-6 delims= " %%A in ("%TITLE%") do (
    set "A=%%A"
    set "B=%%B"
    set "C=%%C"
    set "D=%%D"
    set "E=%%E"
    set "F=%%F"
)


:: 変数Aを結果変数に代入
set "Title=%A%"

:: 変数Aの最後の文字がアルファベットでない場合、9へ
call :check_alphabet %A%
if "%is_alphabet%"=="false" goto :display_Title

:check_B
:: 変数Bの最後の文字がアルファベットでない場合、変数Aを結果変数に代入し9へ
call :check_alphabet %B%
if "%is_alphabet%"=="false" (
    set "Title=%A%"
    goto :display_Title
)

:check_C
:: 変数Cの最後の文字がアルファベットでない場合、変数A 変数Bを結果変数に代入し9へ
call :check_alphabet %C%
if "%is_alphabet%"=="false" (
    set "Title=%A% %B%"
    goto :display_Title
)

:check_D
:: 変数Dの最後の文字がアルファベットでない場合、変数A 変数B 変数Cを結果変数に代入し9へ
call :check_alphabet %D%
if "%is_alphabet%"=="false" (
    set "Title=%A% %B% %C%"
    goto :display_Title
)

:check_E
:: 変数Dの最後の文字がアルファベットでない場合、変数A 変数B 変数Cを結果変数に代入し9へ
call :check_alphabet %E%
if "%is_alphabet%"=="false" (
    set "Title=%A% %B% %C% %D%"
    goto :display_Title
)

:check_F
:: 変数Dの最後の文字がアルファベットでない場合、変数A 変数B 変数Cを結果変数に代入し9へ
call :check_alphabet %F%
if "%is_alphabet%"=="false" (
    set "Title=%A% %B% %C% %D% %E%"
    goto :display_Title
)

:: 変数Aを結果変数に代入
set "Title=%A% %B% %C% %D% %E% %F%"
goto :display_Title

:display_Title
:: ジャンルを修正
set "Genre=%Genre:邦画(CS) - =%"
for /f "tokens=1 delims= " %%A in ("%Genre%") do set "Genre=%%A"

:: ディレクトリ X:\C\A を作成
IF "%Genre%"=="アニメーション" SET Genre=1_アニメ
IF "%Genre%"=="アニメ/特撮" SET Genre=1_アニメ
IF "%Genre%"=="ドラマ" SET Genre=2_ドラマ
IF "%Genre%"=="バラエティ" SET Genre=3_バラエティ
IF "%Genre%"=="音楽" SET Genre=5_音楽
IF "%Genre%"=="映画" SET Genre=6_映画
IF "%Genre%"=="ドキュメンタリー/教養" SET Genre=7_ドキュメンタリー

:: 結果を表示
echo タイトル: %Title%
echo サービス: %Service%
echo ジャンル: %Genre%
echo フォルダ: %FPath%

mkdir "%FPath%\%Genre%\%Title%"
echo %FPath%\%Genre%\%Title%フォルダを作成します

:: ドラッグアンドドロップしたファイルを移動
echo ファイル名は%OUT_PATH%
move "%OUT_PATH%*" "%FPath%\%Genre%\%Title%"

echo "%OUT_PATH%*"を"%FPath%\%Genre%\%Title%"に移動が完了しました。

exit /b

:check_alphabet
:: 引数の最後の文字がアルファベットかどうかを判定
set "is_alphabet=true"
for %%L in (%1) do (
    set "last_char=%%L"
)
rem	echo 最終文字は%last_char%です
	set "last_char=%last_char:~-1%"

for %%A in (%last_char%) do (
    if "%%A" lss "a" set "is_alphabet=false"
    if "%%A" gtr "z" set "is_alphabet=false"
rem echo 最終文字は%last_char%なので%is_alphabet%です
)
exit /b


:ZtoH
:: 全角文字を半角文字に置換
set "Title=%Title:0=0%"
set "Title=%Title:1=1%"
set "Title=%Title:2=2%"
set "Title=%Title:3=3%"
set "Title=%Title:4=4%"
set "Title=%Title:5=5%"
set "Title=%Title:6=6%"
set "Title=%Title:7=7%"
set "Title=%Title:8=8%"
set "Title=%Title:9=9%"
set "Title=%Title:A=A%"
set "Title=%Title:B=B%"
set "Title=%Title:C=C%"
set "Title=%Title:D=D%"
set "Title=%Title:E=E%"
set "Title=%Title:F=F%"
set "Title=%Title:G=G%"
set "Title=%Title:H=H%"
set "Title=%Title:I=I%"
set "Title=%Title:J=J%"
set "Title=%Title:K=K%"
set "Title=%Title:L=L%"
set "Title=%Title:M=M%"
set "Title=%Title:N=N%"
set "Title=%Title:O=O%"
set "Title=%Title:P=P%"
set "Title=%Title:Q=Q%"
set "Title=%Title:R=R%"
set "Title=%Title:S=S%"
set "Title=%Title:T=T%"
set "Title=%Title:U=U%"
set "Title=%Title:V=V%"
set "Title=%Title:W=W%"
set "Title=%Title:X=X%"
set "Title=%Title:Y=Y%"
set "Title=%Title:Z=Z%"
set "Title=%Title:#=#%"
set "Title=%Title:「=「%"
set "Title=%Title:」=」%"
set "Title=%Title:(=(%"
set "Title=%Title:)=)%"
set "Title=%Title: = %"
exit /b


:rip_brackets
:: サブルーチン タイトルが「」くくりの場合「」内を抽出
if "%Title:~0,4%"=="劇場版「" for /f "tokens=2 delims=「」" %%A in ("%Title%") do set "Title=%%A"
rem 日テレ
if "%Title:~0,6%"=="土ドラ10「" for /f "tokens=2 delims=「」" %%A in ("%Title%") do set "Title=%%A"
if "%Title:~0,4%"=="ドラマ「" for /f "tokens=2 delims=「」" %%A in ("%Title%") do set "Title=%%A"
if "%Title:~0,3%"=="映画「" for /f "tokens=2 delims=「」" %%A in ("%Title%") do set "Title=%%A"
if "%Title:~0,4%"=="アニメ「" for /f "tokens=2 delims=「」" %%A in ("%Title%") do set "Title=%%A"
if "%Title:~0,1%"=="「" for /f "tokens=2 delims=「」" %%A in ("%Title%") do set "Title=%%A"
rem TBS
if "%Title:~0,3%"=="日5「" for /f "tokens=2 delims=「」" %%A in ("%Title%") do set "Title=%%A"
if "%Title:~0,5%"=="日曜劇場「" for /f "tokens=2 delims=「」" %%A in ("%Title%") do set "Title=%%A"
if "%Title:~0,6%"=="火曜ドラマ「" for /f "tokens=2 delims=「」" %%A in ("%Title%") do set "Title=%%A"
if "%Title:~0,6%"=="金曜ドラマ「" for /f "tokens=2 delims=「」" %%A in ("%Title%") do set "Title=%%A"
if "%Title:~0,6%"=="金曜ドラマ「" for /f "tokens=2 delims=「」" %%A in ("%Title%") do set "Title=%%A"
if "%Title:~0,9%"=="ドラマストリーム「" for /f "tokens=2 delims=「」" %%A in ("%Title%") do set "Title=%%A"
rem テレ東
if "%Title:~0,4%"=="時代劇「" for /f "tokens=2 delims=「」" %%A in ("%Title%") do set "Title=%%A"
if "%Title:~0,6%"=="名作ドラマ「" for /f "tokens=2 delims=「」" %%A in ("%Title%") do set "Title=%%A"
if "%Title:~0,10%"=="午後のランチタイム「" for /f "tokens=2 delims=「」" %%A in ("%Title%") do set "Title=%%A"
rem フジ
if "%Title:~0,3%"=="映画『" for /f "tokens=2 delims=「」" %%A in ("%Title%") do set "Title=%%A"
if "%Title:~0,7%"=="『テレビアニメ" for /f "tokens=2 delims=「」" %%A in ("%Title%") do set "Title=%%A"
rem BS11
if "%Title:~0,8%"=="連続テレビ小説「" for /f "tokens=2 delims=「」" %%A in ("%Title%") do set "Title=%%A"
if "%Title:~0,6%"=="昭和ドラマ「" for /f "tokens=2 delims=「」" %%A in ("%Title%") do set "Title=%%A"
rem BS12
if "%Title:~0,9%"=="日曜アニメ劇場 「" for /f "tokens=2 delims=「」" %%A in ("%Title%") do set "Title=%%A"
if "%Title:~0,8%"=="土曜洋画劇場 「" for /f "tokens=2 delims=「」" %%A in ("%Title%") do set "Title=%%A"
exit /b


:del_title
::タイトルの不要な表記削除 曜日
set "Title=%Title:1時間スペシャル=%"
set "Title=%Title:2時間スペシャル=%"
set "Title=%Title:3時間スペシャル=%"
set "Title=%Title:1時間SP=%"
set "Title=%Title:2時間SP=%"
set "Title=%Title:3時間SP=%"
set "Title=%Title:ぶちドラ!・=%"
set "Title=%Title:[初]=%"
set "Title=%Title:[終]=%"
set "Title=%Title:[新]=%"
set "Title=%Title:[字]=%"
set "Title=%Title:[無]=%"
set "Title=%Title:[無料]=%"
set "Title=%Title:[映]=%"
set "Title=%Title:【新】=%"
set "Title=%Title:【無料】=%"
set "Title=%Title:<HDリマスター>=%"
set "Title=%Title:<HD>=%"
set "Title=%Title:[アンコール放送] =%"
set "Title=%Title:ドラマスペシャル =%"
rem NHK
set "Title=%Title:【連続テレビ小説】=%"
set "Title=%Title:【ドラマ10】=%"
set "Title=%Title:【夜ドラ】=%"
set "Title=%Title:【特選!時代劇】=%"
rem テレ東
set "Title=%Title:日ビ =%"
set "Title=%Title:月曜プレミア8 =%"
set "Title=%Title:水バラ =%"
set "Title=%Title:土曜スペシャル =%"
set "Title=%Title:ドラマ8 =%"
rem フジテレビ
set "Title=%Title:<月10>・=%"
set "Title=%Title:<火9>・=%"
set "Title=%Title:<火ドラ★イレブン>=%"
set "Title=%Title:<木曜劇場>=%"
set "Title=%Title:土ドラ・=%"
set "Title=%Title:土曜プレミアム・=%"
set "Title=%Title:<ノイタミナ>・=%"
rem BS日テレ
set "Title=%Title:アニメ =%"
rem BS朝日
set "Title=%Title:アニメA・=%"
rem BSフジ
set "Title=%Title:<アニメギルド>=%"
set "Title=%Title:<時代劇名作選>=%"
set "Title=%Title:<サスペンス劇場>=%"
rem BS松竹東急
set "Title=%Title:ミッドナイトシネマ =%"
set "Title=%Title:6時のミステリー =%"
set "Title=%Title:よる8銀座シネマ =%"
rem ホームドラマ
set "Title=%Title:アニメ◆=%"
exit /b

上記では自分は「ドラえもん」や「仮面ライダー」を含むファイルを特殊処理で専用フォルダに移動させている他特定のチャンネルの録画を専用フォルダに移動させています。

コメント

タイトルとURLをコピーしました