基本的に自分用のメモとして作成。
引数続きPythonの勉強中。
(前回→Python3でキッチンタイマを作る)
再び旦那に課題を求めたらプレイリスト作ってみてとのこと。
色々機能を付けると難しいのでとりあえず簡単なものを作成。
今回初めてmutagenモジュールを使用。
インストールはこれでできた。
pip install mutagen
以下が作成したコード。
PlayList_easy.py
#定数
SONG_LIST = ("僕らのLIVE 君とのLIFE",
"友情ノーチェンジ",
"Snow halation",
"baby maybe 恋のボタン",
"Love marginal",
"sweet & sweet holiday",
"ダイヤモンドプリンセスの憂鬱",
"ラブノベルス",
"知らないLove_教えてLove",
"あ・の・ね・が・ん・ば・れ!",
"夏色えがおで1, 2, Jump!",
"Mermaid festa vol. 1",
"もぎゅっとloveで接近中!",
"愛してるばんざーい!")
#ユーザー作成のプレイリスト
PlayList = []
#曲リスト表示
def PrintSongList():
for i in range(len(SONG_LIST)):
print(str(i)+" : "+SONG_LIST[i])
#プレイリストに入れるか確認
def CheckIntoPlayList(num):
if 0 <= num <= (len(SONG_LIST) - 1):
PlayList.append(num)
#音再生処理
def Sound(num):
song_name = "SongList/" + SONG_LIST[num] + ".mp3"
pygame.mixer.init() #初期化
pygame.mixer.music.load(song_name) #読み込み
song_time = MP3(song_name).info.length #曲の長さ取得
pygame.mixer.music.play(1) #引数を1にすると1回のみ再生
time.sleep(song_time) #曲の長さ分待機
pygame.mixer.music.stop() #終了
#プレイリストの曲を再生する
def PlaySong():
for i in range(len(PlayList)):
Sound(PlayList[i])
#曲名表示
print("曲番号を流したい順に入力してください。")
print("曲選択が終了すれば「Z」を入力してください。")
PrintSongList()
#プレイリスト作成
song = ""
error_cnt = 0
while not song == "z":
song = input()
if song.isdecimal() == True:
CheckIntoPlayList(int(song))
error_cnt = error_cnt + 1
if error_cnt > 10:
exit()
print("この曲リストを再生します")
print(PlayList)
PlaySong()
JASRAC曰く曲名に著作権はないようなので実際使ってた曲名リストそのままです。。。
実行したらこんな感じ。
pygame 1.9.5
Hello from the pygame community. https://www.pygame.org/contribute.html
曲番号を流したい順に入力してください。
曲選択が終了すれば「Z」を入力してください。
0 : 僕らのLIVE 君とのLIFE
1 : 友情ノーチェンジ
2 : Snow halation
3 : baby maybe 恋のボタン
4 : Love marginal
5 : sweet & sweet holiday
6 : ダイヤモンドプリンセスの憂鬱
7 : ラブノベルス
8 : 知らないLove_教えてLove
9 : あ・の・ね・が・ん・ば・れ!
10 : 夏色えがおで1, 2, Jump!
11 : Mermaid festa vol. 1
12 : もぎゅっとloveで接近中!
13 : 愛してるばんざーい!
ここで連続再生したい曲に該当する番号を流したい曲順にタイプする。
今回は「0、s、15、13、13」と順番に入力。
入力が確定すれば「z」を入力。
0
s
15
13
13
z
この曲リストを再生します
[0, 13, 13]
文字や範囲外の数値は無視されて、入力可能な数値がPlayList配列に順に格納される。
これで
僕らのLIVE 君とのLIFE→愛してるばんざーい!→愛してるばんざーい!
と順番に再生することができた。
曲を流してる間は曲の再生時間分time.sleepで待っているという仕組み。
(バグ回避のためには曲の再生時間+α待ったほうがいいかも)
今後は停止ボタンとかつけてみる予定なので、そのときにもっとスマートな造りにできないか検討してみます。