SYMBOL INDEX (455 symbols across 23 files) FILE: build.py class ProgressUpload (line 48) | class ProgressUpload: method __init__ (line 50) | def __init__(self, filename, chunk_size=1_024_000): method __iter__ (line 60) | def __iter__(self): method __len__ (line 79) | def __len__(self): function read_env (line 83) | def read_env(env_file='.env'): function add_new_changes (line 94) | def add_new_changes(prev_changes: str): function set_spec_debug (line 120) | def set_spec_debug(debug_option): function create_zip (line 132) | def create_zip(zip_filename, files_to_zip, compression=zipfile.ZIP_BZIP2): function update_versions (line 144) | def update_versions(version): function local_install (line 182) | def local_install(): function test (line 202) | def test(title, fn, assert_statement=False): function upgrade_yt_dlp (line 216) | def upgrade_yt_dlp(): FILE: build_files/TkinterDnD2/TkinterDnD.py function _require (line 36) | def _require(tkroot): class DnDEvent (line 46) | class DnDEvent: class DnDWrapper (line 74) | class DnDWrapper: method _substitute_dnd (line 85) | def _substitute_dnd(self, *args): method _dnd_bind (line 137) | def _dnd_bind(self, what, sequence, func, add, needcleanup=True): method dnd_bind (line 157) | def dnd_bind(self, sequence=None, func=None, add=None): method drag_source_register (line 175) | def drag_source_register(self, button=None, *dndtypes): method drag_source_unregister (line 206) | def drag_source_unregister(self): method drop_target_register (line 215) | def drop_target_register(self, *dndtypes): method drop_target_unregister (line 229) | def drop_target_unregister(self): method platform_independent_types (line 238) | def platform_independent_types(self, *dndtypes): method platform_specific_types (line 249) | def platform_specific_types(self, *dndtypes): method get_dropfile_tempdir (line 260) | def get_dropfile_tempdir(self): method set_dropfile_tempdir (line 271) | def set_dropfile_tempdir(self, tempdir): class Tk (line 281) | class Tk(tkinter.Tk, DnDWrapper): method __init__ (line 285) | def __init__(self, *args, **kw): class TixTk (line 290) | class TixTk(tkinter.Tk, DnDWrapper): method __init__ (line 294) | def __init__(self, *args, **kw): FILE: build_files/flatpak-pip-generator.py function get_pypi_url (line 55) | def get_pypi_url(name: str, filename: str) -> str: function get_tar_package_url_pypi (line 67) | def get_tar_package_url_pypi(name: str, version: str) -> str: function get_package_name (line 79) | def get_package_name(filename: str) -> str: function get_file_version (line 101) | def get_file_version(filename: str) -> str: function get_file_hash (line 110) | def get_file_hash(filename: str) -> str: function download_tar_pypi (line 122) | def download_tar_pypi(url: str, tempdir: str) -> None: function parse_continuation_lines (line 129) | def parse_continuation_lines(fin): function fprint (line 140) | def fprint(string: str) -> None: class OrderedDumper (line 443) | class OrderedDumper(yaml.Dumper): method increase_indent (line 444) | def increase_indent(self, flow=False, indentless=False): function dict_representer (line 447) | def dict_representer(dumper, data): FILE: conftest.py function pytest_addoption (line 4) | def pytest_addoption(parser): function ci (line 11) | def ci(pytestconfig): function pytest_collection_modifyitems (line 15) | def pytest_collection_modifyitems(config, items): FILE: src/audio_player.py class AudioPlayerUnit (line 32) | class AudioPlayerUnit(IntEnum): class AudioPlayer (line 37) | class AudioPlayer: method __init__ (line 40) | def __init__(self, skip_vlc=False): method has_media (line 46) | def has_media(self): method is_busy (line 49) | def is_busy(self): method play (line 53) | def play(self, media_path, start_playing=True, volume=None, start_from... method load (line 72) | def load(self, file_path): method pause (line 75) | def pause(self): method resume (line 84) | def resume(self): method stop (line 99) | def stop(self): method percent_to_db_percent (line 109) | def percent_to_db_percent(percent: float): method db_percent_to_percent (line 119) | def db_percent_to_percent(db: float): method set_volume (line 123) | def set_volume(self, volume): method get_volume (line 130) | def get_volume(self): method set_pos (line 137) | def set_pos(self, position, unit=AudioPlayerUnit.SECOND): method get_pos (line 141) | def get_pos(self, unit=AudioPlayerUnit.SECOND) -> float: method is_playing (line 148) | def is_playing(self): method is_paused (line 152) | def is_paused(self): method is_idle (line 155) | def is_idle(self): method toggle_mute (line 159) | def toggle_mute(self): method mute (line 162) | def mute(self): method unmute (line 165) | def unmute(self): method get_length (line 168) | def get_length(self, unit=AudioPlayerUnit.SECOND) -> float: method get_sample_rate (line 171) | def get_sample_rate(self): FILE: src/experiments.py function get_audio_wave (line 15) | def get_audio_wave(file): FILE: src/gui/__init__.py function focus_window (line 11) | def focus_window(window: Sg.Window, is_frozen=getattr(sys, 'frozen', Fal... function window_is_foreground (line 31) | def window_is_foreground(window: Sg.Window): FILE: src/gui/components.py function get_styled_button_font (line 11) | def get_styled_button_font(): function StyledButton (line 16) | def StyledButton(button_text, fill, text_color, tooltip=None, key=None, ... function IconButton (line 48) | def IconButton(image_data, key, tooltip, bg): function Checkbox (line 52) | def Checkbox(name, key, settings, on_right=False, tooltip=None): function QRCode (line 62) | def QRCode(text_to_encode): FILE: src/gui/views.py class GuiContext (line 61) | class GuiContext: method update (line 68) | def update(cls, text_color, background_colour, accent_color, experimen... function MiniPlayerWindow (line 75) | def MiniPlayerWindow(playing_status, settings, title: str, artist: str, ... function MainWindow (line 90) | def MainWindow(playing_status, settings, title: str, artist: str, album:... function MusicControls (line 145) | def MusicControls(settings, playing_status: PlayingStatus, prev_button_p... function ProgressBar (line 166) | def ProgressBar(settings, track_position, track_length, playing_status: ... function URLTab (line 190) | def URLTab(accent_color, bg): function QueueTab (line 201) | def QueueTab(queue, listbox_selected, listbox_height): function LibraryTab (line 243) | def LibraryTab(music_lib, listbox_height, alternate_bg, vertical_gui: bo... function PlaylistsTab (line 267) | def PlaylistsTab(playlists, vertical_gui: bool, show_album_art: bool): function TimerTab (line 317) | def TimerTab(timer, is_shut_down: bool, is_hibernate: bool, is_sleep: bo... function MetadataTab (line 343) | def MetadataTab(): function SettingsTab (line 361) | def SettingsTab(settings, web_ui_url): function VideoTab (line 441) | def VideoTab(devices): FILE: src/knownpaths.py class KNOWN_FOLDER_FLAG (line 37) | class KNOWN_FOLDER_FLAG: class GUID (line 56) | class GUID(ctypes.Structure): # [1] method __init__ (line 64) | def __init__(self, uuid_): class FOLDERID (line 78) | class FOLDERID: # [2] class UserHandle (line 175) | class UserHandle: # [3] class PathNotFoundException (line 193) | class PathNotFoundException(Exception): function sh_get_known_folder_path (line 197) | def sh_get_known_folder_path(folderid, user_handle=UserHandle.current, f... FILE: src/meta.py class State (line 79) | class State: FILE: src/modules/db.py class DatabaseConnection (line 11) | class DatabaseConnection: method create_connection (line 17) | def create_connection(): method __init__ (line 22) | def __init__(self, db_override=None): method __enter__ (line 26) | def __enter__(self): method __exit__ (line 30) | def __exit__(self, exc_type, exc_val, exc_tb): function init_db (line 89) | def init_db(): FILE: src/modules/iph1papi.py class NET_LUID (line 15) | class NET_LUID(Structure): class _MIB_IF_ROW2 (line 34) | class _MIB_IF_ROW2(Structure): class _MIB_IF_TABLE2 (line 86) | class _MIB_IF_TABLE2(Structure): function get_if_table2 (line 98) | def get_if_table2(): class MIB_IPINTERFACE_ROW (line 120) | class MIB_IPINTERFACE_ROW(Structure): class _MIB_IPINTERFACE_TABLE (line 160) | class _MIB_IPINTERFACE_TABLE(Structure): function get_ip_interface_table (line 169) | def get_ip_interface_table(): class IP_ADDRESS_STRING (line 195) | class IP_ADDRESS_STRING(Structure): class IP_MASK_STRING (line 201) | class IP_MASK_STRING(Structure): class IP_ADDR_STRING (line 207) | class IP_ADDR_STRING(Structure): class IP_ADAPTER_INFO (line 219) | class IP_ADAPTER_INFO(Structure): function get_adapters_info (line 254) | def get_adapters_info(): FILE: src/modules/playing_status.py class PlayingStatus (line 4) | class PlayingStatus: method __init__ (line 19) | def __init__(self): method busy (line 27) | def busy(self): method stopped (line 31) | def stopped(self): method playing (line 35) | def playing(self): method paused (line 39) | def paused(self): method stop (line 42) | def stop(self): method play (line 45) | def play(self, device_is_local: bool = True): method play_uri (line 48) | def play_uri(self, position, track_length, device_is_local: bool): method pause (line 56) | def pause(self): method play_system_audio (line 59) | def play_system_audio(self): method __repr__ (line 64) | def __repr__(self): method __eq__ (line 67) | def __eq__(self, other): FILE: src/modules/resolution_switcher.py class SYSTEM_POWER_STATUS (line 24) | class SYSTEM_POWER_STATUS(ctypes.Structure): function is_plugged_in (line 41) | def is_plugged_in(throw_error=True): function get_aspect_ratio (line 56) | def get_aspect_ratio(width, height): function get_current_res (line 60) | def get_current_res(w=None, h=None): function get_initial_res (line 74) | def get_initial_res(): function get_initial_dpi_scale (line 85) | def get_initial_dpi_scale(): function get_all_refresh_rates (line 95) | def get_all_refresh_rates(): function get_all_resolutions (line 108) | def get_all_resolutions(): function get_recommended_dpi_idx (line 146) | def get_recommended_dpi_idx(): function calc_dpi_scale (line 153) | def calc_dpi_scale(new_w, _): function set_resolution (line 162) | def set_resolution(width: int, height: int, dpi_scale: int, refresh_rate... function set_res_curry (line 186) | def set_res_curry(width, height, dpi_scale): function fmt_res (line 191) | def fmt_res(width, height, show_width=False): function on_exit (line 196) | def on_exit(): FILE: src/modules/url_metadata.py function tbr_audio_key (line 16) | def tbr_audio_key(item): function tbr_video_key (line 19) | def tbr_video_key(item): function ydl_get_metadata (line 22) | def ydl_get_metadata(item, duration_helper=True): class URLMetadata (line 68) | class URLMetadata: method __init__ (line 77) | def __init__(self, src: str, url_type: str, title: str, artist: str, a... method __hash__ (line 98) | def __hash__(self) -> int: method __getitem__ (line 101) | def __getitem__(self, key): method __setitem__ (line 111) | def __setitem__(self, key, value): method __delitem__ (line 122) | def __delitem__(self, key): method __iter__ (line 128) | def __iter__(self): method __len__ (line 131) | def __len__(self): method keys (line 134) | def keys(self): method values (line 137) | def values(self): method items (line 140) | def items(self): method get (line 143) | def get(self, key, default=None): method save_to_db (line 148) | def save_to_db(self, cur): method from_db (line 174) | def from_db(cls, conn, url) -> Self | None: method from_dict (line 203) | def from_dict(cls, data): method hash (line 210) | def hash(self) -> str: method image_cache_path (line 214) | def image_cache_path(self): method is_expired (line 218) | def is_expired(self): method get_cover_image (line 223) | def get_cover_image(self) -> bytes: FILE: src/modules/win32_media_controls.py class SystemMediaTransportControlsButton (line 9) | class SystemMediaTransportControlsButton(enum.IntEnum): class SystemMediaControls (line 22) | class SystemMediaControls: method __init__ (line 23) | def __init__(self, on_event): method _on_btn_press (line 43) | def _on_btn_press(self, sender, args: media.SystemMediaTransportContro... method set_source (line 46) | def set_source(self, source): method set_playing (line 54) | def set_playing(self): method set_paused (line 59) | def set_paused(self): method set_stopped (line 64) | def set_stopped(self): method set_closed (line 67) | def set_closed(self): method set_metadata (line 72) | def set_metadata(self, title, artist, album, thumb_uri: str): method update_time (line 89) | def update_time(self): FILE: src/music_caster.py function create_pid_file (line 43) | def create_pid_file(port=None): function parse_pid_file (line 50) | def parse_pid_file(): function ensure_single_instance (line 62) | def ensure_single_instance(debugging=False): function json_dumps (line 168) | def json_dumps(d): function activate_instance (line 171) | def activate_instance(port=2001, default_timeout=0.5, to_port=2004): function get_downloads_folder (line 407) | def get_downloads_folder(): function get_installer_path (line 416) | def get_installer_path(): function get_default_music_folder (line 423) | def get_default_music_folder(): function get_line_number (line 461) | def get_line_number(): function tray_notify (line 466) | def tray_notify(message, title='Music Caster', context=''): function close_tray (line 473) | def close_tray(): function save_settings (line 478) | def save_settings(): function is_debug (line 506) | def is_debug(): function refresh_tray (line 510) | def refresh_tray(refresh_devices=False): function refresh_tray_icon (line 576) | def refresh_tray_icon(): function update_settings (line 581) | def update_settings(settings_key, new_value): function save_queues (line 596) | def save_queues(): function update_volume (line 610) | def update_volume(new_vol, _from=''): function cycle_repeat (line 629) | def cycle_repeat(): function create_support_email_url (line 636) | def create_support_email_url(): function handle_exception (line 648) | def handle_exception(e: Exception, restart_program=False) -> bool: function get_current_art (line 696) | def get_current_art() -> bytes: function get_metadata_wrapped (line 719) | def get_metadata_wrapped(file_path: str) -> dict: # keys: title, artist... function get_uri_metadata (line 734) | def get_uri_metadata(uri, read_file=True): function get_current_metadata (line 762) | def get_current_metadata() -> dict | URLMetadata: function get_audio_uris (line 770) | def get_audio_uris(uris: Iterable, scan_uris=True, ignore_m3u=False, par... function index_all_tracks (line 809) | def index_all_tracks(update_global=True, ignore_files: set | None = None... function download (line 878) | def download(url, outfile): function load_settings (line 890) | def load_settings(first_load=False): # up to 0.4 seconds function page_not_found (line 977) | def page_not_found(_): function upload_files (line 982) | def upload_files(): # web GUI function get_request_data (line 994) | def get_request_data(): function web_action (line 1001) | def web_action(command): function web_index (line 1048) | def web_index(): # web GUI function api_state (line 1104) | def api_state(): function api_play (line 1115) | def api_play(): function handle_500 (line 1165) | def handle_500(_e): function api_get_debug_info (line 1179) | def api_get_debug_info(): function api_running (line 1190) | def api_running(): function api_exit (line 1200) | def api_exit(): function api_change_setting (line 1206) | def api_change_setting(): function api_refresh_devices (line 1227) | def api_refresh_devices(): function api_rescan_library (line 1233) | def api_rescan_library(): function api_get_devices (line 1239) | def api_get_devices(): function api_change_device (line 1253) | def api_change_device(_uuid): function cancel_timer (line 1257) | def cancel_timer(): function set_timer (line 1263) | def set_timer(val): function api_set_timer (line 1292) | def api_set_timer(): function get_cover_jpg_data (line 1304) | def get_cover_jpg_data(file_path) -> io.BytesIO: function report_album_art_buffer_error (line 1314) | def report_album_art_buffer_error(file_path: str): function api_get_file (line 1323) | def api_get_file(): function api_get_dz (line 1340) | def api_get_dz(): function api_system_audio (line 1378) | def api_system_audio(get_thumb=''): function cast_try_reconnect (line 1388) | def cast_try_reconnect(switch_twice=False): function cast_info_sorter (line 1411) | def cast_info_sorter(ci1: CastInfo, ci2: CastInfo): function get_devices (line 1426) | def get_devices(): class UpdateFailed (line 1433) | class UpdateFailed(Exception): class StatusCastListener (line 1437) | class StatusCastListener(CastStatusListener): method __init__ (line 1440) | def __init__(self, _cast): method new_cast_status (line 1444) | def new_cast_status(self, status): class MediaCastListener (line 1448) | class MediaCastListener(MediaStatusListener): method __init__ (line 1449) | def __init__(self, _cast): method new_media_status (line 1453) | def new_media_status(self, status): method load_media_failed (line 1456) | def load_media_failed(self, item, error_code): class MyCastListener (line 1459) | class MyCastListener(pychromecast.discovery.AbstractCastListener): method add_cast (line 1461) | def add_cast(self, uuid, _service: str): method remove_cast (line 1482) | def remove_cast(self, uuid, _service: str, cast_info): method update_cast (line 1490) | def update_cast(self, uuid, _service: str): function get_device (line 1507) | def get_device(device_uuid): function change_device (line 1512) | def change_device(new_uuid='local', unresponsive_cast=False): function un_shuffle_queue (line 1580) | def un_shuffle_queue(): function shuffle_queue (line 1604) | def shuffle_queue(): function format_pl_lb (line 1624) | def format_pl_lb(tracks): function format_uri (line 1650) | def format_uri(uri: str, use_basename=False, _for=''): function create_track_list (line 1689) | def create_track_list(): function update_gui (line 1716) | def update_gui(): function after_play (line 1763) | def after_play(title, artists: str, album, autoplay, switching_device): function play_system_audio (line 1803) | def play_system_audio(switching_device=False, show_error=False): function url_expired (line 1853) | def url_expired(uri): function get_url_metadata (line 1861) | def get_url_metadata(url, fetch_art=True) -> list[dict | URLMetadata]: function play_url (line 2098) | def play_url(position=0, autoplay=True, switching_device=False, show_err... function play (line 2174) | def play(position=0, autoplay=True, switching_device=False, show_error=F... function metadata_key (line 2293) | def metadata_key(filename, album_sort=True): function play_uris (line 2303) | def play_uris(uris: Iterable, return_if_empty=True, queue_uris=False, function play_all (line 2386) | def play_all(starting_files: Iterable = None, queue_only=False): function queue_all (line 2412) | def queue_all(): function open_dialog (line 2417) | def open_dialog(title, for_dir=False, filetypes=None, single_file=False): function file_action (line 2443) | def file_action(action='pf'): function video_file_action (line 2465) | def video_file_action(): function folder_action (line 2480) | def folder_action(action='pf'): function get_track_position (line 2505) | def get_track_position(): function pause (line 2515) | def pause(source=''): function resume (line 2566) | def resume(source=''): function stop (line 2608) | def stop(stopped_from: str, stop_cast=True): function set_pos (line 2646) | def set_pos(new_position: int): function next_track (line 2699) | def next_track(from_timeout=False, times=1, forced=False, ignore_timesta... function prev_track (line 2770) | def prev_track(times=1, forced=False, ignore_timestamps=False): class UpdateChecker (line 2796) | class UpdateChecker(threading.Timer): method __init__ (line 2801) | def __init__(self): method run (line 2807) | def run(self): method check_for_updates (line 2811) | def check_for_updates(self): method auto_update (line 2823) | def auto_update(self, install_update=True, from_gui=False): function background_thread (line 2897) | def background_thread(): function on_smtc_btn_press (line 2952) | def on_smtc_btn_press(event: SystemMediaTransportControlsButton): function on_press (line 2964) | def on_press(key): function get_window_location (line 2986) | def get_window_location(): function metadata_process_file (line 3003) | def metadata_process_file(file: None | os.PathLike, callback_source): function add_music_folder (line 3033) | def add_music_folder(folders): function set_callbacks (line 3046) | def set_callbacks(): function activate_gui (line 3158) | def activate_gui(selected_tab=None, url_option='url_play'): function uri_at_idx (line 3254) | def uri_at_idx(idx=0, offset=None): function locate_uri (line 3267) | def locate_uri(selected_track_index=None, uri=None): function exit_program (line 3297) | def exit_program(quick_exit=False): function playlist_action (line 3325) | def playlist_action(playlist_name, action='play'): function other_tray_actions (line 3341) | def other_tray_actions(_tray_item): function event_is_close (line 3355) | def event_is_close(main_event, main_values): function update_playlist_ui (line 3360) | def update_playlist_ui(set_to_index=None): function read_main_window (line 3366) | def read_main_window(): function start_on_login_modifications (line 4222) | def start_on_login_modifications(): function cast_monitor (line 4235) | def cast_monitor(sent: bool = True, msg: dict | None = None, is_callback... function handle_action (line 4323) | def handle_action(action): FILE: src/shared.py function get_running_processes (line 9) | def get_running_processes(look_for='', pid=None, add_exe=True): function is_already_running (line 48) | def is_already_running(look_for='Music Caster', threshold=1, pid=None) -... FILE: src/sys_tray.py function system_tray (line 13) | def system_tray(main_queue: mp.Queue, child_queue: mp.Queue): FILE: src/test_harness.py function test_get_running_processes (line 192) | def test_get_running_processes(): function test_get_file_name (line 201) | def test_get_file_name(file_path, expected): function test_display_lang (line 205) | def test_display_lang(): function test_internationalization (line 211) | def test_internationalization(): function test_get_lang_pack (line 220) | def test_get_lang_pack(code): function test_get_translation (line 230) | def test_get_translation(code): function test_valid_audio_file (line 256) | def test_valid_audio_file(ext): function test_audio_length (line 267) | def test_audio_length(file): function test_audio_length_fail (line 276) | def test_audio_length_fail(file): function test_default_output_device (line 287) | def test_default_output_device(): function test_natural_sort (line 300) | def test_natural_sort(unsorted, expected): function test_valid_color_code (line 319) | def test_valid_color_code(color_code): function test_invalid_color_codes (line 339) | def test_invalid_color_codes(color_code): function test_get_metadata (line 348) | def test_get_metadata(file, expected, expected_first_artist): function test_ipv4 (line 358) | def test_ipv4(): function test_ipv6 (line 362) | def test_ipv6(): function test_mac (line 366) | def test_mac(): function test_ipv4_wifi_match (line 370) | def test_ipv4_wifi_match(): function test_ipv4_general_match (line 377) | def test_ipv4_general_match(): function test_better_shuffle (line 388) | def test_better_shuffle(): function test_is_already_running (line 396) | def test_is_already_running(): function test_yt_id (line 414) | def test_yt_id(url, expected_id): function test_custom_art (line 418) | def test_custom_art(): function test_album_art (line 423) | def test_album_art(file): function test_repeat_img_tooltip (line 436) | def test_repeat_img_tooltip(option, expected_img, expected_label): function test_resize_img (line 441) | def test_resize_img(size): function test_spotify (line 458) | def test_spotify(url): function test_deezer (line 483) | def test_deezer(url): function running_in_ci (line 495) | def running_in_ci(request): function test_ydl (line 504) | def test_ydl(running_in_ci, url): function test_get_proxies (line 533) | def test_get_proxies(): function test_fix_path (line 541) | def test_fix_path(path, expected): function test_fix_path_win32 (line 552) | def test_fix_path_win32(path, expected): function test_progress_bar_texts (line 570) | def test_progress_bar_texts(position, length, expected): function test_export_playlist (line 574) | def test_export_playlist(): function test_youtube_comments (line 584) | def test_youtube_comments(url): function uploading_after (line 590) | def uploading_after(request): function test_auto_update (line 595) | def test_auto_update(request): function test_get_latest_release (line 599) | def test_get_latest_release(uploading_after, test_auto_update): function test_database (line 613) | def test_database(): FILE: src/updater.go function loadSettings (line 18) | func loadSettings() map[string]interface{} { function main (line 31) | func main() { function extractZip (line 93) | func extractZip(src string) error { function download (line 153) | func download(url string, filepath string) { FILE: src/utils.py class SystemAudioRecorder (line 72) | class SystemAudioRecorder: method __init__ (line 76) | def __init__(self): method get_audio_data (line 86) | def get_audio_data(self, delay=0): method _start_recording (line 115) | def _start_recording(self): method create_stream (line 129) | def create_stream(self, output_device): method get_wav_header (line 142) | def get_wav_header(self): method stop (line 159) | def stop(self): method start (line 162) | def start(self): class InvalidAudioFile (line 173) | class InvalidAudioFile(Exception): class Unknown (line 177) | class Unknown(str): method __new__ (line 180) | def __new__(cls, _property): method __repr__ (line 185) | def __repr__(self): method __str__ (line 188) | def __str__(self): method __lt__ (line 191) | def __lt__(self, other): method __le__ (line 194) | def __le__(self, other): method __gt__ (line 197) | def __gt__(self, other): method __ge__ (line 200) | def __ge__(self, other): method __eq__ (line 203) | def __eq__(self, other): method __ne__ (line 206) | def __ne__(self, other): method split (line 209) | def split(self, *args, **kwargs): method __len__ (line 212) | def __len__(self): function exception_wrapper (line 216) | def exception_wrapper(f): class DiscordPresence (line 226) | class DiscordPresence: method init_rpc (line 235) | def init_rpc(cls): method connect (line 241) | def connect(cls, confirm_connect=True): method update (line 248) | def update(cls, state: str, details: str, large_text: str, end: int = 0, method clear (line 257) | def clear(cls, confirm=True): method close (line 263) | def close(cls): class Device (line 272) | class Device: method __init__ (line 275) | def __init__(self, cast_info_or_none=None): method id (line 281) | def id(self): method LOCAL_DEVICE (line 285) | def LOCAL_DEVICE(cls): method name (line 289) | def name(self): method as_tray_name (line 294) | def as_tray_name(self, active_id): method tray_key (line 300) | def tray_key(self): method gui_key (line 304) | def gui_key(self): method as_tray_item (line 307) | def as_tray_item(self, active_id) -> tuple: method __eq__ (line 310) | def __eq__(self, other): method __str__ (line 313) | def __str__(self): method __repr__ (line 316) | def __repr__(self): function get_file_name (line 320) | def get_file_name(file_path): return Path(file_path).stem function timing (line 324) | def timing(f): function time_cache (line 334) | def time_cache(max_age, maxsize=None, typed=False): function get_languages (line 362) | def get_languages(): function get_lang_pack (line 367) | def get_lang_pack(lang): function get_display_lang (line 384) | def get_display_lang(): function log_translation_error (line 393) | def log_translation_error(string, lang): function get_translation (line 398) | def get_translation(string, lang='', as_title=False): function t (line 414) | def t(string, as_title=False): function natural_key_file (line 418) | def natural_key_file(filename): function valid_color_code (line 424) | def valid_color_code(code): function get_audio_length (line 429) | def get_audio_length(file_path) -> int: function valid_audio_file (line 455) | def valid_audio_file(uri) -> bool: function set_metadata (line 463) | def set_metadata(file_path: str, metadata: dict): function get_metadata (line 566) | def get_metadata(file_path: str): function open_in_browser (line 645) | def open_in_browser(url): function get_album_art (line 651) | def get_album_art(file_path: str, folder_cover_override=False) -> Tuple[... function fix_path (line 693) | def fix_path(path, by_os=True): return str(Path(path)) if by_os else pat... function get_first_artist (line 696) | def get_first_artist(artists: str) -> str: return artists.split(', ', 1)[0] function get_ipv6 (line 699) | def get_ipv6(): function clean_ipconfig (line 724) | def clean_ipconfig(ipconfig_raw): function get_ipv4 (line 738) | def get_ipv4(): function get_lan_ip (line 760) | def get_lan_ip() -> str: function get_mac (line 764) | def get_mac(): return ':'.join(['{:02x}'.format((getnode() >> ele) & 0xf... function better_shuffle (line 767) | def better_shuffle(seq, first=0, last=-1): function dz (line 784) | def dz(): function ydl (line 790) | def ydl(proxy=None, quiet=False): function ydl_extract_info (line 802) | def ydl_extract_info(url, quiet=False): function get_yt_id (line 816) | def get_yt_id(url, ignore_playlist=False): function get_yt_urls (line 834) | def get_yt_urls(video_id): function is_os_64bit (line 847) | def is_os_64bit(): return platform.machine().endswith('64') function delete_sub_key (line 850) | def delete_sub_key(root, current_key): function add_reg_handlers (line 865) | def add_reg_handlers(path_to_exe, add_folder_context=True): function get_default_output_device (line 962) | def get_default_output_device(): function resize_img (line 987) | def resize_img(base64data: bytes, bg, new_size=COVER_NORMAL, default_art... function export_playlist (line 1018) | def export_playlist(playlist_name, uris): function parse_m3u (line 1032) | def parse_m3u(playlist_file): function get_latest_release (line 1042) | def get_latest_release(ver, this_version, force=False): function get_proxies (line 1065) | def get_proxies(add_local=True): function get_proxy (line 1097) | def get_proxy(add_local=True): function get_spotify_headers (line 1103) | def get_spotify_headers(): function search_album_art_spotify (line 1111) | def search_album_art_spotify(title, artist, mkt): function parse_spotify_track (line 1124) | def parse_spotify_track(track_obj, parent_url='') -> dict: function get_spotify_track (line 1150) | def get_spotify_track(url): function get_spotify_album (line 1161) | def get_spotify_album(url): function get_spotify_playlist (line 1168) | def get_spotify_playlist(url): function get_spotify_tracks (line 1179) | def get_spotify_tracks(url): function get_cookies (line 1193) | def get_cookies(domain_contains, cookie_name='', return_first=True, retu... function parse_deezer_page (line 1218) | def parse_deezer_page(url): function parse_deezer_track (line 1236) | def parse_deezer_track(track_obj) -> dict: function set_dz_url (line 1275) | def set_dz_url(metadata): function get_deezer_track (line 1281) | def get_deezer_track(url): function get_deezer_album (line 1289) | def get_deezer_album(url): function get_deezer_playlist (line 1301) | def get_deezer_playlist(url): function get_deezer_tracks (line 1314) | def get_deezer_tracks(url, login=True): function custom_art (line 1330) | def custom_art(text): function get_youtube_comments (line 1361) | def get_youtube_comments(url, limit=-1): # -> generator function timestamp_to_time (line 1366) | def timestamp_to_time(text): function get_video_timestamps (line 1372) | def get_video_timestamps(video_info): function repeat_img_tooltip (line 1396) | def repeat_img_tooltip(repeat_setting): function create_progress_bar_texts (line 1404) | def create_progress_bar_texts(position, length): function truncate_title (line 1422) | def truncate_title(title): function drop_target_register (line 1430) | def drop_target_register(widget, *dndtypes): function dnd_bind (line 1434) | def dnd_bind(widget, sequence=None, func=None, add=None, need_cleanup=Tr... function get_cut_text (line 1450) | def get_cut_text(window, key): function start_on_login_win32 (line 1465) | def start_on_login_win32(working_dir, create_key=True, is_debug=True): function rm_old_startup_shortcuts (line 1481) | def rm_old_startup_shortcuts(): function startfile (line 1491) | def startfile(file): function add_to_path (line 1503) | def add_to_path(path): function cmd_exists (line 1510) | def cmd_exists(cmd): function install_phantomjs (line 1518) | def install_phantomjs(install_directory):