【python实用小脚本-105】Python定时提醒工具:优雅实现声音警报与交互控制

在日常工作和生活中,我们经常需要设置定时提醒来避免长时间专注导致的疲劳。今天我将分享一个使用Python实现的简单但实用的定时提醒工具,它能够在设定的时间间隔后播放声音提醒,并允许用户通过输入来关闭提醒。

一、代码功能解析

代码展示:

import os
import playsound
from time import sleep
import multiprocessing


def remind():
    while True:
        sleep(20 * 60)
        os.popen('osascript -e "set Volume 6"')
        p = multiprocessing.Process(
            target=playsound.playsound, args=("danger.mp3",))
        p.start()
        inp = input('Dismiss? y|n')

        if inp == 'y':
            print("yes")
            p.terminate()
            continue


if __name__ == "__main__":
    remind()

这个Python脚本实现了一个循环定时提醒系统,主要功能包括:

  1. 定时触发机制:每20分钟(1200秒)触发一次提醒
  2. 音量控制:在播放声音前将系统音量设置为6(具体取决于系统音量等级)
  3. 声音播放:使用playsound库播放指定的MP3文件(“danger.mp3”)
  4. 交互控制:播放声音后等待用户输入,输入’y’可以立即停止声音并重置计时器

代码使用了多进程技术来播放声音,这样可以在播放声音的同时接收用户输入,实现了声音播放和用户交互的并行处理。

二、技术实现要点

1. 定时机制

使用time.sleep()函数实现定时功能,程序每20分钟(1200秒)唤醒一次执行提醒操作。这种简单直接的定时方式适合这种不需要高精度定时的应用场景。

2. 声音播放

通过playsound库实现MP3文件的播放。这是一个跨平台的简单音频播放解决方案,支持多种音频格式。

3. 音量控制

使用os.popen()调用系统命令osascript来设置Mac系统的音量。这是针对MacOS系统的特定实现,在其他操作系统上需要替换为相应的音量控制命令。

4. 多进程处理

使用multiprocessing.Process创建独立进程来播放声音,这样主进程可以继续接收用户输入而不被阻塞。这是一种简单有效的实现方式,避免了声音播放阻塞主线程的问题。

三、代码改进建议

虽然这个脚本实现了基本功能,但在实际应用中还可以进行以下改进:

  1. 跨平台支持:当前代码仅适用于MacOS系统,可以添加对Windows和Linux系统的音量控制支持
  2. 配置化:将提醒间隔时间、音量大小和音频文件路径等参数提取为配置文件或命令行参数
  3. 更友好的交互:添加图形界面或更丰富的命令行交互选项
  4. 日志记录:添加日志功能记录提醒触发和用户响应情况
  5. 异常处理:增加对文件不存在、播放失败等情况的处理

四、实际应用场景

这个定时提醒工具特别适合以下场景:

  1. 工作专注提醒:每20-30分钟提醒休息,避免长时间久坐
  2. 学习间隔:采用番茄工作法时作为时间提醒工具
  3. 健康提醒:定时提醒喝水、活动身体等
  4. 客服/监控工作:定时提醒检查状态或记录日志

五、总结

这个简单的Python定时提醒工具展示了如何结合基础Python库实现实用功能。通过time模块实现定时、playsound实现声音播放、multiprocessing实现并行处理,以及系统命令调用实现音量控制,我们构建了一个完整的提醒系统。

虽然功能简单,但它体现了Python"胶水语言"的特点——将不同功能的组件组合起来解决实际问题。对于初学者来说,这也是一个很好的学习项目,涉及了定时任务、进程管理、文件操作和用户交互等多个基础编程概念。

希望这个工具能对你有所帮助,你也可以基于此进一步扩展功能,打造属于自己的个性化提醒系统。

源码获取

完整代码已开源,包含详细的注释文档:  
 [GitCode仓库] https://gitcode.com/laonong-1024/python-automation-scripts 
 [备用下载] https://pan.quark.cn/s/654cf649e5a6 提取码:f5VG

你可能感兴趣的:(Python,python,交互,开发语言)