Module albow.media.PlayList

Source code
from random import randrange


class PlayList:
    """
    A collection of music filenames to be played sequentially or
    randomly. If random is true, items will be played in a random order.
    If repeat is true, the list will be repeated indefinitely, otherwise
    each item will only be played once.
    """

    random: bool = None
    """
    If true, items will be played in a random order. Otherwise, they will be played in the order they were supplied 
    to the constructor.
    """
    repeat: bool = None
    """
    If true, the list will be repeated indefinitely. Otherwise, each item will only be played once.
    """

    def __init__(self, items, random: bool=False, repeat: bool=False):
        """
        Constructs a PlayList from a list of music file pathnames.

        Args:
            items:  Music file pathnames

            random: The new random state

            repeat: The new repeat state
        """
        self.items = list(items)
        self.random = random
        self.repeat = repeat

    def next(self):
        """
        Returns the next item to be played.
        """
        items = self.items
        if items:
            if self.random:
                n = len(items)
                if self.repeat:
                    n = (n + 1) // 2
                i = randrange(n)
            else:
                i = 0
            item = items.pop(i)
            if self.repeat:
                items.append(item)
            return item

Classes

class PlayList (items, random=False, repeat=False)

A collection of music filenames to be played sequentially or randomly. If random is true, items will be played in a random order. If repeat is true, the list will be repeated indefinitely, otherwise each item will only be played once.

Constructs a PlayList from a list of music file pathnames.

Args

items
Music file pathnames
random
The new random state
repeat
The new repeat state
Source code
class PlayList:
    """
    A collection of music filenames to be played sequentially or
    randomly. If random is true, items will be played in a random order.
    If repeat is true, the list will be repeated indefinitely, otherwise
    each item will only be played once.
    """

    random: bool = None
    """
    If true, items will be played in a random order. Otherwise, they will be played in the order they were supplied 
    to the constructor.
    """
    repeat: bool = None
    """
    If true, the list will be repeated indefinitely. Otherwise, each item will only be played once.
    """

    def __init__(self, items, random: bool=False, repeat: bool=False):
        """
        Constructs a PlayList from a list of music file pathnames.

        Args:
            items:  Music file pathnames

            random: The new random state

            repeat: The new repeat state
        """
        self.items = list(items)
        self.random = random
        self.repeat = repeat

    def next(self):
        """
        Returns the next item to be played.
        """
        items = self.items
        if items:
            if self.random:
                n = len(items)
                if self.repeat:
                    n = (n + 1) // 2
                i = randrange(n)
            else:
                i = 0
            item = items.pop(i)
            if self.repeat:
                items.append(item)
            return item

Class variables

var random

If true, items will be played in a random order. Otherwise, they will be played in the order they were supplied to the constructor.

var repeat

If true, the list will be repeated indefinitely. Otherwise, each item will only be played once.

Methods

def next(self)

Returns the next item to be played.

Source code
def next(self):
    """
    Returns the next item to be played.
    """
    items = self.items
    if items:
        if self.random:
            n = len(items)
            if self.repeat:
                n = (n + 1) // 2
            i = randrange(n)
        else:
            i = 0
        item = items.pop(i)
        if self.repeat:
            items.append(item)
        return item