Ejemplo n.º 1
0
Archivo: player.py Proyecto: leuc/cozy
def play_pause(track, jump=False):
    """
    Play a new file or pause/play if the file is already loaded.
    :param track: Track object that will be played/paused.
    """
    global __current_track
    global __player
    global __wait_to_seek
    global __set_speed

    __wait_to_seek = jump

    if __current_track == track or track is None:
        # Track is already selected, only play/pause
        if get_gst_player_state() == Gst.State.PLAYING:
            __player.set_state(Gst.State.PAUSED)
            emit_event("pause")
            save_current_track_position()
        else:
            __player.set_state(Gst.State.PLAYING)
            emit_event("play", Track.get(Track.id == __current_track.id))
    else:
        load_file(track)
        __player.set_state(Gst.State.PLAYING)
        emit_event("play", Track.get(Track.id == __current_track.id))

    __set_speed = True
Ejemplo n.º 2
0
    def __init__(self, db: SqliteDatabase, id: int):
        super().__init__()
        self._db: SqliteDatabase = db
        self.id: int = id

        with self._db:
            self._db_object: TrackModel = TrackModel.get(self.id)
Ejemplo n.º 3
0
def test_delete_does_not_delete_book(peewee_database):
    from cozy.db.track import Track as TrackModel
    from cozy.db.book import Book
    from cozy.model.track import Track

    track = Track(peewee_database, 1)
    book_id = TrackModel.get(1).book.id
    track.delete()

    assert Book.get_or_none(book_id) is not None
Ejemplo n.º 4
0
    def __init__(self, db: SqliteDatabase, id: int):
        super().__init__()
        self._db: SqliteDatabase = db
        self.id: int = id

        self._db_object: TrackModel = TrackModel.get(self.id)
        self._track_to_file_db_object: TrackToFile = TrackToFile.get_or_none(
            TrackToFile.track == self.id)
        if not self._track_to_file_db_object:
            log.error(
                "Inconsistent DB, TrackToFile object is missing. Deleting this track."
            )
            self._db_object.delete_instance(recursive=True,
                                            delete_nullable=False)
            raise TrackInconsistentData
Ejemplo n.º 5
0
def rewind(seconds):
    """
    Seek seconds back in time. Caps at 0 seconds.
    :param seconds: time in seconds
    """
    global __player
    global __current_track
    duration = get_current_duration()
    state = get_gst_player_state()
    seek = duration - (seconds * 1000000000)
    if seek < 0:
        if prev_track():
            __player.set_state(state)
            if state == Gst.State.PAUSED:
                emit_event("pause", Track.get(Track.id == __current_track.id))
            seek = get_current_track().length * 1000000000 + seek
        else:
            seek = 0

    __player.seek(__speed, Gst.Format.TIME, Gst.SeekFlags.FLUSH,
                  Gst.SeekType.SET, seek, Gst.SeekType.NONE, 0)
    save_current_track_position(seek)