class StartEvent(object): def __init__(self): self.image = "image/image.png" self.text = "text/textfile.txt" self.running = True self.fileDealer = SetDefaults() def camera_module(self): #if(os.path.exists(self.image)): # os.remove(self.image) pass ''' Run camera module here to take the picture and save it for processing ''' def image_filters(self): pass ''' code for image filtering ''' def convert_image_to_text(self): fileOPen = open(self.text, "w") with PyTessBaseAPI() as api: api.SetImageFile(self.image) text = api.GetUTF8Text() for line in str(text): fileOPen.write(line) def convert_text_to_mp3(self): fileList = os.listdir("readdocs") numOfFiles = len(fileList) if(numOfFiles > 5): for file in fileList: os.remove("readdocs/"+file) print("Converting to mp3") text = "" file = open(self.text) for line in file: text = text+line tts = gTTS(text, lang='en', slow=False) now = datetime.datetime.now() s = str(now) s = s.replace(" ", "") self.mp3file = "readdocs/"+s+".mp3" tts.save(self.mp3file) file.close() def signal_filters(self): pass ''' code for signal filtering ''' def reader(self): print("Sending file to read") read = Reader(self.mp3file) read.go() def save_file_to_cloud(self): try: import httplib except: import http.client as httplib conn = httplib.HTTPConnection("www.google.com", timeout=5) try: conn.request("HEAD", "/") conn.close() except: print("no internet connection") conn.close() return folderid = None gauth = GoogleAuth() gauth.LocalWebserverAuth() drive = GoogleDrive(gauth) file_list = drive.ListFile({'q': "'root' in parents and trashed=false"}).GetList() for file1 in file_list: if(file1['title'] == "vira"): folderid = file1['id'] break if(folderid): print("Folder found") else: print("creating new folder") folder = "vira" newfolder_metadata = {'title' : folder, 'mimeType' : 'application/vnd.google-apps.folder'} newfolder = drive.CreateFile(newfolder_metadata) newfolder.Upload() folderid = newfolder['id'] print("Uploading file to folder") newfile = drive.CreateFile({"parents": [{"kind": "drive#fileLink", "id": folderid}], "title": self.mp3file[9:]}) newfile.SetContentFile(self.mp3file) newfile.Upload() def execute_start(self): while self.running: start = self.fileDealer.fileReader("buttons/start") if(start == "True"): self.fileDealer.fileWriter("buttons/start") self.camera_module() self.image_filters() self.convert_image_to_text() self.convert_text_to_mp3() self.signal_filters() self.reader() self.save_file_to_cloud() self.running = False self.fileDealer.fileWriter("buttons/play") print("again in start event") def go(self): print("starting") execute = mp.Process(target=self.execute_start, name="process for start button") execute.start() if execute.is_alive(): execute.join()
class Reader(object): def __init__(self, filename): self.filename = filename self.flag = False self.run = True self.reader = None self.playing = None self.nextPrev = None self.rwind = None self.volthread = None self.volume = 0.375 self.playAgainEvent = False self.running_process = [] pygame.mixer.init() pygame.mixer.music.load(self.filename) self.fileDealer = SetDefaults() def reading(self): print("Reader started") pygame.mixer.music.set_volume(self.volume) pygame.mixer.music.play() try: while self.run: if (self.playAgainEvent): self.playAgainEvent = False pygame.mixer.music.set_volume(self.volume) pygame.mixer.music.play() end = self.fileDealer.fileReader("buttons/start") if (end == "True"): self.fileDealer.fileWriter("buttons/start") self.run = False self.quit() print("Reading Exiting") except: SetDefaults() print("exception occured Reading Exiting") def play_or_stop(self): try: while self.run: stop = self.fileDealer.fileReader("buttons/stop") play = self.fileDealer.fileReader("buttons/play") if (stop == "True"): self.flag = True if (play == "True"): print("play") print("Write False to play") self.fileDealer.fileWriter("buttons/play") pygame.mixer.music.unpause() if (self.flag): if (stop == "True"): print("stop") self.flag = False print("Write False to stop") self.fileDealer.fileWriter("buttons/stop") pygame.mixer.music.pause() print("PlayorStop Exiting") except: SetDefaults() print("exception occured PlayorStop Exiting") def rewind(self): try: while self.run: rewind = self.fileDealer.fileReader("buttons/previous") if (rewind == "True"): print("rewind") self.fileDealer.fileWriter("buttons/previous") pygame.mixer.music.rewind() except: SetDefaults() print("Exiting") def volume_up_down(self): vol = 0.375 while self.run: increase = self.fileDealer.fileReader("buttons/volumeup") if (increase == "True"): self.fileDealer.fileWriter("buttons/volumeup") if (vol < 1): vol = vol + 0.125 self.volume = vol pygame.mixer.music.set_volume(vol) decrease = self.fileDealer.fileReader("buttons/volumedown") if (decrease == "True"): self.fileDealer.fileWriter("buttons/volumedown") if (vol > 0): vol = vol - 0.125 self.volume = vol pygame.mixer.music.set_volume(vol) def next_or_prev(self): self.nextOrPrevflag = 1 nextStatus = self.nextOrPrevflag prevStatus = nextStatus fileDownload = PlayEvent() numOfDriveFiles = len(fileDownload.cursor) if (numOfDriveFiles > 1): self.mp3file = self.mp3file = fileDownload.download( fileDownload.cursor[self.nextOrPrevflag]['id'], fileDownload.cursor[self.nextOrPrevflag]['title']) pygame.mixer.music.queue(self.mp3file) try: while self.run: if (nextStatus < self.nextOrPrevflag): print("flag next: " + str(self.nextOrPrevflag)) print("next stat1: " + str(nextStatus)) nextStatus = self.nextOrPrevflag prevStatus = nextStatus print("next stat2: " + str(nextStatus)) self.mp3file = fileDownload.download( fileDownload.cursor[nextStatus - 1]['id'], fileDownload.cursor[nextStatus - 1]['title']) self.playNewFile(self.mp3file) if (numOfDriveFiles > nextStatus): pygame.mixer.music.queue( fileDownload.download( fileDownload.cursor[nextStatus]['id'], fileDownload.cursor[nextStatus]['title'])) if (prevStatus > self.nextOrPrevflag): print("flag prev :" + str(self.nextOrPrevflag)) print("prev stat: " + str(prevStatus)) prevStatus = self.nextOrPrevflag nextStatus = prevStatus print("prev stat: " + str(prevStatus)) self.mp3file = fileDownload.download( fileDownload.cursor[prevStatus - 1]['id'], fileDownload.cursor[prevStatus - 1]['title']) self.playNewFile(self.mp3file) if (prevStatus > 0): pygame.mixer.music.queue( fileDownload.download( fileDownload.cursor[prevStatus]['id'], fileDownload.cursor[prevStatus]['title'])) fileList = os.listdir("buffer") numOfFiles = len(fileList) if (numOfFiles > 5): for file in fileList: os.remove("buffer/" + file) next = self.fileDealer.fileReader("buttons/next") if (next == "True" and self.nextOrPrevflag >= 1): self.fileDealer.fileWriter("buttons/next") if (self.nextOrPrevflag < numOfDriveFiles): self.nextOrPrevflag = self.nextOrPrevflag + 1 prev = self.fileDealer.fileReader("buttons/previous") if (prev == "True"): self.fileDealer.fileWriter("buttons/previous") if (self.nextOrPrevflag > 1): self.nextOrPrevflag = self.nextOrPrevflag - 1 print("Exciting nextPevious") except: SetDefaults() print("Exception occured exiting nextprevious") def quit(self): pygame.mixer.music.stop() def playNewFile(self, filename): self.filename = filename pygame.mixer.music.load(self.filename) self.playAgainEvent = True SetDefaults() def go(self): print("Ready for reading") self.reader = mp.Thread(target=self.reading, name="reading process") self.playing = mp.Thread(target=self.play_or_stop, name="process waiting for play") self.rwind = mp.Thread(target=self.rewind, name="process waiting for rewind") self.volthread = mp.Thread(target=self.volume_up_down, name="process waiting for volume") self.reader.start() self.playing.start() self.rwind.start() self.volthread.start() self.joiner([self.reader, self.playing, self.rwind, self.volthread]) print("Process for play stop rewind started") def go_for_play(self): self.reader = mp.Thread(target=self.reading, name="reading process") self.playing = mp.Thread(target=self.play_or_stop, name="process waiting for play") self.nextPrev = mp.Thread(target=self.next_or_prev, name="Process for next or previous") self.volthread = mp.Thread(target=self.volume_up_down, name="process waiting for volume") self.reader.start() self.playing.start() self.nextPrev.start() self.volthread.start() self.joiner([self.reader, self.playing, self.nextPrev, self.volthread]) print("Process for play stop nextprev started") def joiner(self, processList=[]): for proc in processList: self.running_process.append(self.playing) for proc in self.running_process: if proc.is_alive(): proc.join()