Python
python3
GooglePlayMusic
python-vlc
gmusicapi

Google Play Musicの非公式APIをたたいて音楽を流す

概要

Python初心者がGoogle Play Musicの非公式APIをたたいて音楽を流す
という投稿の続き(みたいなもの)

前回の内容に加えてやりたかったこと

・勝手にじゃんじゃん音楽を流せるようにしたい→ステーションの利用
・次の曲が勝手に流れるようにする

ステーションについて

・gmusicapiのMobileclientのget_all_stationsっていうAPIでステーションを取得できる
・とりあえず取得したステーションを一覧で表示
・一覧から流したいステーションを選択
・音楽を流す

次の曲への移動について

・再生コマンド入力を時間制限付きにする。ビルトインのinputのラッパーとしてwait_inputを作成
・曲の情報からの曲の長さを取得して入力時間の制限とする
・タイムアウトした場合はループをbreakさせて次の曲へ

def wait_input(ms):
    import signal

    def timeout():
        raise RuntimeError("end")

    signal.signal(signal.SIGALRM, timeout)
    signal.alarm(ms // 1000)

    try:
        key = input('>>')
    except:
        key = 'n'
    finally:
        signal.alarm(0)

    return key

参考にしたもの
Simple key input with time out on python. タイムアウト付きキー入力。

問題点

・pauseしたときに時間制限のタイマーを止められないので、実装の方法を変えた方がいいかもしれない

ソースコード

https://github.com/johejo/gpm2/blob/master/station_player.py