iTunes 曲名の一括置換をしたい
iTunesで 曲名 アルバム名の一括置換をしたいです。
iTunes単体でなくても、
曲情報の取り出し →エディタで置換 →曲情報の取り込みとか
外部アプリを使った方法
でもかまいません。
今使用しているiTunesのバージョンは12.7.3.46(投稿時点で最新)です。
よろしくお願いします。
iMac, macOS High Sierra (10.13.3)
iTunesで 曲名 アルバム名の一括置換をしたいです。
iTunes単体でなくても、
曲情報の取り出し →エディタで置換 →曲情報の取り込みとか
外部アプリを使った方法
でもかまいません。
今使用しているiTunesのバージョンは12.7.3.46(投稿時点で最新)です。
よろしくお願いします。
iMac, macOS High Sierra (10.13.3)
こんな感じの AppleScript でどうでしょうか?
try tell application "iTunes" repeat with t in selection as list set t_name to name of t set name of t to my replace(t_name) end repeat end tell on error errs number errn return errs end try on replace(str) do shell script "bash -s <<'EOF' - " & quoted form of str & " perl -Mutf8 -CIO -pe 's|([0-9]{4})/([0-9]{2})/([0-9]{2})$|$1$2$3|' <<< \"$1\" EOF" end replace
使い方は iTunes 上で変更したい曲を複数選択し、スクリプトを実行。そうすると、曲名が一括変更されます。
文字列の置き換えは Perl の正規表現を使ってます。あとはご自分でカスタマイズしてください。注意点としては、バックスラッシュの書き方。「\d」とかではなく「\\d」等と二重にします。(そうしないと AppleScript がバックスラッシュを解釈してしまうので)
当方の環境で簡単にテストした限りでは問題ありませんでしたが、何が起きても元に戻せるようにバックアップを取っておくことを忘れずに。また、一度に全部処理するのではなく、ダミーのプレイリストを作り、何回かに分けて処理すると良いでしょう。
動作確認
・Mac OS X 10.6.8
・iTunes 11.3.1
こんな感じの AppleScript でどうでしょうか?
try tell application "iTunes" repeat with t in selection as list set t_name to name of t set name of t to my replace(t_name) end repeat end tell on error errs number errn return errs end try on replace(str) do shell script "bash -s <<'EOF' - " & quoted form of str & " perl -Mutf8 -CIO -pe 's|([0-9]{4})/([0-9]{2})/([0-9]{2})$|$1$2$3|' <<< \"$1\" EOF" end replace
使い方は iTunes 上で変更したい曲を複数選択し、スクリプトを実行。そうすると、曲名が一括変更されます。
文字列の置き換えは Perl の正規表現を使ってます。あとはご自分でカスタマイズしてください。注意点としては、バックスラッシュの書き方。「\d」とかではなく「\\d」等と二重にします。(そうしないと AppleScript がバックスラッシュを解釈してしまうので)
当方の環境で簡単にテストした限りでは問題ありませんでしたが、何が起きても元に戻せるようにバックアップを取っておくことを忘れずに。また、一度に全部処理するのではなく、ダミーのプレイリストを作り、何回かに分けて処理すると良いでしょう。
動作確認
・Mac OS X 10.6.8
・iTunes 11.3.1
曲名「2018/02/03」 →曲名「20180203」
曲名「2018/02/04」 →曲名「20180204」
曲名「2018/02/05」 →曲名「20180205」
という感じでスラッシュを抜いて曲名を統一化したいのです。
欲を言えば正規表現使ってこだわりたいです。
mac以外の環境でリッピングしたり、エアチェックしたりしたものをiTunesにいれています。
環境をちょこちょこ変えたので 曲名やアルバム名の付け方が二転三転しています。
iTunesから曲を消して、windowsに持って行って SuperTagEditorとか使って処理して
再投入すればいいのですが、
iCloudミュージックライブラリの同期に時間を持っていかれることを考えたら、
iTunesに残したまま処理できたらと考えています。
ご存知の方よろしくお願いします。
追記です。
前掲のコードではこんな感じの変換となります。
変更前: abcdef 2018/02/03
変更後: abcdef 20180203
そうではなく、曲名に鉤括弧がついていて、下のような変換をしたいのなら
変更前: abcdef「2018/02/03」
変更後: abcdef「20180203」
こんな感じのコードにしてください。
try tell application "iTunes" repeat with t in selection as list set t_name to name of t set name of t to my replace(t_name) end repeat end tell on error errs number errn return errs end try on replace(str) do shell script "bash -s <<'EOF' - " & quoted form of str & " perl -Mutf8 -CIO -pe 's|「([0-9]{4})/([0-9]{2})/([0-9]{2})」$|「$1$2$3」|' <<< \"$1\" EOF" end replace
回答ありがとうございます。 解決しました。
applescriptという手があったんですね。
Hiro.Sさんのソースを参考に
set t_name to name of t
set name of t to my replace(t_name)
を
set t_name to album of t
set album of t to my replace(t_name)
に置き換え、
perl部分の置換ロジックを変換することで
50G近くあったアルバムを10分で置換することができました。
applescriptは色々使えそうなので勉強したいと思います。
ありがとうございました。
回答ありがとうございます。
行いたいのは、一括置換です。
曲名「2018/02/03」 →「20180203」に全曲変換したい
といった類です。
曲数が1000を超えているため、手動では対応できそうもありません。
よろしくお願いします。
その1000曲余りの曲名を全部同じにしたいんですか
Aという同一曲名の楽曲1000曲以上をBという曲名に一括変換したいということですか?
それともA・B・C・・・・という曲名の異なる楽曲1000曲以上をすべてXという曲名に変換したいということですか?
いずれにせよ、もしよろしければ具体的にどのような目的でその作業を行うのか説明いただけないでしょうか?
iTunes 曲名の一括置換をしたい