前の記事ではiTunesTrackを使ってiTunesから音楽データを抽出しWebアプリ化する手順を説明しました。

iTunes.appの音楽ライブラリを最速でWebアプリにするたった3つのステップ

ここではiTunesTrackの詳細を説明します。対象バージョンは0.0.1です。

itunes_track | RubyGems.org | your community gem host

melborne/itunes_track

ターミナルでの使い方

gem install itunes_trackでインストールすると、itunes_trackターミナルコマンドが使えるようになります。サブコマンドを渡さなければそのヘルプが表示されます。

% itunes_track
Commands:
  itunes_track csv PATH        # Create CSV file from tracks data
  itunes_track help [COMMAND]  # Describe available commands or one specific command
  itunes_track size [ARTIST]   # Show track size for ARTIST match
  itunes_track tracks          # Show tracks
  itunes_track version         # Show ItunesTrack version

sizeサブコマンドは、引数で渡したARTISTにマッチするトラックの数を返します。引数を省略すると全楽曲数が返ります。

% itunes_track size sixpence
47
% itunes_track size
1091

tracksサブコマンドは楽曲一覧を表示するもので、--artist--albumというオプションを取れます。

% itunes_track help tracks
Usage:
  itunes_track tracks

Options:
  -a, [--artist=ARTIST]
  -l, [--album=ALBUM]

Show tracks
% itunes_track tracks -a sixpence -l 'Best Of'
 Kiss Me 3:29 Sixpence None The Richer The Best Of Sixpence None The Richer 36
 Loser Like Me 3:33 Sixpence None The Richer The Best Of Sixpence None The Richer 53
 Need To Be Next To You 4:07 Sixpence None The Richer The Best Of Sixpence None The Richer 51
 Breathe 4:05 Sixpence None The Richer The Best Of Sixpence None The Richer 53
 Dancing Queen 4:02 Sixpence None The Richer The Best Of Sixpence None The Richer 46
 Melody Of You 4:50 Sixpence None The Richer The Best Of Sixpence None The Richer 42
 I Can't Catch You 4:12 Sixpence None The Richer The Best Of Sixpence None The Richer 38
 I Just Wasn't Made For These Times 3:02 Sixpence None The Richer The Best Of Sixpence None The Richer 57
 There She Goes 2:43 Sixpence None The Richer The Best Of Sixpence None The Richer 44
 Don't Dream It's Over 4:02 Sixpence None The Richer The Best Of Sixpence None The Richer 45
 I Need Love 4:12 Sixpence None The Richer The Best Of Sixpence None The Richer 54
 Breathe Your Name 3:56 Sixpence None The Richer The Best Of Sixpence None The Richer 37
 Us 4:22 Sixpence None The Richer The Best Of Sixpence None The Richer 42
 The Ground You Shook 4:18 Sixpence None The Richer The Best Of Sixpence None The Richer 42
 Too Far Gone 6:37 Sixpence None The Richer The Best Of Sixpence None The Richer 45
 Waiting On The Sun 2:52 Sixpence None The Richer The Best Of Sixpence None The Richer 46
 Brighten My Heart 4:38 Sixpence None The Richer The Best Of Sixpence None The Richer 44
 Trust 3:21 Sixpence None The Richer The Best Of Sixpence None The Richer 44

現状、カラー化できていないので非常に見づらいものとなっています^ ^;

csvサブコマンドは、抽出したトラックデータをCSVファイルに保存するためのコマンドです。対象フィールドを指定する--fieldsとアーティストを特定する--artistオプションがあります。

% itunes_track help csv
Usage:
  itunes_track csv PATH

Options:
  -f, [--fields=FIELDS]
                         # Default: name,time,artist,album,genre,rating,played_count,year,composer,track_count,track_number,disc_count,disc_number,lyrics
  -a, [--artist=ARTIST]

Create CSV file from tracks data

次のように使います。

% itunes_track csv sixpence.csv -a sixpence -f name,artist,album,year
I am working on csv...
CSV file successfully created at sixpence.csv.

以下のようなファイルが出来上がります。

name,artist,album,year
Kiss Me,Sixpence None The Richer,The Best Of Sixpence None The Richer,1999
Loser Like Me,Sixpence None The Richer,The Best Of Sixpence None The Richer,2004
Need To Be Next To You,Sixpence None The Richer,The Best Of Sixpence None The Richer,2004
Breathe,Sixpence None The Richer,The Best Of Sixpence None The Richer,2004
Dancing Queen,Sixpence None The Richer,The Best Of Sixpence None The Richer,2004
Melody Of You,Sixpence None The Richer,The Best Of Sixpence None The Richer,2004
I Can't Catch You,Sixpence None The Richer,The Best Of Sixpence None The Richer,2004
I Just Wasn't Made For These Times,Sixpence None The Richer,The Best Of Sixpence None The Richer,2004
There She Goes,Sixpence None The Richer,The Best Of Sixpence None The Richer,1997
Don't Dream It's Over,Sixpence None The Richer,The Best Of Sixpence None The Richer,2002
I Need Love,Sixpence None The Richer,The Best Of Sixpence None The Richer,2004
Breathe Your Name,Sixpence None The Richer,The Best Of Sixpence None The Richer,2002
Us,Sixpence None The Richer,The Best Of Sixpence None The Richer,2004
The Ground You Shook,Sixpence None The Richer,The Best Of Sixpence None The Richer,2004
Too Far Gone,Sixpence None The Richer,The Best Of Sixpence None The Richer,2004
Waiting On The Sun,Sixpence None The Richer,The Best Of Sixpence None The Richer,2004
Brighten My Heart,Sixpence None The Richer,The Best Of Sixpence None The Richer,2004
Trust,Sixpence None The Richer,The Best Of Sixpence None The Richer,2004
 .
 .
 .

Rubyスクリプトでの使い方

ItunesTrackクラスは次のようなクラスメソッドを持っています。

% irb -ritunes_track
IRB on Ruby2.0.0
>> ItunesTrack.methods(false) #=> [:build, :full_build, :tracks, :itunes, :itunes_tracks, :size, :track_properties, :to_csv]
>>

.sizeメソッドは楽曲数を返しますが、条件を指定したブロックを取ることができます。

>> ItunesTrack.size {|t| t.genre.get.match /jazz/i } #=> 66
>> ItunesTrack.size {|t| t.name.get.match /hello/i } #=> 3

rb-appscriptの仕様上、メソッドの最後でgetする必要があります(イケてない)。

.buildメソッドは対象のタグ(フィールド)を指定して、ブロックで渡した条件のトラックのリストを生成しtracks変数に格納します。

>> ItunesTrack.build(:name, :time, :artist) { |t| t.artist.get == 'Adele' }

=> [#<ItunesTrack::Track name="Daydreamer", time="3:40", artist="Adele">, #<ItunesTrack::Track name="Best For Last", time="4:18", artist="Adele">, #<ItunesTrack::Track name="Chasing Pavements", time="3:30", artist="Adele">, #<ItunesTrack::Track name="Cold Shoulder", time="3:11", artist="Adele">, #<ItunesTrack::Track name="Crazy For You", time="3:28", artist="Adele">, #<ItunesTrack::Track name="Melt My Heart To Stone", time="3:23", artist="Adele">, #<ItunesTrack::Track name="First Love", time="3:10", artist="Adele">, #<ItunesTrack::Track name="Right As Rain", time="3:17", artist="Adele">, ... ]

引数を省略した場合、name, time, artist, album, genre, rating, played_count, year, composer, track_count, track_number, disc_count, disc_number, lyricsを対象にリストを生成します。rb-appscriptでアクセス可能なすべてのタグを取得したい場合はbuildに代えてfull_buildメソッドを使います。楽曲数が多い場合、生成に時間がかかることを覚悟します。

.to_csvメソッドはbuildしたデータをcsvファイルに保存します。第2引数でCSV化するフィールドを更に限定することもできます。

ItunesTrack.to_csv('adele.csv', [:name, :album, :time])

大体以上です。


=== Ruby関連電子書籍100円で好評発売中! ===

M’ELBORNE BOOKS

ruby_object ruby_tutorial ruby_trivia



blog comments powered by Disqus
ruby_pack8

100円〜で好評発売中!
M'ELBORNE BOOKS