yetracker package

Submodules

yetracker.column module

class yetracker.column.AvailableLengthEnum(*values)

Bases: StrEnum

The options for how much available length an entry has.

BEAT_ONLY = 'Beat Only'
CONFIRMED = 'Confirmed'
CONFLICTING_SOURCES = 'Conflicting Sources'
FULL = 'Full'
OG_FILE = 'OG File'
PARTIAL = 'Partial'
RUMORED = 'Rumored'
SNIPPET = 'Snippet'
STEM_BOUNCE = 'Stem Bounce'
TAGGED = 'Tagged'
class yetracker.column.ContribTag(*values)

Bases: Enum

FEAT = 'feat.'
PROD = 'prod.'
QUES = '???.'
REF = 'ref.'
WITH = 'with'
class yetracker.column.Contributors(name_str: str)

Bases: object

Represents the contributors a entry has.

feat

The entry’s features.

Type:

str | None

ref

Artists who do a reference in the entry.

Type:

str | None

with\_

Artists the entry is made in equal collaboration with.

Type:

str | none

prod

Producers of the entry.

Type:

str | None

ques

The artists who contributed to an entry, but whose exact roles are unknown.

Type:

str | None

class yetracker.column.Emoji(*values)

Bases: Enum

An emoji, indicating the quality of an unreleased song.

AI = '🤖'
BEST_OF = '⭐'
GRAIL = '🏆'
LOST = '⁉️'
SPECIAL = '✨'
WANTED = '🥇'
WORST_OF = '🗑️'
class yetracker.column.QualityEnum(*values)

Bases: StrEnum

The options for the quality of an entry.

CD_QUALITY = 'CD Quality'
HIGH_QUALITY = 'High Quality'
LOSSLESS = 'Lossless'
LOW_QUALITY = 'Low Quality'
NOT_AVAILABLE = 'Not Available'
RECORDING = 'Recording'
class yetracker.column.ReleasedTypeEnum(*values)

Bases: StrEnum

The options for the type of a release.

ALBUM_TRACK = 'Album Track'
FEATURE = 'Feature'
OTHER = 'Other'
PRODUCTION = 'Production'
SINGLE = 'Single'
class yetracker.column.SampleUsed(name: str | None, artist: str | None = None, note: str | None = None, link: str | None = None)

Bases: object

Represents a used sample.

artist: str | None = None

The sample’s artist.

Link to the sample.

name: str | None

The sample’s name.

note: str | None = None

Notes about the sample.

class yetracker.column.StemTypeEnum(*values)

Bases: Enum

The options for the type of stem files.

ACAPELLAS = 'Acapellas'
INSTRUMENTALS = 'Instrumentals'
LIVE_ACAPELLAS = 'Live Acapellas'
LIVE_STEMS = 'Live Stems'
SESSIONS = 'Sessions'
STEM_PLAYER_STEMS = 'Stem Player Stems'
STUDIO_STEMS = 'Studio Stems'
TV_TRACKS = 'TV Tracks'
class yetracker.column.Version(version_start: int, version_end: int | Literal['?'] | None = None)

Bases: object

Represents the version of an entry.

version_start

The version number of the entry’s first version.

Type:

int

version_end

The version number of the entry’s last version. A value of ‘?’ indicates an unknown amount of versions. A value of None indicates the entry has only one version.

Type:

int | Literal[‘?’] | None

version

Either the singular version of an entry, or the tuple of the start and end version.

Type:

tuple[int, int | Literal[‘?’]] | int

version_count_unknown

Whether the entry has an unknown amount of versions or not.

Type:

bool

yetracker.common module

yetracker.entry module

class yetracker.entry.Entry(row: Row)

Bases: ABC

class yetracker.entry.Released(row: Row)

Bases: Song

Represents an entry in the Released tab.

release_date

The song’s release date. See file_date of Unreleased for information about the type.

Type:

datetime | str | None

type

The type of the release.

Type:

ReleasedTypeEnum | None

streaming

Whether the song is streaming or not.

Type:

bool

class yetracker.entry.Sample(row: Row)

Bases: Entry, WithNames

Represents an entry in the Samples tab.

Shares the era_name, notes, and links attributes with Song.

samples

The samples used by a song.

Type:

list[SampleUsed]

class yetracker.entry.Song(row: Row)

Bases: Entry, WithNames, WithEras

Base class for ‘song’-like entries.

era_name

The plain-text name of the era/album the entry is from.

Type:

str

notes

The entry’s notes.

Type:

str

length

The length of the entry.

Type:

timedelta | None

Audio link of the entry.

Type:

str

class yetracker.entry.Stem(row: Row)

Bases: Song

Represents an entry in the Stems tab.

Shares the file_date, leak_date, available_length, and quality attributes with Unreleased.

bpm

The BPM of the stems.

Type:

str

class yetracker.entry.Unreleased(row: Row)

Bases: Song

Represents an entry in the Unreleased tab.

file_date

The date of the song file itself. Either a plain-text string of the date, or a datetime object if the date is exact.

Type:

datetime | str | None

leak_date

The date of the song’s leakage. See file_date for information about the type.

Type:

datetime | str | None

available_length

How much of the song is available.

Type:

AvailableLengthEnum | None

quality

The audio quality of the song.

Type:

QualityEnum | None

class yetracker.entry.WithEras

Bases: object

Base class of entries in tabs with specical rows for eras and suberas.

era

Either the plain-text name of the era (equivalent to era_name), or an Era object.

Type:

str | Era

subera

The subera of the entry.

Type:

SubEra | None

set_era(era: Era)
set_subera(subera: SubEra)
class yetracker.entry.WithNames

Bases: object

Base class used to derive various attributes from the “Name” column in multiple tabs.

full_name

The full text of the entry’s “Name” column.

Type:

str

main_name

The entry’s main name.

Type:

str

alt_names

Alternative names the entry is known by.

Type:

list[str]

emojis

The list of Emojis the entry has.

Type:

list[Emoji]

version

The version number of the entry.

Type:

Version | None

contribs

Contributors to the song.

Type:

Contributors

artist

The artist of the entry (if not the tracker’s main artist)

Type:

str | None

yetracker.era module

class yetracker.era.BasicEra(row: Row)

Bases: Era

Represents a standard era.

notes

Notes about the era.

Type:

str

stats

Statistics about the entries within the era.

Type:

dict[str, int]

events

The events within an era, mapped to the date they happened.

Type:

dict[str, str]

main_name

The main name of the era.

Type:

str

alt_names

Alternative names the era is known by.

Type:

str

class yetracker.era.BasicSubEra(row: Row)

Bases: SubEra

Represents a standard subera.

events

The events within an era with the date they happened.

Type:

dict[str, str]

name

The subera’s name.

Type:

str

class yetracker.era.StemSubEra(row)

Bases: SubEra

Represents a subera within the Stems tab.

stem_type

The type of the stem.

Type:

StemTypeEnum | None

yetracker.tab module

class yetracker.tab.ReleasedTab(raw_values: Range)

Bases: Tab[Released]

List of entries in the Released tab.

class yetracker.tab.SamplesTab(raw_values: Range)

Bases: Tab[Sample]

List of entries in the Samples tab.

class yetracker.tab.StemsTab(raw_values: Range)

Bases: Tab[Stem]

List of entries in the Stems tab.

class yetracker.tab.Tab(raw_values: Range)

Bases: list[T], ABC, Generic

Base class for a tab/sheet within a tracker.

class yetracker.tab.UnreleasedTab(raw_values: Range)

Bases: Tab[Unreleased]

List of entries in the Unreleased tab.

get_ai()

Returns a filtered UnreleasedTab with only entries that have the “AI” emoji.

get_best_of()

Returns a filtered UnreleasedTab with only entries that have the “Best Of” emoji.

get_grails_or_wanted()

Returns a filtered UnreleasedTab with only entries that either have the “Grail” or the “Wanted” emoji.

get_special()

Returns a filtered UnreleasedTab with only entries that have the “Special” emoji.

get_worst_of()

Returns a filtered UnreleasedTab with only entries that have the “Worst Of” emoji.

yetracker.tracker module

exception yetracker.tracker.NotAuthenticatedError

Bases: Exception

class yetracker.tracker.Tracker(*, spreadsheet_id: str, api_key: str)
class yetracker.tracker.Tracker(*, raw_json: str | TextIO)
class yetracker.tracker.Tracker

Bases: ABC

Base class for a tracker. Inherit to create a specific tracker.

save_data_to_file(file_name: str)

Save the raw data collected to a file. The file can subsequently be loaded in with use_json.

Parameters:

file_name – name of the file to be written to.

use_api(spreadsheet_id: str, api_key: str)

Set the tracker to use the Google Sheets API.

Parameters:
  • spreadsheet_id – The ID of the Google Sheets spreadsheet.

  • api_key – The API key used to access the sheet.

use_json(json: str | TextIO)

Set the tracker to use a JSON data source.

Parameters:

json – Either a JSON string in the format of an API response, or as a file handler to a JSON file of that format.

class yetracker.tracker.YeTracker(*, spreadsheet_id: str, api_key: str)
class yetracker.tracker.YeTracker(*, raw_json: str | TextIO)
class yetracker.tracker.YeTracker

Bases: Tracker

Class representing the Ye Tracker.

get_released()
get_samples()
get_stems()
get_unreleased()

Module contents