树莓派做个vlc闹钟
之前经过研究自己发现:当放歌的时候会更容易起来,但是要一直放下去,不能是30秒的那种。
因为正常的闹钟都有一个特点,响了一会就不停了。想做一个定时定点给我放我歌单的闹钟。正好树莓派这两天树莓派回收回来了。二话不说开整。
另外也是为了以防万一之后忘了树莓派的配置,记录一下,
root
123456
应该是,不是的话就是名字,不行就用cookie重设定下root
passwd
代码
代码放在/home/rui/udp/alarm.py 里
执行之前需要安装vlc、schedule
pip install python-vlc
pip install schedule
下面是核心代码:
import os
import vlc
import time
import _thread
import random
import schedule
from socket import * #socket模块
sing_flag = 0
mp3List = list()
thread_flag = 1
delay = 100
MediaPlayer=vlc.MediaPlayer()
finish = 0
# 每一首歌结束的时候进入
def on_end_reached(event):
global finish
finish = 1
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
def sing_song():
global sing_flag,mp3List,thread_flag,MediaPlayer,finish,delay
start_flag = 0
# 单位 秒 1000s = 16 * 60 约60分钟
delay = 1000
# events = MediaPlayer.event_manager()
# events.event_attach(vlc.EventType.MediaPlayerEndReached, on_end_reached)
while thread_flag:
if(sing_flag):
if(start_flag ==0):
MediaPlayer = vlc.MediaPlayer(random.choice(mp3List))
MediaPlayer.play()
MediaPlayer.event_manager().event_attach(vlc.EventType.MediaPlayerEndReached, on_end_reached)
start_flag = 1
time.sleep(1)
delay = delay - 1
if(delay == 0):
MediaPlayer.stop()
sing_flag = 0
start_flag = 0
elif(finish ==1):
start_flag = 0
finish = 0
else:
start_flag = 0
g = os.walk('/home/rui/udp/')
song_num = 0
for path, d, files in g:
for filename in files:
file = os.path.join(path, filename)
if 'mp3' == file.split(".")[-1]:
mp3List.append(file)
song_num = song_num+1
t = _thread.start_new_thread(sing_song,())
def job():
global sing_flag ,thread_flag,delay
# thread_flag= 1
sing_flag = 1
print(time.strftime("I am job %Y-%m-%d %H:%M:%S", time.localtime()))
delay = 1000
schedule.every().day.at("09:10:09").do(job) # 每隔 5 秒钟执行一次 job 函数
# schedule.every(100).seconds.do(job) # 每隔 5 秒钟执行一次 job 函数
print(time.strftime("frist time %Y-%m-%d %H:%M:%S", time.localtime()))
while 1:
schedule.run_pending() # 运行待执行的任务
# sing_song()
time.sleep(1)
歌曲和代码放在同一个目录下,我的歌曲都是.mp3, 格式不一样的修改一下if 'mp3' == file.split(".")[-1]:这里面的判定条件
自启动配置
毕竟说不定啥时候就断电了,我又不可能没啥事一直调它,得设个自启动,忘了之前的service文件,systemd自启动怎么设置的了。。索性直接sudo nano /etc/rc.local 文件了,修改之后如下:
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
printf "My IP address is %s\n" "$_IP"
fi
python /home/rui/udp/alarm.py
exit 0
python /home/rui/udp/alarm.py
主要加了这句话。
至此,配置结束,经过测试可以自启动了。希望生活能一点一点的被改变呐。
外接了一个之前买的便宜音响,美滋滋。