Module musar.formats

Wrapper for applying several cleaners on one accessor value.

Expand source code
"""Wrapper for applying several cleaners on one accessor value.
"""

from . import scopes
from . import accessors


class Format:
    """Wrapper for applying several cleaners on one accessor value.

    Parameters
    ----------
    accessor : musar.accessors.Accessor
        Accessor on which applying the cleaners.
    *cleaners : List[musar.cleaners.Cleaner]
        Cleaners to apply.

    Attributes
    ----------
    cleaners : List[musar.cleaners.Cleaner]
    accessor : musar.accessors.Accessor

    """

    def __init__(self, accessor, *cleaners):
        self.accessor = accessor
        self.cleaners = cleaners

    def __repr__(self):
        return "Format<%s>[%s]" % (
            self.accessor.__class__.__name__,
            ", ".join(map(lambda c: c.__class__.__name__, self.cleaners))
        )

    def __str__(self):
        return "%s %s" % (
            self.accessor.NAME,
            " ".join(map(lambda c: c.NAME, self.cleaners))
        )

    def set(self, folder):
        """Set the tags of tracks after applying cleaners.

        Parameters
        ----------
        folder : musar.folder.Folder
            Folder with tracks on which applying the cleaners.

        """
        for track in folder:
            value = self.accessor.get(track)
            for cleaner in self.cleaners:
                value = cleaner.apply(value)
            self.accessor.set(track, value)

    def prepare(self, folder):
        """Prepare the accessors before clearing the tags. Sets the values in
        memories and compute `musar.accessors.NumberAccessor` total value.

        Parameters
        ----------
        folder : type
            Description of parameter `folder`.

        Returns
        -------
        type
            Description of returned object.

        """
        for track in folder:
            self.accessor.get(track)
        if isinstance(self.accessor, accessors.DiscNumber):
            total = max(self.accessor.memory.values())
            for track in folder:
                self.accessor.memory[track] = (
                    self.accessor.memory[track],
                    total
                )
        elif isinstance(self.accessor, accessors.TrackNumber):
            for tracks in scopes.Disc().iterate(folder):
                for track in tracks:
                    self.accessor.memory[track] = (
                        self.accessor.memory[track],
                        len(tracks)
                    )

Classes

class Format (accessor, *cleaners)

Wrapper for applying several cleaners on one accessor value.

Parameters

accessor : Accessor
Accessor on which applying the cleaners.
*cleaners : List[Cleaner]
Cleaners to apply.

Attributes

cleaners : List[Cleaner]
 
accessor : Accessor
 
Expand source code
class Format:
    """Wrapper for applying several cleaners on one accessor value.

    Parameters
    ----------
    accessor : musar.accessors.Accessor
        Accessor on which applying the cleaners.
    *cleaners : List[musar.cleaners.Cleaner]
        Cleaners to apply.

    Attributes
    ----------
    cleaners : List[musar.cleaners.Cleaner]
    accessor : musar.accessors.Accessor

    """

    def __init__(self, accessor, *cleaners):
        self.accessor = accessor
        self.cleaners = cleaners

    def __repr__(self):
        return "Format<%s>[%s]" % (
            self.accessor.__class__.__name__,
            ", ".join(map(lambda c: c.__class__.__name__, self.cleaners))
        )

    def __str__(self):
        return "%s %s" % (
            self.accessor.NAME,
            " ".join(map(lambda c: c.NAME, self.cleaners))
        )

    def set(self, folder):
        """Set the tags of tracks after applying cleaners.

        Parameters
        ----------
        folder : musar.folder.Folder
            Folder with tracks on which applying the cleaners.

        """
        for track in folder:
            value = self.accessor.get(track)
            for cleaner in self.cleaners:
                value = cleaner.apply(value)
            self.accessor.set(track, value)

    def prepare(self, folder):
        """Prepare the accessors before clearing the tags. Sets the values in
        memories and compute `musar.accessors.NumberAccessor` total value.

        Parameters
        ----------
        folder : type
            Description of parameter `folder`.

        Returns
        -------
        type
            Description of returned object.

        """
        for track in folder:
            self.accessor.get(track)
        if isinstance(self.accessor, accessors.DiscNumber):
            total = max(self.accessor.memory.values())
            for track in folder:
                self.accessor.memory[track] = (
                    self.accessor.memory[track],
                    total
                )
        elif isinstance(self.accessor, accessors.TrackNumber):
            for tracks in scopes.Disc().iterate(folder):
                for track in tracks:
                    self.accessor.memory[track] = (
                        self.accessor.memory[track],
                        len(tracks)
                    )

Methods

def prepare(self, folder)

Prepare the accessors before clearing the tags. Sets the values in memories and compute NumberAccessor total value.

Parameters

folder : type
Description of parameter folder.

Returns

type
Description of returned object.
Expand source code
def prepare(self, folder):
    """Prepare the accessors before clearing the tags. Sets the values in
    memories and compute `musar.accessors.NumberAccessor` total value.

    Parameters
    ----------
    folder : type
        Description of parameter `folder`.

    Returns
    -------
    type
        Description of returned object.

    """
    for track in folder:
        self.accessor.get(track)
    if isinstance(self.accessor, accessors.DiscNumber):
        total = max(self.accessor.memory.values())
        for track in folder:
            self.accessor.memory[track] = (
                self.accessor.memory[track],
                total
            )
    elif isinstance(self.accessor, accessors.TrackNumber):
        for tracks in scopes.Disc().iterate(folder):
            for track in tracks:
                self.accessor.memory[track] = (
                    self.accessor.memory[track],
                    len(tracks)
                )
def set(self, folder)

Set the tags of tracks after applying cleaners.

Parameters

folder : Folder
Folder with tracks on which applying the cleaners.
Expand source code
def set(self, folder):
    """Set the tags of tracks after applying cleaners.

    Parameters
    ----------
    folder : musar.folder.Folder
        Folder with tracks on which applying the cleaners.

    """
    for track in folder:
        value = self.accessor.get(track)
        for cleaner in self.cleaners:
            value = cleaner.apply(value)
        self.accessor.set(track, value)