Mercurial > vixm
view vixm/playlist.py @ 32:f97eb9f0c207 master
Add random song selection for default queue
author | Josef "Jeff" Sipek <jeffpc@josefsipek.net> |
---|---|
date | Fri, 03 Nov 2006 23:26:35 -0500 |
parents | dfcf1a46fc56 |
children | 99983189d4b2 |
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 """ idx = random.randint(0, len(self.__list)-1) if not self.__allowrand: idx = self.__cursor self.__cursor += 1 if self.__cursor >= len(self.__list): self.__cursor = 0 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)