Python 定时播放音乐

python定时播放音乐

#!/usr/bin/python3
# -*- coding: UTF-8 -*-
import time
import pygame
import os
import random
import logging
from apscheduler.schedulers.background import BackgroundScheduler
from apscheduler.schedulers.blocking import BlockingScheduler

def play_music(music_file):
    try:
        pygame.mixer.init()
        pygame.mixer.music.load(music_file.encode('utf-8'))
        pygame.mixer.music.play()
        pygame.mixer.music.set_volume(1)
        while True:
            if pygame.mixer.music.get_busy():
                time.sleep(1)
            else:
                print("file play over")
                return
    finally:
        pass
def play_all():
    try:
        music_list = []
        # 获取文件运行路径
        path = os.path.split(os.path.realpath(__file__))[0]
        # 获取music文件夹路径
        music_path = path + '/musics'
        # 将文件添加至播放队列
        for f in os.listdir(music_path):
            tmp_path = os.path.join(music_path, f)
            if not os.path.isdir(tmp_path):
                music_list.append(tmp_path)
        # 随机打乱队列
        random.shuffle(music_list)
        # 依次播放
        for music in music_list:
            play_music(music)
    finally:
        pass

if __name__ == "__main__":
    logging.basicConfig(level=logging.DEBUG, format='[%(asctime)s] [%(levelname)s] [%(name)s] %(message)s', datefmt='%Y/%m/%d %H:%M:%S')
    logger = logging.getLogger('%s' % 'job')
    logger.info("start!")
    while True:
        try:
            sched = BlockingScheduler()
            # 添加定时播放音乐的任务
            sched.add_job(play_all, 'cron', day_of_week='*', hour='23', minute="47", second="0")
            sched.start()
        finally:
            pass
    logger.info("end!")