emmental/audio/player.py

54 lines
1.6 KiB
Python

# Copyright 2021 (c) Anna Schumaker.
import lib
import tagdb
from gi.repository import GObject
from . import bass
from . import scale
class Player(bass.BassPlayer):
def __init__(self):
bass.BassPlayer.__init__(self)
self.Autopause = scale.AutoPauseScale()
self.emit("track-changed", None,
tagdb.Tracks[lib.settings.get_int("audio.trackid")])
self.playing = False
if self.track:
self.track.add_to_playlist("Previous")
def do_about_to_finish(self):
if self.Autopause.get_value() != 0:
(track, cont) = tagdb.Stack.next()
self.emit("track-changed", self.track, track)
self.Autopause.decrement()
def do_eos(self):
self.next()
def load_track(self, track):
self.uri = None
self.emit("track-changed", self.track, track)
self.playing = (self.Autopause.decrement() != -1)
def next(self):
(track, cont) = tagdb.Stack.next()
self.load_track(track)
def play(self): self.playing = True
def pause(self): self.playing = False
def playpause(self): self.playing = not self.playing
def previous(self):
self.load_track(tagdb.Stack.previous())
@GObject.Signal(arg_types=(tagdb.track.Track, tagdb.track.Track))
def track_changed(self, prev, new):
if prev and self.play_percent > (2 / 3):
prev.played()
self.track = new
if self.track:
lib.settings.set("audio.trackid", new.trackid)
self.uri = new.filepath().absolute().as_uri()