树莓派做个vlc闹钟 ---个人DIY

简介: 树莓派做一个定时响的音乐播放器。起床不再困难,早睡成为习惯。csdn博客 本人搬运。

树莓派做个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
主要加了这句话。
至此,配置结束,经过测试可以自启动了。希望生活能一点一点的被改变呐。
外接了一个之前买的便宜音响,美滋滋。

目录
相关文章
|
1月前
|
计算机视觉 Python
Jetson 学习笔记(六):cv2调用CSI摄像头(jetson nx/nano)、打开海康摄像头、打开电脑摄像头
这篇文章介绍了在不同平台上接入并显示摄像头视频流的方法,包括海康摄像头的RTSP连接、电脑内置摄像头的直接读取、Jetson NX/Nano通过CSI接口和USB接口的操作,以及Jetson Nano通过Gstreamer管道和jetcam库的使用,并提供了相应的代码示例。
209 1
|
6月前
|
Android开发 芯片
ESP8266-mini-d1+点灯科技——制作手机远程MP3播放器
ESP8266-mini-d1+点灯科技——制作手机远程MP3播放器
211 0
ESP8266-mini-d1+点灯科技——制作手机远程MP3播放器
|
6月前
MacBook pro今天开机屏幕不亮了,其它什么都好的,键盘也亮的,声音软件都好的...
MacBook pro今天开机屏幕不亮了,其它什么都好的,键盘也亮的,声音软件都好的...
332 2
|
传感器 定位技术 计算机视觉
树莓派开发笔记(九):基于CSI口的摄像头拍照程序(同样适用USB摄像头)
树莓派开发笔记(九):基于CSI口的摄像头拍照程序(同样适用USB摄像头)
树莓派开发笔记(九):基于CSI口的摄像头拍照程序(同样适用USB摄像头)
|
Linux Windows
嵌入式Linux系列第13篇:USB摄像头拍照
嵌入式Linux系列第13篇:USB摄像头拍照
|
图形学 iOS开发
Unity 之 代码获取IOS设备型号
两种方式获取IOS设备型号,一种可以根据机型进行处理,另外一种则是按照屏幕比例进行分类,一起来了解一下吧~
598 0
Unity 之 代码获取IOS设备型号
玩转easyARM imax283A开发版(二),移植NES模拟器并增加按键驱动,让板子可以玩超级玛丽游戏
玩转easyARM imax283A开发版(二),移植NES模拟器并增加按键驱动,让板子可以玩超级玛丽游戏
玩转easyARM imax283A开发版(一),移植madplay让板子支持mp3音乐播放
玩转easyARM imax283A开发版(一),移植madplay让板子支持mp3音乐播放
day28-开发板触屏操作(2022.2.25)
day28-开发板触屏操作(2022.2.25)
语音模块语音输入树莓派打印开灯关灯源码
语音模块语音输入树莓派打印开灯关灯源码
87 0
语音模块语音输入树莓派打印开灯关灯源码