def play(doc, userid): chunks = list(doc.noun_chunks) # determine if this chunks are gernes, artists or songs # for gerne: # should be only one chunk with one word or <GERNE> + music log.info("CHUNKS: " + str(chunks)) arguments = [] for chunk in chunks: arguments.append(str(chunk)) # in some cases chunk analysis takes play within the chunk if len(arguments) > 0 and arguments[0].lower().startswith( "play") and doc.text.lower().count( "play") == arguments[0].lower().count("play"): arguments[0] = arguments[0][5:] if "" in arguments: arguments.remove("") # if chunk analysis fails, set chunk manually (this happens in short instructions) if len(arguments) == 0: table = str.maketrans({key: None for key in string.punctuation}) arguments.append(doc.text[5:].translate(table)) if "" in arguments: arguments.remove("") response = verbalizer.getOkText() arg_genres = [] for chunk in arguments: genre = mpm.trimGerne(chunk) if mpm.isGerne(genre) == True: arg_genres.append(genre) log.info(arg_genres) if len(arguments) == 0: mpm.speak(response) mpm.playOrResume() elif len(arg_genres) < len(arguments) and mpm.containsSongOrArtist( arguments): mpm.speak(response) mpm.playSongOrArtist(arguments) elif len(arg_genres) > 0: mpm.speak(response) mpm.playGernes(arg_genres) else: # no genre song artist found, check for alternate suggestions suggestion = mpm.getRandomGenre() states[userid] = ConversationState(ConversationStateEnum.AwaitYesOrNo, "Play " + suggestion + ".") response = verbalizer.getAlternatePlaySuggestion(suggestion) return response
def repeatPlaylist(): response = verbalizer.getOkText() mpm.speak(response) mpm.repeatPlaylist() return response
def updateDatabase(): response = verbalizer.getOkText() mpm.speak(response) mpm.updateDatabase() return response
def clearCurrentPlaylist(): response = verbalizer.getOkText() mpm.speak(response) mpm.clearCurrentPlaylist() return response
def playRandom(): response = verbalizer.getOkText() mpm.speak(response) mpm.playRandom() return verbalizer.getOkText()
def playPrevious(): response = verbalizer.getOkText() mpm.speak(response) mpm.playPrevious() return response
def resume(): response = verbalizer.getOkText() mpm.speak(response) mpm.resume() return response
def pause(): response = verbalizer.getOkText() mpm.speak(response) mpm.pause() return response
def stop(): response = verbalizer.getOkText() mpm.speak(response) mpm.stop() return response