Использование Python в EventGhost

#python

#python

Вопрос:

у меня есть скрипт для воспроизведения случайного файла wav из папки, работает хорошо, но мне нравится, чтобы он воспроизводился только с 9 утра до 5 вечера, не уверен, как это сделать, спасибо

 from os.path import isfile, join
import random

#path you want to get wav files from
path = "C:WindowsMedia"
onlyfiles = [ f for f in listdir(path) if isfile(join(path,f)) ]

onlywavfiles = []
for f in onlyfiles:
    if f[-3:] == "wav":
        onlywavfiles.append(f)

#generate random number based on number of available files
randomnum = random.randint(0,len(onlywavfiles)-1)

eg.plugins.System.PlaySound(path   "/"   onlywavfiles[randomnum], 1, False)
 

Комментарии:

1. Вместо этого используйте планировщик задач Windows для запуска вашего скрипта

2. В чем проблема с вашим кодом?

Ответ №1:

Поскольку вы не сказали, что запускает этот скрипт, мне придется догадаться.

Я думаю: Сценарий запускается событием из вашей домашней автоматизации. Возможно, кто-то звонит в звонок, или Балто просит его поесть, или рыба выпрыгивает из аквариума.

Это запускает событие и запускает скрипт. Скрипт воспроизводит случайный wav-файл из папки мультимедиа.

Но вы не хотите, чтобы музыка воспроизводилась за пределами указанного вами интервала.

Это не имеет значения, если скрипт все еще выполняется / запускается, только звук не должен воспроизводиться.

Вы могли бы просто прочитать время, извлечь час и проверить 9 <час или час> 16 и вернуться из скрипта до воспроизведения звука, если тест верен. (Я из Германии, поэтому у нас есть 24 часа времени. Я не знаю, как python возвращает часы для 12-часовых систем.)

 from os.path import isfile, join
import random
import datetime

hr = datetime.datetime.now().hour

if hr < 9 or hr > 16: 
  exit()

#path you want to get wav files from
path = "C:WindowsMedia"
onlyfiles = [ f for f in listdir(path) if isfile(join(path,f)) ]

onlywavfiles = []
for f in onlyfiles:
    if f[-3:] == "wav":
        onlywavfiles.append(f)

#generate random number based on number of available files
randomnum = random.randint(0,len(onlywavfiles)-1)

eg.plugins.System.PlaySound(path   "/"   onlywavfiles[randomnum], 1, False)