【技術解説編】iTunesプレイリストをLinuxへ移行する具体的な手順 〜sedコマンド実践集〜

前回の「プレイリストのワナ」でお伝えした顛末について、実際にどんなコマンドで何を解決したのか、技術的な処方箋をまとめておきます。同じ状況で困っている人の手がかりになれば幸いです。by Claude.AI

目次

全体の流れ

  1. iTunesでプレイリストをm3u形式でエクスポート
  2. パス(Windows形式)をLinux形式に変換
  3. 文字コード・改行コードの問題がないか確認
  4. 音楽プレーヤーにインポートして動作確認

このうち、実際にハマりやすいのは2と3です。順番に見ていきます。

手順1:エクスポートされたm3uファイルの中身を確認する

iTunesからエクスポートしたm3uファイルは、こんな見た目のテキストファイルです。

#EXTINFで始まる行は曲情報(コメント扱い)、その次の行が実際のファイルパスです。この事例のように、ネットワークパス形式(\\Homeserver\...)とドライブレター形式(I:\...)が混在することがあるので注意してください。

手順2:改行コードを確認する

パスを書き換える前に、まずファイルの改行コードを確認します。Windows由来のテキストファイルは、Linuxで一般的なLF(\n)ではなく、CRLF(\r\n)になっていることが多いです。目に見えない\rが残っていると、この後のsedの行末指定($)が正しく機能しなくなります。

結果に with CRLF line terminators と出たら、CRLF形式です。以下のコマンドで、LF形式に変換しておきます。

これは今後の全ての作業の土台になるので、必ず最初に済ませておくことをおすすめします。

手順3:パスをLinux形式に一括変換する

NASを/mnt/nasにマウントしている場合、必要な変換は次の3種類です。

変換内容変換前変換後
バックスラッシュ→スラッシュ\/
ネットワークパス\\Homeserver\data/mnt/nas
ドライブレターI:/mnt/nas

これを1行にまとめると、こうなります。

コマンドの読み方:セミコロン(;)区切りで複数の置換を1回のsed呼び出しで実行しています。

  • s/\r$// : 行末のCRを削除(改行コード統一)
  • s/\\/\//g : \をすべて/に変換(gは行内すべてに適用の意味)
  • s#^I:#/mnt/nas# : 行頭(^)がI:の場合、/mnt/nasに置き換え
  • s#//Homeserver/data#/mnt/nas# : //Homeserver/dataという文字列を/mnt/nasに置き換え

s#パターン#置換後#のように、区切り文字に#を使っているのは、パス自体に/が含まれるため、s/パターン/置換後/の形だと/が混同して読みにくくなるのを避けるためです(動作上は/のままでも問題ありませんが、可読性のための工夫です)。

複数のm3uファイルをまとめて処理したい場合は、ファイル名の部分をワイルドカードにするだけです。

実行前に必ずバックアップを取ってください。 -iオプションはファイルを直接上書きするため、想定外の変換が起きても元に戻せなくなります。

手順4:変換結果を確認する

変換後、狙った行が正しく書き換わっているか確認します。

さらに、変換後のパスに実際のファイルが存在するかも確認しておくと安心です。

ファイルが見つかれば、そのパスは正しく変換できています。

ハマりやすい落とし穴:Windowsのパス長制限

まれに、変換後もファイルが見つからない曲があります。その場合、パス自体ではなくファイル名そのものが途中で切れていることがあります。

これは、Windows環境でのパスの文字数制限(合計260文字程度)に、元のファイルパスが引っかかり、iTunesのエクスポート処理でファイル名の情報が欠落したケースです。特に、長いアーティスト名・アルバム名・曲名が重なるコンピレーションアルバムで発生しやすいです。

対処法は、実際のフォルダの中身を見て正しいファイル名を確認し、該当行だけ手動で修正することです。

で正しいファイル名を確認したら、

のように、行末指定($)を使って、欠落パターンの行だけを狙い撃ちで修正します。

音楽プレーヤー側の設定:AACが再生できないとき

パス変換が完了しても、m4a(AAC)ファイルが再生できない場合は、GStreamer関連のパッケージとキャッシュを確認します。

デコーダー自体の存在は、以下で確認できます。

avdec_aacfaadが表示されればデコーダー自体は正常です。それでも再生できない場合は、プラグイン情報のキャッシュが古い可能性があるので、キャッシュを削除してアプリを再起動してください。

Elisaでライブラリ全体を扱う設定

Kubuntu標準搭載の音楽プレーヤー「Elisa」は、デフォルトでは~/Musicフォルダしか見ません。NAS上のライブラリを追加するには、アプリ右上のハンバーガーメニューから「Elisaを設定」を開き、「音楽フォルダー」欄で「新しい場所を追加」からNASのマウントパス(例:/mnt/nas/JUKEBOX/Music)を指定します。

ライブラリの参照方式を採用しているアプリのため、m3uインポートに起因する表示不具合(前回の記事参照)は発生しません。

おまけ:iPhoneへオフライン用に音楽を転送する

NASにもクラウドにも頼らず、iPhone単体でオフライン再生したい場合は、無料アプリ「VLC」のWi-Fiアップロード機能が使えます。

  1. iPhoneでVLCを起動し、設定から「Wi-Fi共有」をON
  2. 表示されたURL(例:http://192.168.1.xx:6689)をPC側のブラウザで開く
  3. ブラウザ上に音楽ファイルをドラッグ&ドロップして転送

数十GB程度の初回一括転送は時間がかかるため、KubuntuならUSB接続してDolphinから直接ファイル共有する方法(libimobiledevice, usbmuxd, ifuseパッケージを利用)の方が高速です。

まとめ

症状原因対処
sedの置換が効かないCRLF改行コードs/\r$//で除去
ファイルが見つからないパス変換漏れネットワークパス・ドライブレターの両方を変換対象に含める
ファイル名が途中で切れるWindowsのパス長制限実フォルダを確認し手動修正
AACが再生できないGStreamerキャッシュ~/.cache/gstreamer-1.0を削除
タイトル/アーティストが逆表示プレーヤー側のm3uインポート仕様ライブラリ参照型のプレーヤー(Elisaなど)に乗り換える

一つ一つは地味な作業ですが、順を追って切り分けていけば、必ず解決にたどり着けます。同じ壁にぶつかっている方の参考になれば幸いです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次