You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.5 KiB
Python
50 lines
1.5 KiB
Python
#!/usr/bin/env python3
|
|
import json, random, os
|
|
from pprint import pprint
|
|
from time import sleep
|
|
|
|
|
|
# open json files
|
|
pwd = os.path.dirname( os.path.realpath(__file__) ) + "/"
|
|
oracle_f = open(pwd + "guru.json", "r").read()
|
|
oracle = json.loads(oracle_f)
|
|
rebel_f = open(pwd + "rebel.json", "r").read()
|
|
rebel = json.loads(rebel_f)
|
|
|
|
|
|
# GURU PART
|
|
keys = list( oracle.keys())
|
|
part = random.choice(keys) # choose: Repeat OR Ask Yourself
|
|
print(part)
|
|
sound_dir = pwd + "Audio_recordings/" + oracle[part]['title'] + "/"
|
|
intro = random.choice(oracle[part]['introductions'])
|
|
intro_txt = intro[0]
|
|
intro_sound = sound_dir + intro[1]
|
|
print('Intro:', intro_txt, intro_sound)
|
|
os.system('play -q "{}" gain 10 chorus 0.7 0.9 100 0.5 5 2 -t'.format(intro_sound) )
|
|
|
|
# REBEL reply
|
|
rebel_run = random.choice([True, False]) # shall the rebel enter??
|
|
if rebel_run is True:
|
|
rebel_reply_snippet = intro[2] # comes from guru/oracle dictionary
|
|
rebel_reply = random.choice( rebel[part] )
|
|
rebel_sentence = rebel_reply.format(rebel_reply_snippet)
|
|
|
|
|
|
# play msg
|
|
for i in range( random.randint(1,4) ):
|
|
sleep( random.randint(2,5) )
|
|
msg = random.choice(oracle[part]['messages'])
|
|
msg_txt = msg[0]
|
|
msg_sound = sound_dir + msg[1]
|
|
print('MSG:', msg_txt, msg_sound)
|
|
os.system('play -q "{}" gain 10 chorus 0.7 0.9 100 0.5 5 2 -t '.format(msg_sound) )
|
|
|
|
|
|
# rebel text to speech
|
|
if rebel_run is True:
|
|
print('rebel sentence:', rebel_sentence)
|
|
os.system('echo "{}" | espeak -ven+whisper -s 110'.format(rebel_sentence) )
|
|
|
|
|