def suma(nombre):

        sonido=Play(1024)
        Datos=sonido.open(nombre)
        sonido.start(Datos[0],Datos[1],Datos[2])
        sonido.play(Datos[3])
        sonido.closed()
class Gui(QtGui.QMainWindow,QtGui.QWidget):

	def __init__(self):
		super(Gui, self).__init__()
		self.speaker = ""
		self.directory = ""
		self.type = ""
		self.line=0
		self.text=[]
		self.decode=""
		self.fname="output"
		self.rec=0
		self.initUI()
		self.file = ""

	def initUI(self):
		self.setWindowIcon(QtGui.QIcon('logo.png'))
		self.vr = VoiceRec()
		self.pl = Play()
		self.vrThread = QThread()
		self.plThread = QThread()
		self.vr.moveToThread(self.vrThread)
		self.pl.moveToThread(self.plThread)

		self.figure = plt.figure(1)
		self.canvas = FigureCanvas(self.figure)
		self.toolbar = NavigationToolbar(self.canvas, self)
		self.centralwidget = QtGui.QWidget(self)
		self.verticalLayout = QtGui.QVBoxLayout(self.centralwidget)
		self.verticalLayout.addWidget(self.toolbar)
		self.verticalLayout.addWidget(self.canvas)
		self.centralwidget.setGeometry(10,10,825,330)

		openFile = QtGui.QAction(QtGui.QIcon('open.png'), '&Open', self)
		openFile.setShortcut('Ctrl+O')
		openFile.setStatusTip('Open new File')
		openFile.triggered.connect(self.showDialogOpen)

		chUser = QtGui.QAction('&Change Speaker', self)
		chUser.setStatusTip('Change Speaker')
		chUser.triggered.connect(self.changeUser)

		exitAction = QtGui.QAction(QtGui.QIcon('exit.png'), '&Exit', self)
		exitAction.setShortcut('Ctrl+Q')
		exitAction.setStatusTip('Exit application')
		exitAction.triggered.connect(self.closeEvent)

		utf_8 = QtGui.QAction('&UTF-8', self)
		utf_8.setStatusTip('utf-8')
		utf_8.triggered.connect(self.encodeUTF8)

		utf_16 = QtGui.QAction('&UTF-16', self)
		utf_16.setStatusTip('utf-16')
		utf_16.triggered.connect(self.encodeUTF16)

		Ascii = QtGui.QAction('&ASCII', self)
		Ascii.setStatusTip('ascii')
		Ascii.triggered.connect(self.encodeASCII)

		about = QtGui.QAction('&About', self)
		about.setStatusTip('More About Voice Recorder')
		about.triggered.connect(self.showAbout)

		self.textEdit = QtGui.QTextEdit(self)
		self.textEdit.setGeometry(10,360,825,104)
		self.textEdit.setStyleSheet("QTextEdit {font-size: 14pt}")
		self.textEdit.setText("Please Open a File...")
		self.textEdit.setReadOnly(True)

		self.Open = QtGui.QPushButton('Open', self)
		self.Open.move(10,480)
		self.Open.clicked.connect(self.showDialogOpen)

		self.Record = QtGui.QPushButton('Record', self)
		self.Record.move(155,480)
		self.Record.setEnabled(False)
		self.Record.clicked.connect(self.record)

		self.Stop = QtGui.QPushButton('Stop', self)
		self.Stop.move(300,480)
		self.Stop.setEnabled(False)
		self.Stop.clicked.connect(self.stop)

		self.Play = QtGui.QPushButton('Play', self)
		self.Play.move(445,480)
		self.Play.setEnabled(False)
		self.Play.clicked.connect(self.play)

		self.Back = QtGui.QPushButton('Back', self)
		self.Back.move(590,480)
		self.Back.setEnabled(False)
		self.Back.clicked.connect(self.showBack)

		self.Next = QtGui.QPushButton('Next', self)
		self.Next.move(735,480)
		self.Next.setEnabled(False)
		self.Next.clicked.connect(self.showNext)

		menubar = self.menuBar()
		fileMenu = menubar.addMenu('&File')
		fileMenu.addAction(openFile)
		fileMenu.addAction(chUser)
		fileMenu.addAction(exitAction)
		encodeMenu = menubar.addMenu('&Encoding')
		encodeMenu.addAction(Ascii)
		encodeMenu.addAction(utf_8)
		encodeMenu.addAction(utf_16)
		helpMenu = menubar.addMenu('&Help')
		helpMenu.addAction(about)

		self.setGeometry(200,200, 845, 550)
		self.setFixedSize(845 , 550)
		self.setWindowTitle('Akshar Voice Recorder')
		self.user = User(self)

	def showDialogOpen(self):
		plt.clf()
		self.canvas.draw()
		self.statusBar().showMessage('Open a File')
		self.fname = QtGui.QFileDialog.getOpenFileName(self, 'Open file')
		if(self.fname!=""):
			self.Record.setEnabled(True)
			self.Play.setEnabled(True)
			self.Next.setEnabled(True)
			self.Back.setEnabled(True)
			self.directory=str(self.file)+"/"+str(self.speaker)+"_"+str(self.type)+"_"+str(self.fname).split("/")[-1]
			if not os.path.exists(self.directory):
				os.makedirs(self.directory)
			del self.text[:]
			f = open(self.fname, 'r')
			for lines in f:
				self.text.append(lines)
			f.close
			if(self.decode!=""):
				self.textEdit.setText(self.text[self.line].decode(self.decode))
			else:
				self.textEdit.setText(self.text[self.line].decode('ascii'))
			self.line=0
		else:
			self.Record.setEnabled(False)
			self.Play.setEnabled(False)
			self.Next.setEnabled(False)
			self.Back.setEnabled(False)
		self.statusBar().showMessage('')

	def showNext(self):
		plt.clf()
		self.canvas.draw()
		self.line+=1
		if(len(self.text)>self.line):
			if(self.decode!=""):
				self.textEdit.setText(self.text[self.line].decode(self.decode))
			else:
				self.textEdit.setText(self.text[self.line].decode('utf-8'))
		else:
			self.showDialogOpen()

	def showBack(self):
		plt.clf()
		self.canvas.draw()
		self.line-=1
		if(len(self.text)>=self.line and self.line>=0):
			if(self.decode!=""):
				self.textEdit.setText(self.text[self.line].decode(self.decode))
			else:
				self.textEdit.setText(self.text[self.line].decode('utf-8'))
		else:
			self.showDialogOpen()

	def showAbout(self):
		self.popup1=About()
		self.popup1.exec_()

	def encodeUTF8(self):
		self.decode="utf-8"

	def encodeUTF16(self):
		self.decode="utf-16"

	def encodeASCII(self):
		self.decode="ascii"

	def changeUser(self):
		self.user.__init__(self)

	def record(self):
		plt.clf()
		self.canvas.draw()
		self.statusBar().showMessage('Recording')
		self.rec=1
		self.Record.setEnabled(False)
		self.Stop.setEnabled(True)
		self.Open.setEnabled(False)
		self.Play.setEnabled(False)
		self.Next.setEnabled(False)
		self.Back.setEnabled(False)
		self.vrThread.start()
		self.vr.record(self.directory, self.text[self.line].split(")")[0], self)

	def stop(self):
		self.statusBar().showMessage('')
		if self.rec == 1:
			self.vr.stop()
			self.vrThread.exit()
			self.vrThread.wait()
			self.vrThread.quit()
		elif self.rec == 2:
			self.pl.stop()
			self.plThread.exit()
			self.plThread.wait()
			self.plThread.quit()
		self.Record.setEnabled(True)
		self.Open.setEnabled(True)
		self.Play.setEnabled(True)
		self.Next.setEnabled(True)
		self.Back.setEnabled(True)
		self.rec=0

	def play(self):
		self.statusBar().showMessage('Playing')
		self.rec=2
		self.Record.setEnabled(False)
		self.Stop.setEnabled(True)
		self.Open.setEnabled(False)
		self.Play.setEnabled(False)
		self.Next.setEnabled(False)
		self.Back.setEnabled(False)
		self.plThread.start()
		self.pl.play(self.text[self.line].split(")")[0], self)
Example #3
0
class Api:

    api_name = ""
    html_root = ""
    path = ""
    query = ""
    basePath = ""

    current_dir = None
    response = None
    player = None

    player_cfg = None
    playlist = None

    screensaver = False
    screensaver_file = ""
    enable_screensaver = False

    video_types = ["mp4", "mpeg", "mov"]
    pl_types = ["playlist"]

    # create an api/html object
    #    options{"url": calling http_url, "api_name": page name for api calls, "html_root": root path for html pages}
    def __init__(self, options):

        self.player_cfg = ConfigParser.ConfigParser()
        self.player_cfg.read('config/player.cfg')

        print self.player_cfg

        # check for player settings in the configuration file
        if not self.player_cfg.has_section("player"):
            print("no player configuration found")
            sys.exit()

        # check for player settings in the configuration file
        if not self.player_cfg.has_section("screens"):
            print("no screen configuration found")
            sys.exit()

        self.screensaver_file = self.player_cfg.get("player", "screensaver")
        self.enable_screensaver = self.player_cfg.getboolean(
            "player", "enable_screensaver")

        # load play list
        self.playlist = Playlist()
        #        self.playlist.name(options["playlist"])
        #        self.playlist.load()

        # init variables
        self.basePath = os.path.dirname("..")

        self.api_name = options["api_name"]
        self.html_root = options["html_root"]
        self.current_dir = options["base_dir"]

        # create response object
        self.response = Response()

    # ==========================================================
    # write player configuration file
    def writeplayer(self):

        with open('config/player.cfg', 'wb') as configfile:
            print("write config")
            self.player_cfg.write(configfile)

    # ==========================================================
    # call api or html pages, depending on the page path
    def get(self, url):

        self.__create_query(url)

        # redirect to api interface
        if self.path == self.api_name:
            return self.api()

        # redirect to html pages
        else:
            return self.html()

    # ==========================================================
    # call api or html pages, depending on the page path
    def post(self, url):

        self.__create_query(url)

        # redirect to api interface
        if self.path == self.api_name:
            return self.api()

        # redirect to html pages
        else:
            return self.html()

    # ==========================================================
    # check for valid video formats
    def file_type(self, file, types):

        if os.path.splitext(file)[1][1:] in types:
            return True

        return False

    # ==========================================================
    # get video file information from config file
    def read_info(self, file):

        response = Response()
        audio = Response()
        video = Response()

        response.set("file", file)

        # add video file cfg data
        filename = os.path.splitext(file)[0]

        if os.path.isfile(filename + ".cfg"):

            self.info = ConfigParser.ConfigParser()
            self.info.read(filename + ".cfg")

            # collect video data
            for info in self.info.items("video"):
                video.set(info[0], info[1])

            # collect audio data
            for info in self.info.items("audio"):
                audio.set(info[0], info[1])

            response.set("audio", audio)
            response.set("video", video)

        return response

    def get_files(self, types):

        files = [
            f for f in listdir(self.current_dir)
            if (isfile(join(self.current_dir, f))
                and self.file_type(f, types) == True and not f.startswith("."))
        ]
        return sorted(files)

    def get_dirs(self):

        dirs = [
            f for f in listdir(self.current_dir)
            if (isdir(join(self.current_dir, f)) and not f.startswith("."))
        ]
        return sorted(dirs)

    # ==========================================================
    # ==========================================================
    # playback control

    # start playback of file
    def play(self, filename):

        # stop existing player
        self.stop()

        # create new player
        self.player = Play(filename, self.player_cfg)
        self.player.play()

        self.response.set("file", filename)

    # stop playback
    def stop(self):

        self.screensaver = False

        if isinstance(self.player, Play):

            self.player.quit()
            self.player = None

            # call autoplay on stopping
#            self.autoplay()

# autoplay screen saver or next playlist entry

    def autoplay(self):

        # check for screen saver file
        if not os.path.isfile(self.screensaver_file):
            self.screensaver_file = ""
            self.enable_screensaver = False

        # start screen saver if enabled
        if self.screensaver_file and self.enable_screensaver != False:
            self.play(self.screensaver_file)
            self.screensaver = True

    # ==========================================================
    # ==========================================================
    # call api interface
    def api(self):

        # ==============================
        # reset response
        self.response.reset()

        # ==============================
        # get file parameter
        if self.query.get("file"):
            filepath = os.path.join(self.current_dir,
                                    self.query.get("file")[0])
        else:
            filepath = ""

        # ====================================================
        # COMMANDS
        #
        # filesystem
        #   list:       list current directory
        #   cd:         change directory
        #   up:         move current directory up
        #
        # player/video
        #   status:     get player status
        #   fileinfo:   get video config file informations
        #   writeinfo:  write information to video config file
        #   play:       start playback of file
        #
        # playlist
        #   playlist:   get playlist
        #
        #
        # commands with active player
        #
        #   stop:       stop playback
        #   pause:      pause playback
        #   position:   get playback position
        # ====================================================

        # ==============================
        # cmd found
        if self.query.get("cmd"):

            # ==============================
            # status and command
            # ==============================
            cmd = self.query.get("cmd")[0]
            self.response.set("cmd", cmd)

            # add status to response
            if isinstance(self.player, Play):
                # stop on status stop
                if self.player.status() == "stop":
                    self.stop()

                else:
                    self.response.set("status", str(self.player.status()))

            else:
                self.response.set("status", "stop")

            # ==============================
            # list directory
            # ==============================
            if cmd == "list":

                self.response.set("dirinfo", self.read_file_info())

            # ==============================
            # change directory
            #   param: file
            # ==============================
            if cmd == "cd":

                new_dir = self.current_dir

                if not self.current_dir.endswith("/"):
                    new_dir = new_dir + "/"

                self.current_dir = new_dir + self.query.get("file")[0] + "/"

                self.response.set("dirinfo", self.read_file_info())

            # ==============================
            # go directory up
            # ==============================
            if cmd == "up":

                new_dir = self.current_dir

                if self.current_dir.endswith("/"):
                    new_dir = self.current_dir[:-1]

                self.current_dir = '/'.join(new_dir.split("/")[:-1]) + '/'

                self.response.set("dirinfo", self.read_file_info())

            # ==============================
            # get file informations file data
            # ==============================
            if cmd == "fileinfo":
                self.response.set("fileinfo", self.read_info(filepath))

            # ==============================
            # write
            #   param: file, video/audio parameters
            # ==============================
            if cmd == "writeinfo":

                filename = os.path.splitext(filepath)[0] + ".cfg"

                video_info = ConfigParser.ConfigParser()

                video_info.add_section("video")
                video_info.add_section("audio")

                for val in self.query:
                    keyval = val.split("_")

                    if len(keyval) > 1:
                        video_info.set(keyval[0], keyval[1],
                                       self.query.get(val)[0])

                self.info = video_info

                with open(filename, "wb") as configfile:
                    video_info.write(configfile)

                self.response = self.read_info(filepath)

            # ==============================
            # set/enable/disable screen saver auto play
            # ==============================
            if cmd == "set_screensaver":

                self.player_cfg.set("player", "screensaver", filepath)
                self.player_cfg.set("player", "enable_screensaver", False)

                self.screensaver_file = filepath
                self.enable_screensaver = False
                self.writeplayer()

            if cmd == "enable_screensaver":

                self.player_cfg.set("player", "enable_screensaver", True)

                self.enable_screensaver = True
                self.writeplayer()

            if cmd == "disable_screensaver":

                self.player_cfg.set("player", "enable_screensaver", False)

                self.enable_screensaver = False
                self.writeplayer()

            scr = Response()

            # add screensaver info
            scr.set("enable_screensaver", self.enable_screensaver)
            scr.set("screensaver", self.screensaver)
            scr.set("screensaver_file", self.screensaver_file)

            self.response.set("screensaver", scr)

            # ==============================
            # get playlist
            #   param: none -> return playlist
            #   param: file -> load new playlist
            # ==============================
            if cmd == "playlist":

                # if filepath: load new playlist
                if filepath:
                    self.playlist.name(filepath)
                    self.playlist.load()

                self.response = self.playlist.list()

            # ==============================
            # add to active playlist
            #   param: file -> video filename
            #   param: pos -> position in the playlist
            #          if no position, append to end
            # ==============================
            if cmd == "addtoplaylist":

                if filepath:

                    # add at position
                    if self.query.get("pos"):
                        self.response = self.playlist.add(
                            filepath,
                            self.query.get("pos")[0])

                    # append
                    else:
                        self.response = self.playlist.add(filepath)

            # ==============================
            # removefromplaylist
            #   param: pos -> position of file
            #       to in the playlist to be removed
            # ==============================
            if cmd == "removefromplaylist":

                self.response = self.playlist.remove(self.query.get("pos")[0])

            # ====================================================
            # ====================================================
            # start playback
            # ====================================================
            # ====================================================
            if os.path.isfile(filepath):

                # start playback if file exists
                if cmd == "play":
                    self.play(filepath)

            # ====================================================
            # commands to active player
            # ====================================================

            # player is active
            if isinstance(self.player, Play):

                # add playing filename
                self.response.set("file", self.player.get_file_name())
                self.response.set("position", self.player.position())
                self.response.set("length", self.player.length())
                self.response.set("time", self.player.time())
                self.response.set("volume", self.player.get_volume())

                # ==============================
                # toggle pause/play
                # ==============================
                if cmd == "pause":
                    self.player.pause()

                # ==============================
                # stop playback
                # ==============================
                if cmd == "stop":
                    self.stop()

                # ==============================
                # seek position
                # ==============================
                if cmd == "seek":
                    self.player.seek(self.query.get("position")[0])

                # ==============================
                # set volume
                # ==============================
                if cmd == "volume":
                    self.player.volume(self.query.get("volume")[0])

            # no active player
            else:
                self.response.set("warning", "no player")
                self.response.set("position", 0)
                self.player = None

                self.autoplay()
        """Respond to a GET request."""

        return ({
            "code": 200,
            "content-type": "application/json",
            "response": self.response.render()
        })

    # ==========================================================
    # ==========================================================
    # call html pages
    def html(self):

        # no path, try index.html
        if self.path == "":
            self.path = "index.html"

        # add http base to path
        http_path = os.path.join(self.basePath, self.html_root)

        # get content type
        ctype = self.guess_type(self.path)

        # look for file and render
        if os.path.isfile(os.path.join(http_path, self.path)):
            """Return page"""

            # copy html file to output
            html = open(os.path.join(http_path, self.path), "rb")
            response = html.read()
            html.close()

            return ({"code": 200, "content-type": ctype, "response": response})

        # no page found -> 404
        else:
            """Return 404 page"""

            # copy html file to output
            html = open(os.path.join(self.basePath, http_path, "404.html"),
                        "rb")
            response = html.read()
            html.close()

            return ({
                "code": 404,
                "content-type": "text/html",
                "response": response
            })

    def __create_query(self, url):

        # remove leading /
        if url.startswith("/"):
            url = url[1:]

        self.query = {}
        self.path = url.split("?")

        # has self.query -> parse self.query
        if len(self.path) > 1:
            self.query = urlparse.parse_qs(self.path[1])

        # get path
        self.path = self.path[0]

    def read_file_info(self):

        dirinfo = Response()

        dirinfo.set("dir", self.current_dir)
        dirinfo.set("dirs", self.get_dirs())
        dirinfo.set("files", self.get_files(self.video_types))
        # dirinfo.set("playlist", self.playlist.list())
        dirinfo.set("pl_files", self.get_files(self.pl_types))

        return dirinfo

    def guess_type(self, path):
        """Guess the type of a file.

        Argument is a PATH (a filename).

        Return value is a string of the form type/subtype,
        usable for a MIME Content-type header.

        The default implementation looks the file's extension
        up in the table self.extensions_map, using application/octet-stream
        as a default; however it would be permissible (if
        slow) to look inside the data to make a better guess.
        """

        base, ext = posixpath.splitext(path)

        if ext in self.extensions_map:
            return self.extensions_map[ext]

        ext = ext.lower()

        if ext in self.extensions_map:
            return self.extensions_map[ext]

        else:
            return self.extensions_map['']

    if not mimetypes.inited:
        mimetypes.init()
        # try to read system mime.types

    extensions_map = mimetypes.types_map.copy()

    extensions_map.update({
        '': 'application/octet-stream',
        # Default
        '.py': 'text/plain',
        '.c': 'text/plain',
        '.h': 'text/plain',
    })
class Gui(QtGui.QMainWindow,QtGui.QWidget):

	def __init__(self):
		super(Gui, self).__init__()
		self.initUI()
		self.line=0
		self.text=[]
		self.decode=""
		self.fname="output"
		self.rec=0

	def initUI(self):
		self.setWindowIcon(QtGui.QIcon('logo.png'))
		self.vr = VoiceRec()
		self.pl = Play()
		self.spectro()
		self.vrThread = QThread()
		self.plThread = QThread()
		self.vr.moveToThread(self.vrThread)
		self.pl.moveToThread(self.plThread)

		openFile = QtGui.QAction(QtGui.QIcon('open.png'), '&Open', self)
		openFile.setShortcut('Ctrl+O')
		openFile.setStatusTip('Open new File')
		openFile.triggered.connect(self.showDialogOpen)

		exitAction = QtGui.QAction(QtGui.QIcon('exit.png'), '&Exit', self)
		exitAction.setShortcut('Ctrl+Q')
		exitAction.setStatusTip('Exit application')
		exitAction.triggered.connect(self.closeEvent)

		utf_8 = QtGui.QAction('&UTF-8', self)
		utf_8.setStatusTip('utf-8')
		utf_8.triggered.connect(self.encodeUTF8)

		utf_16 = QtGui.QAction('&UTF-16', self)
		utf_16.setStatusTip('utf-16')
		utf_16.triggered.connect(self.encodeUTF16)

		about = QtGui.QAction('&About', self)
		about.setStatusTip('More About Voice Recorder')
		about.triggered.connect(self.showAbout)

		self.textEdit = QtGui.QTextEdit(self)
		self.textEdit.setGeometry(10,30,825,104)
		self.textEdit.setStyleSheet("QTextEdit {font-size: 14pt}")
		self.textEdit.setText("Please Open a File...")
		self.textEdit.setReadOnly(True)

		self.Open = QtGui.QPushButton('Open', self)
		self.Open.move(10,160)
		self.Open.clicked.connect(self.showDialogOpen)

		self.Record = QtGui.QPushButton('Record', self)
		self.Record.move(155,160)
		self.Record.clicked.connect(self.record)

		self.Stop = QtGui.QPushButton('Stop', self)
		self.Stop.move(300,160)
		self.Stop.clicked.connect(self.stop)

		self.Play = QtGui.QPushButton('Play', self)
		self.Play.move(445,160)
		self.Play.clicked.connect(self.play)

		self.Back = QtGui.QPushButton('Back', self)
		self.Back.move(590,160)
		self.Back.clicked.connect(self.showBack)

		self.Next = QtGui.QPushButton('Next', self)
		self.Next.move(735,160)
		self.Next.clicked.connect(self.showNext)

		menubar = self.menuBar()
		fileMenu = menubar.addMenu('&File')
		fileMenu.addAction(openFile)
		fileMenu.addAction(exitAction)
		encodeMenu = menubar.addMenu('&Encoding')
		encodeMenu.addAction(utf_8)
		encodeMenu.addAction(utf_16)
		helpMenu = menubar.addMenu('&Help')
		helpMenu.addAction(about)

		self.setGeometry(200,200, 845, 550)
		self.setFixedSize(845 , 550)
		self.setWindowTitle('Voice Recorder')
		#self.setWindowIcon(QtGui.QIcon('logo.png'))
		self.show()

	def showDialogOpen(self):
		self.statusBar().showMessage('Open a File')
		self.fname = QtGui.QFileDialog.getOpenFileName(self, 'Open file','/home')
		if(self.fname!=""):
			del self.text[:]
			f = open(self.fname, 'r')
			for lines in f:
				self.text.append(lines)
			f.close
			if(self.decode!=""):
				self.textEdit.setText(self.text[self.line].decode(self.decode))
			else:
				self.textEdit.setText(self.text[self.line].decode('utf-8'))
			self.line=0
		self.statusBar().showMessage('')

	def showNext(self):
		self.line+=1
		if(len(self.text)>self.line):
			if(self.decode!=""):
				self.textEdit.setText(self.text[self.line].decode(self.decode))
			else:
				self.textEdit.setText(self.text[self.line].decode('utf-8'))
		else:
			self.showDialogOpen()

	def showBack(self):
		self.line-=1
		if(len(self.text)>=self.line and self.line>=0):
			if(self.decode!=""):
				self.textEdit.setText(self.text[self.line].decode(self.decode))
			else:
				self.textEdit.setText(self.text[self.line].decode('utf-8'))
		else:
			self.showDialogOpen()

	def showAbout(self):
		self.popup1=About()
		self.popup1.exec_()

	def encodeUTF8(self):
		self.decode="utf-8"

	def encodeUTF16(self):
		self.decode="utf-16"

	def record(self):
		self.statusBar().showMessage('Recording')
		self.rec=1
		self.Record.setEnabled(False)
		self.Open.setEnabled(False)
		self.Play.setEnabled(False)
		self.Next.setEnabled(False)
		self.Back.setEnabled(False)
		self.vrThread.start()
		self.vr.record(self.fname, self.line)

	def stop(self):
		self.statusBar().showMessage('')
		if self.rec == 1:
			self.vr.stop()
			self.vrThread.exit()
			self.vrThread.wait()
			self.vrThread.quit()
		elif self.rec == 2:
			self.pl.stop()
			self.plThread.exit()
			self.plThread.wait()
			self.plThread.quit()
		self.Record.setEnabled(True)
		self.Open.setEnabled(True)
		self.Play.setEnabled(True)
		self.Next.setEnabled(True)
		self.Back.setEnabled(True)
		self.rec=0

	def play(self):
		self.statusBar().showMessage('Playing')
		self.rec=2
		self.Record.setEnabled(False)
		self.Open.setEnabled(False)
		self.Play.setEnabled(False)
		self.Next.setEnabled(False)
		self.Back.setEnabled(False)
		self.plThread.start()
		self.pl.play(self.fname, self.line, self)

	def spectro(self):
		self.centralwidget = QtGui.QWidget(self)
		self.verticalLayout = QtGui.QVBoxLayout(self.centralwidget)
		self.qwtPlot = Qwt.QwtPlot(self.centralwidget)
		self.verticalLayout.addWidget(self.qwtPlot)
		self.centralwidget.setGeometry(10,200,825,330)

		self.c=Qwt.QwtPlotCurve()  
		self.c.attach(self.qwtPlot)

		self.qwtPlot.setAxisScale(self.qwtPlot.yLeft, 0, 32000)

		self.timer = QTimer()
		self.timer.start(1.0)

		self.connect(self.timer, SIGNAL('timeout()'), self.plotSomething) 

		self.SR=SwhRecorder()
		self.SR.setup()
		self.SR.continuousStart()

	def plotSomething(self):
		if self.SR.newAudio==False: 
			return
		xs,ys=self.SR.fft()
		self.c.setData(xs,ys)
		self.qwtPlot.replot()
		self.SR.newAudio=False

	def closeEvent(self, event):
		self.SR.close()
		QtGui.qApp.quit()
Example #5
0
    downloader = Songs()
    if len(sys.argv) == 4:
        downloader.get_files('Downloads/', 'Downloads/songs.txt', sys.argv[2], sys.argv[3])
    elif len(sys.argv) == 3:
        downloader.get_files(sys.argv[2])
    else:
        raise Exception("Invalid format! Please use 'czplayer help' to get usage information.")
    downloader.get_download_list()
    downloader.download()

elif sys.argv[1] == "play":
    player = Play()
    if len(sys.argv) == 4:
        player.set_order(sys.argv[2], sys.argv[3])
    else:
        player.set_order("random")
    player.generate()
    player.play()

elif sys.argv[1] == "help":
    print("Use CZPlayer by executing one of the following commands - ")
    print("'python3 czplayer.py help' for usage information.")
    print("'python3 czplayer.py download your_sudo_password your_username' for downloading songs present in Downloads/songs.txt. Playlist will be automatically updated.")
    print("'python3 czplayer.py download your_sudo_password' if you have executed the above command at least once.")
    print("'python3 czplayer.py play random' for listening to the songs in the playlist random order.")
    print("'python3 czplayer.py play custom [song_name_without_spaces, song_name_without_spaces, ..., song_name_without_spaces]'.")
    print("You can view the playlist by opening playlists/universal.txt.")

else:
    print("Invalid format! Please use 'czplayer help' to get usage information.")