Hiroto's diary

プログラミングとか色々

iTunesの音楽とプレイリストをWALKMANに入れる

一ヶ月ほど前、iPodの容量不足に伴い音楽プレイヤーをiPodからWALKMANのNW-A47に完全に移行しました。

iTunesの音楽やプレイリストをWALKMANに移行する方法は調べれば大量に出てくるものの、その方法でやると管理が面倒…ってのが沢山だったのと、色々躓く所があったので、自分的に管理がしやすい方法を書きます。


音楽ファイルの移行

音楽ファイル(flac, alac, mp3, aac など)をWALKMANに転送します。

ジャケットの設定

ファイルを転送する前にしておきたいのがジャケット(iTunesではアートワーク)の設定。WALKMANでジャケットが表示されなくても良いと言う方はやる必要無し。

iTunesではCDを取り込むと自動でジャケットを検索して設定してくれる便利な機能がありますが、この機能は実際にファイルにジャケットを設定してる訳ではなく、ジャケットを取得して別ファイルに保存してiTunesで表示する時のみジャケットを出しているだけです。(この方が音楽ファイルのサイズを削減出来る。)

なのでこのまま転送するとWALKMANではジャケットが表示されません。

そして更に厄介なのがWALKMANでジャケットを表示する場合はジャケットの形式がベースラインJPEGである必要がある事。手動で設定した画像がPNGプログレッシブJPEGだと表示されません。


これを解決する為には手動でジャケットを設定する必要があります。

iTunesで購入した曲に関しては最初からベースラインJPEGでジャケットが設定されています のでやる必要がありません。CDから取り込んだ曲インターネットからダウンロードした曲などのみ設定します。

方法は色々あるのですが、楽なのが既に入ってるジャケットを変換する方法。iTunesが勝手に持ってきた時や既にジャケットを手動で設定した時はこれが楽です。

話が逸れますが、音楽はiTunesにあるのにジャケットが自動で取得されなかった場合はブックマークレットを使って取得すると楽です。

hiroto-k.hatenablog.com

話を戻してジャケットの設定。

アルバムを指2本クリックして「アルバムの詳細」を開き、ジャケットをデスクトップに放り投げて変換したものを再度設定するだけ。

  • ジャケットの取り出しと削除。

f:id:Hiroto-K:20181222200536g:plain

  • ジャケットの画像をベースラインJPEGに変換する。

  • 一旦iTunesでジャケット削除した後、変換したものを再度入れる。

f:id:Hiroto-K:20181222200644g:plain

これで保存するとWALKMANでもジャケットが表示されるようになります。


ファイルの移動

SONYのサイトには

iTunesの楽曲リストから転送したい楽曲を選択して、ウォークマンの[MUSIC]フォルダーにドラッグ&ドロップするだけです。

と書いてあります。

www.sony.jp

実際出来るのですが、これでやると曲の数が増えるとファイルを探しにくくなる、曲名と番号が被った際に入れられなくなる等の問題が起きます。

と言う訳で、iTunesライブラリから直接持ってきて整理しやすくします。

ファイルは全て/MUSIC/Music/へ入れました。コピーすると/MUSIC/Music/アーティスト名/アルバム名/音楽ファイルの構成になります。/MUSIC/へ直接入れると既にあるディレクトリ(MUSICCLIPNWWM_REC)と混ざると厄介なのと、後述のプレイリストのファイルも探しにくくなるためです。

WALKMANでは音楽ファイルを/MUSIC/ディレクトリから8階層まで辿ってくれます。無駄にサブディレクトリを掘りすぎると8階層を超えるので、ディレクトリの掘りすぎにだけ注意が必要です。(上記の方法では4階層。音楽の管理がiTunes単一ならそこまで深く掘る必要はないですが…)


参考までに自分の場合の構成。MusiciTunesから持ってきた音楽ファイル、Playlistには後述のプレイリストファイルを格納。

f:id:Hiroto-K:20181222190554p:plain


実際に移行します。

まず始めにiTunes Mediaの位置を確認します。この位置はプレイリストを入れる時に必要になるので、プレイリストを入れる場合は適当な場所にメモしておきます。

  • iTunesの環境設定の詳細を開く。"iTunes Media"フォルダの場所をコピーしておきます。 f:id:Hiroto-K:20180211230520p:plain

  • FinderでiTunes Mediaを開く。Command + Shift + Gでパスを入力すると楽です。 f:id:Hiroto-K:20181222191045p:plain

  • 移動したら音楽ファイルが入っているMusicディレクトリへ。アーティスト名/アルバム名/音楽ファイルの構造で入っています。

  • タブや新しいウィンドウでWALKMANを開く。

  • WALKMAN側の音楽ファイルを入れるディレクトリに移動し、ファイルをコピー。自分の場合はMusicディレクトリを掘ってそこへ入れたので、/MUSIC/Music/へコピーしました。

コピーした後の/MUSIC/Music/ f:id:Hiroto-K:20181222190444p:plain

これでファイル移動は完了。

プレイリストを移行

既にiTunesにあるプレイリストを変換して内容をそのまま持ってきます。

プレイリストのエクスポート

iTunesでプレイリストを開いてm3u形式でエクスポートし、適当な作業ディレクトリに保存します。


  • ファイル -> ライブラリ -> プレイリストを書き出しをクリック f:id:Hiroto-K:20181222183952p:plain

  • 保存。フォーマットはM3Uを選択します。

    • ちなみにWALKMANで表示されるプレイリスト名はこのファイル名となります。 f:id:Hiroto-K:20181222183954p:plain

文字コードの変換とパスの置き換え

プレイリストをエクスポートしてそのままWALKMANに入れても文字コードや音楽ファイルのパスが合わないので何も表示されません。

エディターなり何なりで開いて変換と置き換えでも出来ますが、自分は面倒なので適当なスクリプトを書いてプレイリストを更新する度に手動で実行しています。


プレイリストの文字コードUTF-8へ変換 & パスを置き換えるスクリプトruby convert-playlist.rbsrcに存在する10分以内に更新されたm3uファイルをdistへコピーして全て変換 & 置き換え。

itunes_pathreplace_toは自分のを入れてください。また、replace_toは音楽ファイルが絶対パスになるようなパスに。相対パスだとプレイリストファイルの位置によって音楽ファイルを読み込まなくなります。

convert-playlist.rb

#!/usr/bin/env ruby
# frozen_string_literal: true

require 'pp'
require 'fileutils'

# Copy settings
src_dir_path = File.join(__dir__, 'src')
dist_dir_path = File.join(__dir__, 'dist')
ext = '*.m3u'
# 10min (60sec * 10min)
interval = 60 * 10

# Replace settings
itunes_path = '/Volumes/UNTITLED/Music/iTunes/iTunes Media/Music/'
replace_to = '/MUSIC/Music/'
encode_from = Encoding::UTF8_MAC
itunes_path_regexp = Regexp.new(itunes_path)

puts "Copy playlist files from #{src_dir_path} to #{dist_dir_path}"
Dir
    .glob(File.join(src_dir_path, ext))
    .sort
    .select { |playlist_file|
        last_mod = File.mtime(playlist_file)
        Time.now - last_mod <= interval
    }
    .tap { |playlist_files|
        pp playlist_files
        puts
        FileUtils.cp(playlist_files, dist_dir_path)
    }

puts 'Replace the playlist file contents'
Dir
    .glob(File.join(dist_dir_path, ext))
    .sort
    .tap { |playlist_files|
        pp playlist_files
    }
    .each { |playlist_file|
        puts "Read #{playlist_file}"
        playlist_content = File.read(playlist_file).encode(Encoding::UTF_8, encode_from)

        puts 'Replace paths'
        # Replace new lines and paths.
        new_playlist_content = playlist_content.gsub(/\r/, "\n").gsub(itunes_path_regexp, replace_to)

        puts 'Override playlist file'
        File.open(playlist_file, 'w') do |f|
            f.write(new_playlist_content)
        end

        puts
    }

m3uファイルの移動

/MUSIC/フォルダの下にm3uファイルをコピー。絶対パスで書いている限り、8階層以内ならどこに置いても同じです。

自分の場合は前述の通り音楽ファイルとの混合を防ぐ為、/MUSIC/Playlist/へ入れました。 f:id:Hiroto-K:20181222190301p:plain

WALKMANをPCから取り出す

PCから取り出します。外すとWALKMANがデータベースを作成します。

音楽、プレイリストが全てコピー出来ていれば完了です。

iTunes (Apple Music) で大きいサイズのジャケットを取得するブックマークレット

iTunes (Apple Music) でサイズの大きいジャケットを取得するブックマークレットを書いた. iTunes (Apple Music) のジャケット自動取得機能が使えない時や, ジャケットを大きいサイズに差し替えたい時などに使えます.

iTunes (Apple Music) で大きいサイズのジャケットを取得するブックマークレット

ブックマークに登録するコード.

3000x3000の画像を取得する方.

800x800の画像を取得する方.

他のサイズは自分でコードの最後の方のサイズの値('3000'とか'800')を変えてください.

未圧縮のコード

2020/04/24 追記 : 2020年4月に UI が Apple Music 仕様に変わったため, URL 取得周りを少し書き直し

© 2015 hiroxto