Mercurial > vixm
view vixm/playlist.py @ 33:99983189d4b2 master
Redo next song selection logic
author | Josef "Jeff" Sipek <jeffpc@josefsipek.net> |
---|---|
date | Fri, 03 Nov 2006 23:27:49 -0500 |
parents | f97eb9f0c207 |
children | 8028f2addb00 |
line wrap: on
line source
# playlist.py - playlist interface # # Copyright (C) 2006 Josef "Jeff" Sipek <jeffpc@josefsipek.net> # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 as # published by the Free Software Foundation. import random import xmms, re LIST_PRIO = 0 LIST_DEFAULT = 1 class playlist: def __init__(self, allowrandom=False): self.__list = [] self.__allowrand = allowrandom # allow randomization of this list self.__cursor = 0 def enqueue(self, song): """ Append a song to the list """ self.__list.append(song) def dequeue(self, song): """ Remove a song from the list """ self.__list.remove(song) def pop(self): """ Pop the next song """ return self.__list.pop(0) def next(self): """ Get the next song """ def rnd(): return random.randint(0, len(self.__list)-1) ## idx = self.__cursor if not self.__allowrand: self.__cursor += 1 if self.__cursor >= len(self.__list): self.__cursor = 0 else: self.__cursor = rnd() return self.__list[idx] def __getitem__(self, i): """ Get item at position i """ return self.__list[i] def __len__(self): """ Return the length of the playlist """ return len(self.__list) def search(self, regexp): """ Yield all the songs matching regexp """ for song in self.__list: if re.search(regexp, str(song), re.IGNORECASE): yield song def index(self, song): """ Returns the index of the first occurence of song """ return self.__list.index(song)