SYMBOL INDEX (206 symbols across 7 files) FILE: maestro/config.py function print_to_logfile (line 238) | def print_to_logfile(*args, **kwargs): FILE: maestro/helpers.py class Song (line 27) | class Song: method __init__ (line 28) | def __init__(self, song_id: int): method reset (line 42) | def reset(self): method __eq__ (line 50) | def __eq__(self, value): method __hash__ (line 55) | def __hash__(self): method __repr__ (line 58) | def __repr__(self): method override_lyrics_path (line 62) | def override_lyrics_path(self): method translated_lyrics_path (line 68) | def translated_lyrics_path(self): method song_id (line 74) | def song_id(self): method song_file (line 78) | def song_file(self): method song_path (line 83) | def song_path(self): method song_title (line 88) | def song_title(self): method song_title (line 93) | def song_title(self, v): method tags (line 114) | def tags(self) -> set[str]: method tags (line 118) | def tags(self, v: set[str]): method clips (line 122) | def clips(self) -> dict[str, list[int, int]]: method set_clip (line 126) | def set_clip(self) -> str: method set_clip (line 130) | def set_clip(self, v: str): method listen_times (line 134) | def listen_times(self) -> dict[int | str, float]: method _load_metadata (line 137) | def _load_metadata(self): method artist (line 143) | def artist(self): method artist (line 147) | def artist(self, v): method album (line 151) | def album(self): method album (line 155) | def album(self, v): method album_artist (line 159) | def album_artist(self): method album_artist (line 163) | def album_artist(self, v): method duration (line 167) | def duration(self): method artwork (line 171) | def artwork(self): method raw_lyrics (line 181) | def raw_lyrics(self) -> str | None: method raw_lyrics (line 185) | def raw_lyrics(self, v): method raw_override_lyrics (line 197) | def raw_override_lyrics(self) -> str | None: method raw_override_lyrics (line 204) | def raw_override_lyrics(self, v): method raw_translated_lyrics (line 220) | def raw_translated_lyrics(self) -> str | None: method raw_translated_lyrics (line 227) | def raw_translated_lyrics(self, v): method _parse_lyrics (line 240) | def _parse_lyrics(self, raw_lyrics): method parsed_lyrics (line 254) | def parsed_lyrics(self): method parsed_override_lyrics (line 260) | def parsed_override_lyrics(self): method parsed_translated_lyrics (line 268) | def parsed_translated_lyrics(self): method get_metadata (line 275) | def get_metadata(self, key, resolve=True): method set_metadata (line 291) | def set_metadata(self, key, value): method remove_from_data (line 312) | def remove_from_data(self): method _save (line 315) | def _save(self): class SongData (line 320) | class SongData: method __init__ (line 321) | def __init__(self): method load (line 325) | def load(self): method __getitem__ (line 350) | def __getitem__(self, key): method __setitem__ (line 355) | def __setitem__(self, key, value): method __delitem__ (line 360) | def __delitem__(self, key): method __iter__ (line 365) | def __iter__(self): method items (line 370) | def items(self): method values (line 375) | def values(self): method _save (line 380) | def _save(self): method add_song (line 387) | def add_song(self, filename, tags=None): class Songs (line 417) | class Songs: method __init__ (line 422) | def __init__(self): method load (line 426) | def load(self): method __contains__ (line 429) | def __contains__(self, value: Song): method __iter__ (line 434) | def __iter__(self) -> Iterable[Song]: method __len__ (line 439) | def __len__(self): function is_safe_username (line 448) | def is_safe_username(url): function bounded_shuffle (line 452) | def bounded_shuffle(lst, radius=-1): function set_timeout (line 472) | def set_timeout(func, timeout, *args, **kwargs): class Scroller (line 482) | class Scroller: method __init__ (line 483) | def __init__(self, num_lines, win_size): method scroll_forward (line 489) | def scroll_forward(self): method scroll_backward (line 498) | def scroll_backward(self): method halfway (line 505) | def halfway(self): method resize (line 508) | def resize(self, win_size=None): method refresh (line 514) | def refresh(self): function fit_string_to_width (line 518) | def fit_string_to_width(s, width, length_so_far): function addstr_fit_to_width (line 529) | def addstr_fit_to_width(stdscr, s, width, length_so_far, *args, **kwargs): class FFmpegProcessHandler (line 540) | class FFmpegProcessHandler: method __init__ (line 541) | def __init__(self, username, password): method start (line 546) | def start(self): method _start (line 549) | def _start(self): method terminate (line 571) | def terminate(self): method restart (line 576) | def restart(self): method write (line 580) | def write(self, chunk): class PlaybackHandler (line 588) | class PlaybackHandler: method __init__ (line 589) | def __init__( method _load_audio (line 677) | def _load_audio(self, path, sr): method _audio_processing_loop (line 692) | def _audio_processing_loop(self): method _streaming_loop (line 826) | def _streaming_loop(self): method paused (line 873) | def paused(self): method paused (line 877) | def paused(self, value): method volume (line 883) | def volume(self): method volume (line 887) | def volume(self, v): method want_stream (line 893) | def want_stream(self): method want_stream (line 897) | def want_stream(self, value): method song (line 903) | def song(self): method song_id (line 907) | def song_id(self): method song_file (line 911) | def song_file(self): method song_path (line 915) | def song_path(self): method song_title (line 919) | def song_title(self): method song_artist (line 923) | def song_artist(self): method song_album (line 927) | def song_album(self): method album_artist (line 931) | def album_artist(self): method artwork (line 935) | def artwork(self): method screen_height (line 943) | def screen_height(self): method screen_width (line 947) | def screen_width(self): method can_show_lyrics (line 951) | def can_show_lyrics(self): method can_show_translated_lyrics (line 955) | def can_show_translated_lyrics(self): method focus (line 961) | def focus(self): method focus (line 965) | def focus(self, value): method seek (line 970) | def seek(self, pos): method scroll_forward (line 980) | def scroll_forward(self): method scroll_backward (line 990) | def scroll_backward(self): method snap_back (line 1000) | def snap_back(self): method set_volume (line 1007) | def set_volume(self, v): method quit (line 1011) | def quit(self): method prompting_delete_char (line 1018) | def prompting_delete_char(self): method update_screen (line 1027) | def update_screen(self): method connect_to_discord (line 1030) | def connect_to_discord(self): method update_discord_metadata (line 1042) | def update_discord_metadata(self): method update_mac_now_playing_metadata (line 1108) | def update_mac_now_playing_metadata(self): method update_icecast_metadata (line 1130) | def update_icecast_metadata(self): method icecast_metadata_update_loop (line 1147) | def icecast_metadata_update_loop(self): method threaded_update_icecast_metadata (line 1167) | def threaded_update_icecast_metadata(self): method update_stream_metadata (line 1172) | def update_stream_metadata(self): # artwork + icecast metadata method update_metadata (line 1193) | def update_metadata(self): method initialize_discord (line 1201) | def initialize_discord(self): method threaded_initialize_discord (line 1210) | def threaded_initialize_discord(self): method output (line 1213) | def output(self, pos): function init_curses (line 1902) | def init_curses(stdscr): class SongParamType (line 1936) | class SongParamType(click.ParamType): method convert (line 1939) | def convert(self, value, param, ctx) -> Song: function yt_embed_artwork (line 1971) | def yt_embed_artwork(yt_dlp_info, crop): function clip_editor (line 2040) | def clip_editor(stdscr, song: Song, name, start=None, end=None): function clip_editor_output (line 2178) | def clip_editor_output( function get_username (line 2371) | def get_username(): function get_password (line 2377) | def get_password(): function signup (line 2383) | def signup(username=None, password=None, login_=True): function login (line 2430) | def login(username=None, password=None): function format_seconds (line 2475) | def format_seconds(secs, show_decimal=False, digital=True, include_hours... function search_song (line 2503) | def search_song(phrase): function print_entry (line 2525) | def print_entry( function multiprocessing_put_word (line 2615) | def multiprocessing_put_word(q, word): function versiontuple (line 2621) | def versiontuple(v): function pluralize (line 2625) | def pluralize(count, word, include_count=True): function is_timed_lyrics (line 2629) | def is_timed_lyrics(lyrics): function get_lyric (line 2635) | def get_lyric(lyric_obj): function set_lyric (line 2641) | def set_lyric(lyrics, i, val): function display_lyrics (line 2648) | def display_lyrics(lyrics, song, prefix: str = ""): function filter_songs (line 2677) | def filter_songs( FILE: maestro/jit_funcs.py function lerp (line 22) | def lerp(start, stop, t): function bin_average (line 27) | def bin_average(arr: np.ndarray, n, include_remainder=False, func=None): function render (line 46) | def render( FILE: maestro/mac_presence.py class AppDelegate (line 32) | class AppDelegate(NSObject): # so Python doesn't bounce in the dock method applicationDidFinishLaunching_ (line 33) | def applicationDidFinishLaunching_(self, _aNotification): method sayHello_ (line 36) | def sayHello_(self, _sender): function app_helper_loop (line 39) | def app_helper_loop(): class MockQueue (line 57) | class MockQueue: # enable testing this file method put (line 58) | def put(self, *args, **kwargs): method empty (line 61) | def empty(self): class MockInt (line 65) | class MockInt: method __init__ (line 66) | def __init__(self) -> None: method value (line 70) | def value(self): method value (line 74) | def value(self, value): class MacNowPlaying (line 78) | class MacNowPlaying: method __init__ (line 79) | def __init__(self): method play_handler (line 131) | def play_handler(self, _event): method pause_handler (line 140) | def pause_handler(self, _event): method toggle_handler (line 149) | def toggle_handler(self, _event): method next_handler (line 157) | def next_handler(self, _event): method prev_handler (line 164) | def prev_handler(self, _event): method seek_backward_handler (line 171) | def seek_backward_handler(self, _event): method seek_forward_handler (line 178) | def seek_forward_handler(self, _event): method change_position_handler (line 185) | def change_position_handler(self, event): method stop (line 191) | def stop(self): method pause (line 198) | def pause(self): method resume (line 205) | def resume(self): method update (line 212) | def update(self): FILE: maestro/main.py function _play (line 29) | def _play( function cli (line 786) | def cli(ctx: click.Context): function add (line 1004) | def add( function remove (line 1369) | def remove(args, force, tag): function tag_ (line 1431) | def tag_(songs, tags): function untag (line 1456) | def untag(songs, tags, all_, force): function play (line 1626) | def play( function rename (line 1810) | def rename(original, new_name, renaming_tag): function search (line 1850) | def search(phrase, searching_for_tags): function list_ (line 2013) | def list_( function entry (line 2288) | def entry(songs, year): function recommend (line 2320) | def recommend(song, title): function clips_ (line 2373) | def clips_(songs: tuple[helpers.Song]): function clip_ (line 2425) | def clip_(song: helpers.Song, name, start, end, editor): function unclip (line 2537) | def unclip(songs: tuple[helpers.Song], names, all_, force): function set_clip (line 2621) | def set_clip(songs: tuple[helpers.Song], name, force): function metadata (line 2668) | def metadata(songs: tuple[helpers.Song], pairs, artist, album, album_art... function dir_ (line 2750) | def dir_(directory): function version (line 2777) | def version(): function login (line 2787) | def login(username): function logout (line 2806) | def logout(force): function signup (line 2834) | def signup(username, login_): function clear_logs (line 2849) | def clear_logs(): function download_ffmpeg (line 2865) | def download_ffmpeg(): function migrate (line 2876) | def migrate(): function format_data (line 2949) | def format_data(indent: int): function lyrics_ (line 3021) | def lyrics_( function transliterate (line 3269) | def transliterate(songs, lang, override, force): function translate (line 3444) | def translate(songs, save_, from_langs, to_lang, force, remove_): function user (line 3596) | def user(): FILE: scripts/custom_album_art.py function yt_embed_artwork (line 22) | def yt_embed_artwork(path_, yt_dlp_info): FILE: setup.py function read_requirements (line 15) | def read_requirements(path: str) -> list[str]: function main (line 44) | def main() -> None: