はじめまして。1年目の早瀬です。
2ヶ月ほど前からGoogleMusicが日本でも使用できるようになりましたね。 僕も使用しているのですが複数端末から曲をアップロードしようと思うとどうしても重複曲が出てきてしまいます。
GoogleMusicには重複曲を削除する機能がないので、今回はPythonを使用して重複曲を削除したいと思います。
外部パッケージのインストール&使用してみる
今回は gmusicapi という外部モジュールを使用します。
$ pip install gmusicapi
外部モジュールのインストールが終わったら試しにこちらのソースコードを動かしてみたいと思います。
from gmusicapi import Mobileclient api = Mobileclient() api.login('user@gmail.com', 'my-password', Mobileclient.FROM_MAC_ADDRESS) # => True artist_name = u'artist-name' library = api.get_all_songs() sweet_track_ids = [track['id'] for track in library if track['artist'] == artist_name] playlist_id = api.create_playlist(artist_name + 'Playlist') api.add_songs_to_playlist(playlist_id, sweet_track_ids)
実行したらGoogle Music上にアーティスト名のプレイリストが表示されていると思います。 これでgmusicapiが使用できることが確認できましたね。
重複曲の削除
それでは本題に入ります。 今回はGoogle Music上のアルバムを重複曲を削除します。 同じアルバム内に同じタイトルの曲が2曲以上入っていた場合重複曲とします。
ソースコードはこちらです。
deleteOverlapSong.py #!/usr/bin/env python # -*- coding:utf-8 -*- from gmusicapi import Mobileclient api = Mobileclient() api.login('email@example.com', 'password', Mobileclient.FROM_MAC_ADDRESS) library = api.get_all_songs() nonFilteringSong = [] filteringSong = [] overlapSong = [] for i in library: song = {'title':i['title'], 'album': i['album']} nonFilteringSong.append(song) for i in range(len(library)): song = {'title':library[i]['title'], 'album': library[i]['album']} if song in filteringSong: overlapSong.append(library[i]['id']) print library[i]['title'], library[i]['album'] else : filteringSong.append(song) if raw_input('これらの曲を削除しますか?[y/n] > ') == 'y': api.delete_songs(overlapSong)
実際に使用してみたいと思います。
Google Music上のゴミ箱にも入っています。
今回は以上ですがgmusicapiは削除以外にも様々なことができるので皆様ぜひ使用してみてください。
参考サイト
gmusicapi: an unofficial API for Google Play Music — gmusicapi 7.0.0 documentation