Ejemplo n.º 1
0
 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()
Ejemplo n.º 2
0
 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")
Ejemplo n.º 3
0
def process_for_sensor():
    while True:
        sensor = fileDealer.fileReader("buttons/sensor")
        if (sensor == "True"):
            fileDealer.fileWriter("buttons/sensor")
            lock.acquire(block=True)
            print("inside sensor")
            start = StartEvent()
            start.go()
            print("Done, exiting and releasing sensor lock")
            SetDefaults()
            lock.release()
Ejemplo n.º 4
0
def process_for_playOrStop():
    while True:
        play = fileDealer.fileReader("buttons/next")
        if (play == "True"):
            fileDealer.fileWriter("buttons/next")
            print("Play button is pressed, running program")
            lock.acquire(block=True)
            firstDownload = PlayEvent()
            firstFile = firstDownload.download(
                firstDownload.cursor[0]["id"],
                firstDownload.cursor[0]["title"])
            playFirst = Reader(firstFile)
            playFirst.go_for_play()
            print('Done, Exiting and releasing play lock')
            SetDefaults()
            lock.release()
Ejemplo n.º 5
0
 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")
Ejemplo n.º 6
0
    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")
Ejemplo n.º 7
0
import multiprocessing
from StartEvent import StartEvent
from Defaults import SetDefaults
from PlayEvent import PlayEvent
from Reader import Reader

fileDealer = SetDefaults()
lock = multiprocessing.Lock()


def main():
    process_running = []

    sensor_process = multiprocessing.Process(target=process_for_sensor,
                                             name='Process Waiting For Sensor')
    play_or_stop_process = multiprocessing.Process(
        target=process_for_playOrStop,
        name='Process Waiting For Play or Stop button')

    sensor_process.start()
    play_or_stop_process.start()

    process_running.append(sensor_process)
    process_running.append(play_or_stop_process)

    for proc in process_running:
        if (proc.is_alive()):
            proc.join()


def process_for_sensor():
Ejemplo n.º 8
0
 def __init__(self):
     self.image = "image/image.png"
     self.text = "text/textfile.txt"
     self.running = True
     self.fileDealer = SetDefaults()
Ejemplo n.º 9
0
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()
Ejemplo n.º 10
0
 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")
Ejemplo n.º 11
0
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()
Ejemplo n.º 12
0
 def playNewFile(self, filename):
     self.filename = filename
     pygame.mixer.music.load(self.filename)
     self.playAgainEvent = True
     SetDefaults()