EDCB Recname_MacroのRMで文字削除がうまく行かない
EDCB Recname_Macro.dll で[]と文字を消す
EDCBはxtne6fさんのものを使っています。
Read.me通りの設定で、Title2で[]でくくられている部分は削除出来るが、SSだけが欲しかったときのメモ(妥協案)
Recname_Macro.dll と.iniをコピー
コピーしたものは、Recname_Macro - コピー.dll と Recname_Macro.dll - コピー.ini となり、Recname_Macro.dll - コピー.iniをメモ帳などで編集。
簡単な使い方を少し
Recname_Macroでタイトル内にある全角文字を半角に。サブタイトル先頭30文字を録画ファイル名に。
[SET] Macro=$ZtoH(Title2)$ $Head30(ZtoH(SubTitle))$$ZtoH(SDMM)$月$ZtoH(SDDD)$日$ZtoH(SDYYYY)$$SDW$.ts
$ZtoH(Title2)$
ZtoH で全角を半角に。(Title2)で番組名([]の括弧でくくられている部分を削除したもの)。ここで区切りをつけるため$で囲むと、$ZtoH(Title2)$ で上のは後ろに半角スペースが入っている。
$Head30(ZtoH(SubTitle))$
Head30でサブタイトル(SubTitle)の先頭30文字を指定し、先程と同じように ZtoH で全角を半角に、そして指定する対象がサブタイトル(SubTitle)。
半角に変換したサブタイトルの30文字が欲しいので()で括ると Head30(ZtoH(SubTitle))
先頭30としたが15文字だけ欲しい場合は、Head15と変更出来る。
$ZtoH(SDMM)$月
全角から半角にした録画開始の2桁表示の月
$ZtoH(SDDD)$日
全角から半角にした録画開始の2桁表示の日にち
$ZtoH(SDYYYY)$$SDW$.ts
全角から半角にした録画開始の西暦4桁
.ts で拡張子をtsに指定。
Rm/削除したい文字/ で文字を消す。
$Rm/[初][映]【最新作】/ZtoH(Title)$
番組タイトル(Title)から[初]、[映]、【最新作】、を消したかったので$Rm/[初][映]【最新作】/ZtoH(Title)$とした。[SS]がSSとなってしまうのと初、映、最、新、作、この5文字も消えてしまうがこれを適用する番組は映画だけなので、"Recname_Macro_Movie.dll" と名前を変更して録画プロファイルに映画録画専用のものを作って対応。"Recname_Macro.dll"の文字が入っていないと選択欄に表示されなかった。
例: Movie.dllでは表示されず、Recname_Macro_Movie.dllだとOK。
Rm/削除したい文字/ の/内は連続した文字でないと削除対象にはならなかった。
半角スペースが入るとだめだったり、予定ファイル名と格闘した後の妥協案が上のやつ。
Title2で間に合うんだけど、5.1chの番組だけ取り扱いが面倒だから、ファイル名の頭かお尻に"SS"とだけ付いていれば録画結果から一々調べなくても良くなるのでは?と考え、こんなことを書いてみたのです。
Recname_Macro.dllの詳細はReadme_EpgTimerと、Readme_Modに。
正規表現メモ
regular expression/正規表現 abbreviation is REGEX
? Quesition mark は?の前に来ているモノはオプションであり、あってもなくてもどっちでもいい
"(f|c|m)at\.?" => The fat cat sat on the mat.
?の前に来ているものは"."で、更にその前に打ち消しの"\" が来ているから"\."は何でもいい1文字のことを現す。
そして、オプションである"?"が続き全体としては、"f"又は"c"又は"m"の後に"at"と、あってもなくてもいい一文字"\.?"を探すと、上の赤文字が該当する。
"(T|t)he|car" => The car is parked in the garage.
^ Caret は行頭にマッチするものがあるかを判断
"(T|t)he" => The car is parked in the garage.
"^(T|t)he" => The car is parked in the garage.
$ Dollar は行末にマッチするものがあるかを判断
"(at\.)" => The fat cat. sat. on the mat.
"(at\.)$" => The fat cat. sat. on the mat.
\s はwhitescape(non-breaking scape )空白文字を現す。
\s = [\t\n\f\r\p{z}] というこだが、調べていくと改行とタブ(空白の連続みたいなもの)の繰り返しのことを指すようだ。
"\t" がタブのことで、"n" が改行を現し、"\f"が改ページ、"\r"がリターン、"\p{z}"が空白文字と表現されない空白ということのようだ。
参考にした正規表現一覧と、正規表現サンプル集、What does regex"\\p{Z}"mean?
最後の"\p{Z}"が\pを含む{Z}で、 Z回数かと考えたが、"[~]"は()でくくらない限り、[]内のどれか1文字を意味する記号だから{Z}が回数はないだろうとなった。"\p{Z}"がわからなかったらドツボにハマっていただろう。
S08E12 海外ドラマを見ているとよく目にする英語と数字の表記を正規表現でマッチするかをテスト。
(S|s)[0-9]{2}(E|e)[0-9]{2}
(S|s) の部分で大文字のSか小文字のs にマッチするかを指定
[0-9]{2} の部分、[0-9] は0から9の数字だけが続く文字列を指定。{2} で2桁の数字があったときにマッチするように指定。あとは、SとEを入れ替えるだけ。
[0-9]{2,4}とすれば2桁から4桁まで数字が続く文字列を検索できる。
SはseasonでEはeposodesのこと。
コメント
コメントを投稿