しばらく返答が寄せられていないようです。 再度ディスカッションを開始するには、新たに質問してください。

iTunes 曲名の一括置換をしたい

iTunesで 曲名 アルバム名の一括置換をしたいです。


iTunes単体でなくても、

 曲情報の取り出し →エディタで置換 →曲情報の取り込みとか

 外部アプリを使った方法

でもかまいません。


今使用しているiTunesのバージョンは12.7.3.46(投稿時点で最新)です。

よろしくお願いします。

iMac, macOS High Sierra (10.13.3)

投稿日 2018/02/04 10:15

返信
スレッドに付いたマーク ベストな回答

投稿日 2018/02/04 16:20

こんな感じの 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

返信: 8
スレッドに付いたマーク ベストな回答

2018/02/04 16:20 Aの人 への返信

こんな感じの 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/04 14:27 ヤス への返信

曲名「2018/02/03」 →曲名「20180203」

曲名「2018/02/04」 →曲名「20180204」

曲名「2018/02/05」 →曲名「20180205」

という感じでスラッシュを抜いて曲名を統一化したいのです。

欲を言えば正規表現使ってこだわりたいです。

mac以外の環境でリッピングしたり、エアチェックしたりしたものをiTunesにいれています。

環境をちょこちょこ変えたので 曲名やアルバム名の付け方が二転三転しています。

iTunesから曲を消して、windowsに持って行って SuperTagEditorとか使って処理して
再投入すればいいのですが、

iCloudミュージックライブラリの同期に時間を持っていかれることを考えたら、
iTunesに残したまま
処理できたらと考えています。
ご存知の方よろしくお願いします。

2018/02/04 16:04 Aの人 への返信

追記です。


前掲のコードではこんな感じの変換となります。

変更前: 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

2018/02/04 16:17 Hiro__S への返信

回答ありがとうございます。 解決しました。

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/04 12:21 ヤス への返信

回答ありがとうございます。


行いたいのは、一括置換です。
曲名「2018/02/03」 →「20180203」に全曲変換したい
といった類です。



曲数が1000を超えているため、手動では対応できそうもありません。
よろしくお願いします。

2018/02/04 13:56 Aの人 への返信

Aという同一曲名の楽曲1000曲以上をBという曲名に一括変換したいということですか?

それともA・B・C・・・・という曲名の異なる楽曲1000曲以上をすべてXという曲名に変換したいということですか?


いずれにせよ、もしよろしければ具体的にどのような目的でその作業を行うのか説明いただけないでしょうか?

iTunes 曲名の一括置換をしたい

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple ID を使ってご参加ください。