Google Play Musicが終わってしまったのでプレイリストを移行するためのスクリプトを書いた

概要

タイトルの通り、Google Play Music(GPM)のサービス終了に伴ってプレイリストを移行する必要が生じたので、そのためのツールを簡単に実装しました。

元々flacで購入していたものはそっちを使いたかったので、flacファイルが手持ちにあればflacのパスに差し替えるような機能も加えました。

引数に対応してないため、実行に際しmain.pyを書き換える必要があります。ダサいですが、常用するものではないのでOKというジャッジです。

github.com

乗り換え先サービスは見つかっておらず、ひとまずfoobar2000で再生する予定です。

以下は実装時のメモ。

Dumped Files

ダンプされたファイルは次のような名前で複数個になることもある。そのまま同一のフォルダに展開して問題ないように見える。

takeout-20201011T062914Z-001.zip
takeout-20201011T062914Z-002.zip
...

メモ

Directory Tree

tree
└─Takeout
    └─Google Play Music
        ├─トラック
        ├─プレイリスト
        │  ├─#All-Thumbs-Up
        │  │  └─トラック
        │  ├─2019-01-07
        │  │  └─トラック
        │  ├─2019-02-01
        │  │  └─トラック
        │  └─高く評価した曲
        └─ラジオ ステーション
            └─最近利用したステーション

Playlist Directory

プレイリスト直下のメタデータ.csvは特に重要なデータを持ってなさそう。トラック以下のものをパースする必要がある。

├─2020-06-30
│  │  メタデータ.csv
│  │
│  └─トラック
│          XXXX.csv
│          YYYY.csv

ヘッダは次のようなもの。

タイトル,アルバム,作成者,時間(ミリ秒),評価,再生回数,削除済み,プレイリストのインデックス

Track Directory

Google Play Music直下のトラックフォルダ。ここにはmp3ファイルとそれに対応するcsvファイルが存在する。 csvファイルのヘッダは次のようなもの。

タイトル,アルバム,作成者,時間(ミリ秒),評価,再生回数,削除済み

プレイリスト -> トラック以下のcsvファイルとここのcsvファイルはTitile, Album, Artistで結合できるが、これらのcsvとMP3を結びつける方法がない。 そのため、mp3から直接タグを吸い出す実装にして、ここのcsvファイルのデータは使用しないことにした。