フロントエンドが続いたので、今回は趣向を変えてpythonです。
特に面白いことはしてないのですが、なんとなく紹介しようかと思います。
経緯
私は朝が滅法弱いので、隣人から苦情が来るレベルの大音量で音楽を目覚ましにかけているのですが、
今まではWindowsのタスクスケジューラで音楽ソフトにファイルを引数で渡して起動していました。
しかし、せっかくubuntuもあるので、勉強がてらそのマシンを有効活用しようと思ったのが事の始まりです。
また、勉強中のpythonで何か作りたいなと思ったのもきっかけです。
準備
[環境情報]
・python 3.6(Anaconda 4.3.1 64-bit)
・pip 9.0.1
今回は音楽の再生にpygameという、pythonのゲーム用ライブラリを使います。
以下のコマンドでインストールします。
※pythonやpipなどの環境構築は省略します。
pip install pygame
ソース
音楽ファイルが格納されたフォルダを指定し、ランダムで再生されていく作りになっています。
※拡張子はmp3のみで動作確認しました。
# -*- coding: utf-8 -*-
import pygame.mixer
import time
import os
import random
import sys
folder = r"/home/user/Documents/python_learn/music/" #音楽ファイルが格納されたフォルダを指定
songList = os.listdir(folder)
random.shuffle(songList)
pygame.mixer.init()
for song in songList:
pygame.mixer.music.load(folder + song)
pygame.mixer.music.play(1) # ループ回数(-1だと無限ループ)
while True:
if not pygame.mixer.music.get_busy():
break
設定
ubuntuのcronで定時実行します。
以下コマンドでcronを設定します。
crontab -e
私の場合、平日の朝6時にかかるようにしているので以下のような設定になります。
# 0 6 * * 1-5 /home/user/anaconda3/bin/python /home/user/Documents/python_learn/music.py > /home/user/Documents/log.txt 2>&1
問題点
これで完了です。
上手く動かない場合はログを確認したり、cronが起動しているか確認してみてください。
※寝坊しても責任は取りません(笑)
ただ問題がいくつかあり、止める際は以下のコマンドでPIDを調べkillするしかありません。
ps -ef | grep music.py
kill PID
気が向いたら、GUI操作で止めれるようにしたいなと思います。
あと、たまに再生されない音楽ファイルがあるのですが、原因不明です。
その場合は諦めましょうorz