このサイトについて

Pythonを使ってiTunesのトラックを扱えるようにしたので,Twitterと連携してみた

Pythonを使ってiTunesのトラックを扱えるようにしたので,Twitterと連携してみた


前回の続き。appscriptでラップしたPythonのiTunesオブジェクトで,トラックを扱えるようにした。トラックというのはiTunesに取り込んだ曲のこと。iTunesで再生中の曲を取り出したり,曲を検索したりできるようにした。新しいモジュールはエントリの下の方からダウンロードできます。

たとえば,再生中の曲情報を取得するのはこんなかんじ。iTunesオブジェクトのメソッドget_current_track()を呼び出すと,トラックオブジェクトが返ってくる。

 

>>> from itunes import iTunes
>>> it = iTunes()
>>> it.play()
>>> track = it.get_current_track()
>>> print track.artist, track.album, track.duration
山中千尋 Abyss 305.187988281


トラックオブジェクトには,アトリビュートとしていろんな情報が詰まってて楽しい。曲のタイトルやアーチスト名だけでなく,アルバム情報やレーティングなどiTunesから見える情報の他,何回再生したかとか,最後に再生したのはついかなど,いろんな情報が取得できる。トラックオブジェクトのplay()メソッドを呼ぶと,曲を演奏できる。

トラックの検索はこんなかんじ。引数はname(曲名),artist(アーチスト名),album_title(アルバム名),album_artist(アルバムのアーチスト名)が使える。検索文字列として正規表現を渡す。戻り値はヒットしたトラックオブジェクトのリストになる。


>>> tracks = it.find_in_library(artist='Gary.*')
>>> len(tracks)
165

>>> for t in tracks[0:10]:
...     print t.name
...
Native Sense
Love Castle
Duende
No Mystery
Armando's Rhumba
Bagatelle #6
Post Script
Bagatelle #2
Tango '92
Rhumbata


で,がぜん楽しくなってきたところでお約束として,再生中の曲をTwitterにPostするスクリプトを作ってみた。再生中のアルバムが変わるとPostをする。アカウントは自分で変えて下さい。あ,python-twitterをインストールしておく必要があります。

ソースはこんな感じ。コメント込みで35行でできちゃったよママン! まえにやったのよりシンプルでスマートだと思う。


#!/usr/bin/env python
# coding=utf-8

from itunes import iTunes
import twitter
import shelve

# Put you own account information :-).
user = 'dan'
passwd = 'kogaidan'
post_template = 'Now Playing : %(artist)s - %(album)s'

def main():
    # Making iTunes object to communicate to it.
    it = iTunes()
    # Open shelve to store previous track information
    s = shelve.open('./ittrack.dat')
    if 'album' not in s:
        s['album'] = ''
        s['artist'] = ''
    # Getting current track and comparing name of the album
    track = it.get_current_track()
    if track and track.album != s['album']:
        # Making a post to twitter
        #   so that people can know playing album has been changed :-).
        # Making twitter.app object to post
        tw = twitter.Api(user, passwd)
        message = post_template % track.get_dict()
        tw.PostUpdate(post_template % message)
        # Store album information to shelve. It will be automatically saved.
        s['album'] = track.album
        s['artist'] = track.artist

if __name__ == '__main__':
    main()


いろいろ改造すると楽しいかもね。Have fun :-).

itunes03.py itunes03.py
Size 5.0 kB - File type text/python-source
by ats last modified 2009-06-16 23:53
2010-08-27 04:51