From 38a9829ca9fe5f2e68f5ce72f5b23f077fcfb437 Mon Sep 17 00:00:00 2001 From: Manuel Cortez Date: Mon, 19 Feb 2018 11:45:57 -0600 Subject: [PATCH] Switched from sound_lib to libvlc --- src/controller/mainController.py | 6 ++-- src/controller/player.py | 60 +++++++++----------------------- 2 files changed, 19 insertions(+), 47 deletions(-) diff --git a/src/controller/mainController.py b/src/controller/mainController.py index c3e76e3..54b67f3 100644 --- a/src/controller/mainController.py +++ b/src/controller/mainController.py @@ -84,12 +84,10 @@ class Controller(object): ev.Skip() def on_play_pause(self, *args, **kwargs): - if player.player.check_is_playing() != False: + if player.player.player.is_playing() == 1: return player.player.pause() - elif player.player.stream != None: - player.player.stream.play() else: - self.on_play() + player.player.player.play() def on_next(self, *args, **kwargs): return utils.call_threaded(player.player.next) diff --git a/src/controller/player.py b/src/controller/player.py index ae75ace..f895519 100644 --- a/src/controller/player.py +++ b/src/controller/player.py @@ -1,10 +1,7 @@ # -*- coding: utf-8 -*- import random -import sound_lib +import vlc import logging -from sound_lib.stream import URLStream -from sound_lib.main import BassError -from sound_lib.output import Output from pubsub import pub from utils import RepeatingTimer @@ -14,44 +11,38 @@ log = logging.getLogger("player") def setup(): global player if player == None: - Output() player = audioPlayer() class audioPlayer(object): def __init__(self): self.is_playing = False - self.stream = None self.vol = 50 self.is_working = False self.queue = [] self.stopped = True self.queue_pos = 0 self.shuffle = False + self.instance = vlc.Instance() + self.player = self.instance.media_player_new() def play(self, item): - if self.stream != None and self.stream.is_playing == True: - try: - self.stream.stop() - except BassError: - log.exception("error when stopping the file") - self.stopped = True + self.stopped = True # Make sure there are no other sounds trying to be played. if self.is_working == False: self.is_working = True if item.download_url == "": item.get_download_url() - try: - self.stream = URLStream(url=item.download_url) - except BassError as e: + self.stream_new = self.instance.media_new(item.download_url) + self.player.set_media(self.stream_new) + if self.player.play() == -1: log.debug("Error when playing the file {0}".format(item.title,)) pub.sendMessage("change_status", status=_("Error playing {0}. {1}.").format(item.title, e.description)) self.stopped = True self.is_working = False self.next() return - self.stream.volume = self.vol/100.0 - self.stream.play() + self.player.audio_set_volume(self.vol) pub.sendMessage("change_status", status=_("Playing {0}.").format(item.title)) self.stopped = False self.is_working = False @@ -79,33 +70,25 @@ class audioPlayer(object): self.play(self.queue[self.queue_pos]) def stop(self): - if self.stream != None and self.stream.is_playing == True: - self.stream.stop() - self.stopped = True + self.player.stop() + self.stopped = True def pause(self): - if self.stream != None: - if self.stream.is_playing == True: - self.stream.pause() - self.stopped = True - else: - try: - self.stream.play() - self.stopped = False - except BassError: - pass + self.player.pause() + if self.stopped == True: + self.stopped = False + else: + self.stopped = True @property def volume(self): -# if self.stream != None: return self.vol @volume.setter def volume(self, vol): if vol <= 100 and vol >= 0: self.vol = vol - if self.stream != None: - self.stream.volume = self.vol/100.0 + self.player.audio_set_volume(self.vol) def play_all(self, list_of_items, playing=0, shuffle=False): if list_of_items != self.queue: @@ -118,16 +101,7 @@ class audioPlayer(object): self.worker.start() def player_function(self): - if self.stream != None and self.stream.is_playing == False and self.stopped == False and len(self.stream) == self.stream.position: + if self.player.is_playing() == 0 and self.stopped == False: if len(self.queue) == 0: return self.next() - - def check_is_playing(self): - if self.stream == None: - return False - if self.stream != None and self.stream.is_playing == False: - return False - else: - return True -