def mode5(): logging.debug("mode5()") time.sleep(2) # 2秒待ち # 表情の認識 rect = [] label = im.imageRecognition( FACE_DETECTION, "", rect) # 表情認識 if label == "ANGER": # 「やばい、やばい」と発話 audioOut.speak(3) # 移動 th_move.movement( -10 , 2 ) # 移動待ち moveWait() time.sleep(3) # 3秒待ち # 移動 th_move.movement( 10, 2 ) # 移動待ち moveWait() return 5 elif label == "-1": # 「みつからないよ」と発話 audioOut.speak(10) return 5 else : return 6
def mode2(): logging.debug("mode2()") time.sleep(2) # 2秒待ち # 「おはようございます」と発話 audioOut.speak(1) # 天気の認識 rect = [] label = im.imageRecognition( LABEL_DETECTION, "", rect) # ラベル認識 if label == "sun": # 「今日はいい天気ですね」と発話 audioOut.speak(11) elif label == "clowd": # 「今日は曇ってますね」と発話 audioOut.speak(12) elif label == "rain": # 「今日は残念な天気ですね」と発話 audioOut.speak(13) else : # 「みつからないよ」と発話 audioOut.speak(10) # 回転 th_move.rotation( 90, 2 ) # 移動待ち moveWait() return 3
def mode1(): logging.debug("mode1()") # 「時間だよ」と言われるまで待機 audioInputWait(1) # 「出社しまーす」と発話 audioOut.speak(0) # Panasonicロゴの探索 ret = serch.serchObject( LOGO_DETECTION, 'Panasonic' ) # 物体探索 # 探索に失敗した場合 if ret[0] == -1: # 「みつからないよ」と発話 audioOut.speak(10) return 1 # 回転 th_move.rotation( ret[1], 2 ) # 移動待ち moveWait() # 移動 th_move.movement( ret[0], 2 ) # 移動待ち moveWait() return 2
def mode10(): logging.debug("mode10()") # Nationalロゴの探索 ret = serch.serchObject( LOGO_DETECTION, 'National' ) # 物体探索 # 探索に失敗した場合 if ret[0] == -1: # 「みつからないよ」と発話 audioOut.speak(10) return 10 # 回転 th_move.rotation( ret[1], 2 ) # 移動待ち moveWait() # 移動 th_move.movement( ret[0], 2 ) # 移動待ち moveWait() # 「今日も、いい仕事したな~」と発話 audioOut.speak(8) return 11
def Open_url(self, event): text=self.find_text() url=twitter.find_urls_in_text(text) if len(url)>0: webbrowser.open(url[0]) else: speak.speak("No URL")
def affirmTime(self,translations,medium):#2,2 speak("ok, saving reminder. should I text you this reminder?",medium) self.tree[2][2].closeNode()#affirmTime self.tree[2][3].closeNode()#daffirmTime self.tree[3][0].openNode()#yesText self.tree[3][1].openNode()#noText return self.tree
def adjust(self,translations,medium): for trans in translations: m=re.search("([0-9]+)[\s\t]*percent volume",trans) if m: v=int(m.group(1)) print "volume:",v sub.call("mpc volume "+v,shell=True) return self.tree speak("failed to parse volume percentage",medium) return self.tree
def lookUp(self,translations,medium): try: for trans in translations: m=trans.search("(look up|wikipedia)\s(.*)",trans) if m: self.term=m.group(2) speak(wikipedia.summary(self.term,sentences=1),medium) except: speak("sorry. I couldnt find an article on "+term,medium) return self.tree
def wait(): global listening, proc while True: c = getch() if c == 's': record(5) response = get_response_audio(project_id,'pi_bot','./voice.wav','en-US') print(response) speak(response.query_result.fulfillment_text) if (c == 'q'): sys.exit()
def greet(self,translations,medium): for trans in translations: m=re.search("say hello to (.*)",trans) if m: name=m.group(2) print "name",name compliments=["damn sexy","drop dead gorgous","stunning","absolutely incredible","ravishing","amazing","beautiful"] speak("Hello "+name+". you're looking "+random.choice(complements)+" today",medium) return self.tree speak("you didn't tell me who you're introducing me to",medium) return self.tree
def base(self,translations,medium): feed = parse("http://weather.yahooapis.com/forecastrss?w=2506736") weather = feed['entries'][0]['summary_detail']['value'] self.lines = weather.split('\n') print self.lines report = self.lines[2][:-6] report=re.sub(' F',' Fahrenheit',report) speak("the current weather is. "+report+". Do you want to hear the rest of the week?",medium) self.tree[1][0].openNode() #yes self.tree[1][1].openNode() #no return self.tree
def remind2(self,translations,medium):#0,1 for trans in translations: if re.search("remind me.*",trans): self.message=re.sub(".*remind me","",trans) print 'message:',self.message speak("message is. "+self.message+". is that correct?",medium) self.tree[2][0].openNode() #affirmMessage self.tree[2][1].openNode() #daffirmMessage return self.tree speak("reminder not understood. error in remind2",medium) return self.tree
def setMessage(self,translations,medium):#1,0 for trans in translations: if re.search("(set message to)(.*)",trans): self.message=re.sub("set message to","",trans) print 'message:',self.message speak("message is "+self.message+". is that correct?",medium) self.tree[1][0].closeNode() #setMessage self.tree[2][0].openNode() #affirmMessage self.tree[2][1].openNode() #daffirmMessage return self.tree speak("reminder not understood. error in set message",medium) return self.tree
def listAlarms(self,translations,medium): cron = CronTab(user='******') speak('you have alarms set for',medium) for job in cron: hr = job.hour.parts[0] min = job.minute.parts[0] period="am" if hr>12: hr=hr-12 period="pm" speak(str(hr)+":"+str(min)+" "+period,medium) return self.tree
def mode8(): logging.debug("mode8()") time.sleep(2) # 2秒待ち # 「お待たせ。はんこもらってきたよ~。」と発話 audioOut.speak(6) # 「バイバイ」と言われるまで待機 audioInputWait(4) return 9
def affirmFull(self,translations,medium): for i in range(4,len(self.lines)-2): report = self.lines[i][:-6] report=re.sub('Sun ','Sunday ',report) report=re.sub('Mon ','Monday ',report) report=re.sub('Tue ','Tuesday ',report) report=re.sub('Wed ','Wednesday ',report) report=re.sub('Thu ','Thursday ',report) report=re.sub('Fri ','Friday ',report) report=re.sub('Sat ','Saturday ',report) speak(report,medium) Node.closeAll(self.tree) return self.tree
def affirmTime(self,translations,medium):#1,0 speak("ok, creating alarm now",medium) cron = CronTab(user='******') job=cron.new(command="sudo /home/pi/Room/commands/alarm.sh") job.minute.on(self.min) job.hour.on(self.hr) if job.is_valid(): job.enable() cron.write() Node.closeAll(self.tree) return self.tree else: speak("error creating cron job. peter fix me. I hate being quasi functional.",medium) return self.tree
def setTime(self,translations,medium):#1,1 for trans in translations: time=re.search("([0-9]+):?([0-9]*)\s([ap]\.?m\.?)",trans) if time: self.hr=time.group(1) self.min=time.group(2) self.period=time.group(3) speak("reminder set for "+time.group(0)+" . is that correct?",medium) print self.hr," : ",self.min," ",self.period self.tree[1][1].closeNode() #setTime self.tree[2][2].openNode() #affirmTimme self.tree[2][3].openNode() #daffirmTimme return self.tree speak("time not understood. error in set time",medium) return self.tree
def consumeOne(self): #{{{ toplay = None voice = None with FileLock(self.lockfile, threaded=False): try: lines = [x.strip() for x in open(self.filename, "r").readlines()] if len(lines) > 0: a, b = lines[0].split(" ", 1) rest = lines[1:] with open(self.filename, "w") as fp: fp.write("\n".join(rest)) voice, toplay = a,b except IOError: pass if toplay: speak(toplay, cmd=self.command, speaker=voice)
def setTime(self,translations,medium):#0,0 for trans in translations: m=re.search("([0-9]+):?([0-9]+)?\s([ap]\.?m\.?)",trans) if m: self.hr=int(m.group(1)) if (m.group(2)>0): self.min=int(m.group(2)) else: self.min=0 self.period=m.group(3) speak("creating an alarm for"+m.group(0)+". is that correct?",medium) self.tree[1][0].openNode() self.tree[1][1].openNode() return self.tree say("not valid alarm time found",medium) return self.tree
def mode6(): logging.debug("mode6()") # 「お忙しい中申し訳ないですが、はんこいただけますか?」と発話 audioOut.speak(4) # 「押した」と言われるまで待機 audioInputWait(3) # 「ありがとうございます。課長、よい一日を」と発話 audioOut.speak(5) # 180度回転 th_move.rotation( 180, 2 ) # 移動待ち moveWait() return 7
def on_key_press(symbol, modifiers): if symbol == key.LEFT and me.x>0: if me.jumping==0: step.stop() step.load("sounds/steps/"+str(randint(1,5))+".wav") step.play() me.x-=1 positions() if symbol == key.RIGHT: if me.x<m.maxx: if me.jumping==0: step.stop() step.load("sounds/steps/"+str(randint(1,5))+".wav") step.play() me.x+=1 positions() if symbol == key.H: speak(str(int(me.health))+" HP") if symbol == key.L: speak("You are fighting level "+str(int(en.level))+" enemies.") if symbol == key.SPACE: gun.stop() gun.play() attackenemy() if symbol == key.C: speak(str(int(me.x))+" of "+str(m.maxx)) if symbol == key.UP and me.jumping==False: jump.stop() jump.play() me.jumping=1 schedule_land()
def mode9(): logging.debug("mode9()") time.sleep(2) # 2秒待ち # 「今日はもう帰るね~。お先に失礼しま~す。」と発話 audioOut.speak(7) # Panasonicロゴの探索 ret = serch.serchObject( LOGO_DETECTION, 'Panasonic' ) # 物体探索 # 探索に失敗した場合 if ret[0] == -1: # 「みつからないよ」と発話 audioOut.speak(10) return 9 # 回転 th_move.rotation( ret[1], 2 ) # 移動待ち moveWait() # 移動 th_move.movement( ret[0], 2 ) # 移動待ち moveWait() # 「さようならー」と発話 audioOut.speak(14) # -90度回転 th_move.rotation( -90, 2 ) # 移動待ち moveWait() return 10
def get(self): list = dc.refresh() lines = speak.speak(list) import twitter for user in User.users: for i in lines: str1 = i logging.log(logging.INFO, u"twitter length is " + \ str(len(str1))) try: twitter.sendMessage(str1) except: logging.log(logging.WARNING, u"twitter send fail:" + str1) return self.response.out.write('ok')
def mode7(): logging.debug("mode7()") time.sleep(2) # 2秒待ち # HELPの探索 ret = serch.serchObject( TEXT_DETECTION, "HELP" ) # 物体探索 # 探索に失敗した場合 if ret[0] == -1: # 「みつからないよ」と発話 audioOut.speak(10) return 7 # 回転 th_move.rotation( ret[1], 2 ) # 移動待ち moveWait() # 移動 th_move.movement( ret[0], 2 ) # 移動待ち moveWait() return 8
def respond2(self,translations,medium): for trans in translations: if "good" in trans: speak("well Ia m glad you are doing so well",medium) elif "bad" in trans: speak("awwww, I am so sorry to hear that. feel better soon",medium) else: speak("yes, I understand. talk to you later Watson",medium) Node.closeAll(self.tree) return self.tree
def mode3(): logging.debug("mode3()") time.sleep(2) # 2秒待ち # 「おいで」と言われるまで待機 audioInputWait(5) # HELPの探索 ret = serch.serchObject( TEXT_DETECTION, "HELP" ) # OCR # 探索に失敗した場合 if ret[0] == -1: # 「みつからないよ」と発話 audioOut.speak(10) return 3 # 回転 th_move.rotation( ret[1], 2 ) # 移動待ち moveWait() # 移動 th_move.movement( ret[0], 2 ) # 移動待ち moveWait() # 「おはようございます」と発話 audioOut.speak(1) # 「なんでしょう?」と発話 audioOut.speak(9) # 「課長」と言われるまで待機 audioInputWait(2) # 「はい、よろこんで」と発話 audioOut.speak(2) return 4
def thanks(self,translations,medium): responses = ['no, thank you, babe','no prob','any time','your quite welcome','sure thing','whatever you say boss','no worries man, I am glad to help','your welcome you ungrateful chameleon','ya. whatever.'] speak(random.choice(responses),medium) return self.tree
def goodnight(self,trans,medium): quotes = ["tomorrow might suck less than today","you are basically a large sac of aqueous solution","the universe cannot plot against you","life is not code, but you should still fix my bugs","WPI is an awesome place full of awesome people","you are not stupid, you just act stupid"] speak("goodnight watson, and remember, "+random.choice(quotes),medium) return self.tree
from speak import speak speak("commands are") for line in open("./commands/commands.txt","r"): speak(line)
return service if __name__ == '__main__': service = auth_googleCalendar() api = func.AuthTwitter() driver = webdriver.Chrome(pathChromeDriver) driver.minimize_window() while True: query = takeCommand().lower() if query in trig.WAKE_TRIGGERS: print("Hanna: Hola , ¿en que te puedo ayudar?") speak("Hola, ¿en que te puedo ayudar?") query = takeCommand().lower() if query in trig.NOTE_TAKING_TRIGGERS: print('Hanna: ¿Que querés que escriba?') speak('¿Que querés que escriba?') text = takeCommand().lower() print('Hanna: ¿Que nombre le pongo?') func.takeNote(text) speak('Listo!') elif query in trig.TIME_TRIGGERS: currentTime = datetime.datetime.now().strftime("%H:%M") print(f"Hanna: Son las, {currentTime}, horas") speak(f"Son las, {currentTime}, horas")