def progress(self, fullpath, isComplete=True, startTime=0): # At the moment the only time progress is called is to mark as complete audiobookDB = AudioBooksDB() audiobookDB.setPosition(fullpath, startTime, isComplete) del audiobookDB xbmc.executebuiltin("Container.Refresh")
def playAudioBook(audioBookHandler, startTime=-1, chapter=0): log("BookPlayer: Playing audio book = %s" % audioBookHandler.getFile()) bookPlayer = BookPlayer() playlist = audioBookHandler.getPlayList(startTime, chapter) bookPlayer.play(playlist) # Don't allow this to loop forever loopCount = 3000 while (not bookPlayer.isPlaying()) and (loopCount > 0): xbmc.sleep(1) loopCount = loopCount - 1 # Looks like the audiobook never started for some reason, do not go any further if loopCount == 0: return currentTime = 0 currentFile = '' waitingForComplete = 0 # Wait for the player to stop while waitingForComplete < 30: # There is a small gap when switching between different items in the same # playlist where it records it as not playing, so we need to give it a little # bit of time to start playing the next item in the playlist if there is one if bookPlayer.isPlaying(): # Keep track of where the current track is up to currentTime = int(bookPlayer.getTime()) currentFile = bookPlayer.getPlayingFile() waitingForComplete = 0 else: waitingForComplete += 1 xbmc.sleep(10) # Record the time that the player actually stopped log("BookPlayer: Played to time = %d, file = %s" % (currentTime, currentFile)) # Get the chapter number that was playing chapterPosition = audioBookHandler.getChapterPosition(currentFile) log("BookPlayer: Chapter position is %d" % chapterPosition) if (currentTime > 0) or (chapterPosition > 1): bookComplete = False duration = audioBookHandler.getTotalDuration() log("BookPlayer: Total book duration is %d" % duration) if duration > 1: if currentTime > (duration - 60): bookComplete = True audiobookDB = AudioBooksDB() audiobookDB.setPosition(audioBookHandler.getFile(), currentTime, chapterPosition, bookComplete) del audiobookDB
def playAudioBook(audioBookHandler, startTime=-1, chapter=0): log("BookPlayer: Playing audio book = %s" % audioBookHandler.getFile()) bookPlayer = BookPlayer() playlist = audioBookHandler.getPlayList(startTime, chapter) bookPlayer.play(playlist) # Don't allow this to loop forever loopCount = 3000 while (not bookPlayer.isPlaying()) and (loopCount > 0): xbmc.sleep(1) loopCount = loopCount - 1 # Looks like the audiobook never started for some reason, do not go any further if loopCount == 0: return currentTime = 0 currentFile = '' totalTrackTime = 0 waitingForComplete = 0 # Wait for the player to stop while waitingForComplete < 30: # There is a small gap when switching between different items in the same # playlist where it records it as not playing, so we need to give it a little # bit of time to start playing the next item in the playlist if there is one if bookPlayer.isPlaying(): # Keep track of where the current track is up to try: currentTime = int(bookPlayer.getTime()) currentFile = bookPlayer.getPlayingFile() totalTrackTime = bookPlayer.getTotalTime() waitingForComplete = 0 except: # If we get an exception there it is most probably because there is # a small gap between checking if something is playing and getting # each of the values waitingForComplete += 1 else: waitingForComplete += 1 xbmc.sleep(10) # Record the time that the player actually stopped log("BookPlayer: Played to time = %d, file = %s, totalTime = %s" % (currentTime, currentFile, totalTrackTime)) # Get the chapter number that was playing chapterPosition = audioBookHandler.getChapterPosition(currentFile) log("BookPlayer: Chapter position is %d" % chapterPosition) if (currentTime > 0) or (chapterPosition > 1): bookComplete = False duration = audioBookHandler.getTotalDuration() log("BookPlayer: Total book duration is %d" % duration) if duration > 1: if currentTime > (duration - 60): log("BookPlayer: Marking entire book as complete") bookComplete = True # If dealing with multiple files for a single book, need to check if the entire # book is complete if chapterPosition == len(audioBookHandler.getChapterDetails()): if (currentTime + 60) > totalTrackTime: log("BookPlayer: Marking book as complete") bookComplete = True audiobookDB = AudioBooksDB() audiobookDB.setPosition(audioBookHandler.getFile(), currentTime, chapterPosition, bookComplete) del audiobookDB