SYMBOL INDEX (416 symbols across 45 files) FILE: mps_youtube/c.py function c (line 20) | def c(colour, text): function charcount (line 25) | def charcount(s): FILE: mps_youtube/cache.py function load (line 13) | def load(): function save (line 44) | def save(): FILE: mps_youtube/commands/__init__.py function command (line 25) | def command(regex, *commands): FILE: mps_youtube/commands/album_search.py function show_message (line 17) | def show_message(message, col=c.r, update=False): function _do_query (line 26) | def _do_query(url, query, err='query failed', report=False): function _best_song_match (line 52) | def _best_song_match(songs, title, duration, titleweight, durationweight): function _match_tracks (line 104) | def _match_tracks(artist, title, mb_tracks): function _get_mb_tracks (line 145) | def _get_mb_tracks(albumid): function _get_mb_album (line 178) | def _get_mb_album(albumname, **kwa): function search_album (line 210) | def search_album(term): FILE: mps_youtube/commands/config.py function showconfig (line 6) | def showconfig(): function setconfigtemp (line 56) | def setconfigtemp(key, val): function setconfig (line 61) | def setconfig(key, val, is_temp=False): function show_encs (line 93) | def show_encs(): FILE: mps_youtube/commands/download.py function download (line 18) | def download(dltype, num): function down_many (line 130) | def down_many(dltype, choice, subdir=None): function down_plist (line 194) | def down_plist(dltype, parturl): function down_user_pls (line 209) | def down_user_pls(dltype, user): function _make_fname (line 218) | def _make_fname(song, ext=None, av=None, subdir=None): function extract_metadata (line 239) | def extract_metadata(name): function remux_audio (line 256) | def remux_audio(filename, title): function transcode (line 285) | def transcode(filename, enc_data): function external_download (line 321) | def external_download(song, filename, url): function _download (line 340) | def _download(song, filename, url=None, audio=False, allow_transcode=True): function menu_prompt (line 412) | def menu_prompt(model, prompt=" > ", rows=None, header=None, theading=None, function prompt_dl (line 445) | def prompt_dl(song): function gen_dl_text (line 475) | def gen_dl_text(ddata, song, p): function get_dl_data (line 505) | def get_dl_data(song, mediatype="any"): function dl_url (line 545) | def dl_url(url): function da_url (line 558) | def da_url(url): FILE: mps_youtube/commands/generate_playlist.py function generate_playlist (line 14) | def generate_playlist(sourcefile): function read_sourcefile (line 34) | def read_sourcefile(filename): function check_sourcefile (line 46) | def check_sourcefile(filename): function create_playlist (line 51) | def create_playlist(queries, title=''): function find_best_match (line 70) | def find_best_match(query): function random_plname (line 82) | def random_plname(): function description_generator (line 89) | def description_generator(text): FILE: mps_youtube/commands/lastfm.py function init_network (line 14) | def init_network(verbose=True): function scrobble_track (line 43) | def scrobble_track(artist, album, track): function set_now_playing (line 54) | def set_now_playing(artist, track): FILE: mps_youtube/commands/local_playlist.py function playlist_remove (line 11) | def playlist_remove(name): function playlist_add (line 30) | def playlist_add(nums, playlist): function playlist_rename_idx (line 53) | def playlist_rename_idx(_id, name): function playlist_rename (line 60) | def playlist_rename(playlists_): function add_rm_all (line 80) | def add_rm_all(action): function save_last (line 97) | def save_last(): function open_save_view (line 128) | def open_save_view(action, name): function open_view_bynum (line 169) | def open_view_bynum(action, num): function ls (line 177) | def ls(): function vp (line 190) | def vp(): FILE: mps_youtube/commands/misc.py function clearcache (line 32) | def clearcache(): function show_help (line 41) | def show_help(choice): function quits (line 48) | def quits(showlogo=True): function _format_comment (line 78) | def _format_comment(n, qnt, author_name, published_date, content, reply=... function _fetch_commentreplies (line 86) | def _fetch_commentreplies(parentid): function fetch_comments (line 93) | def fetch_comments(item): function comments (line 138) | def comments(number): function clipcopy_video (line 150) | def clipcopy_video(num): function clipcopy_stream (line 185) | def clipcopy_stream(num): function video_info (line 217) | def video_info(num): function stream_info (line 283) | def stream_info(num): function view_history (line 307) | def view_history(duplicates=True): function recent_history (line 334) | def recent_history(): function clear_history (line 340) | def clear_history(): FILE: mps_youtube/commands/play.py function play_loaded (line 13) | def play_loaded(): function play_pl (line 19) | def play_pl(name): function play (line 42) | def play(pre, choice, post=""): function play_all (line 125) | def play_all(pre, choice, post=""): function play_url (line 132) | def play_url(url: str, override: T.Any): function browser_play (line 155) | def browser_play(number): FILE: mps_youtube/commands/search.py function _display_search_results (line 34) | def _display_search_results(progtext, wdata, msg=None, failmsg=None): function token (line 58) | def token(page): function userdata_cached (line 107) | def userdata_cached(userterm): function cache_userdata (line 113) | def cache_userdata(userterm, username, channel_id): function channelfromname (line 125) | def channelfromname(user): function channelsearch (line 149) | def channelsearch(q_user): function usersearch (line 175) | def usersearch(q_user, identify='forUsername'): function usersearch_id (line 192) | def usersearch_id(user, channel_id, term): function related_search (line 223) | def related_search(vitem): function livestream_category_search (line 240) | def livestream_category_search(term): function search (line 277) | def search(term): function user_pls (line 308) | def user_pls(user): function pl_search (line 314) | def pl_search(term, page=0, splash=True, is_user=False): function get_pl_from_json (line 358) | def get_pl_from_json(pldata): function get_track_id_from_json (line 382) | def get_track_id_from_json(item): function get_tracks_from_json (line 398) | def get_tracks_from_json(jsons): function num_repr (line 456) | def num_repr(num): function user_more (line 479) | def user_more(num): function related (line 502) | def related(num): function mix (line 516) | def mix(num): function yt_url (line 535) | def yt_url(url: str, print_title: bool = False): function yt_url_file (line 582) | def yt_url_file(file_name): FILE: mps_youtube/commands/songlist.py function paginatesongs (line 10) | def paginatesongs(func, page=0, splash=True, dumps=False, function plist (line 79) | def plist(parturl): function songlist_rm_add (line 99) | def songlist_rm_add(action, songrange): function songlist_mv_sw (line 134) | def songlist_mv_sw(action, a, b): function nextprev (line 150) | def nextprev(np, page=None): function dump (line 190) | def dump(un): function shuffle_fn (line 205) | def shuffle_fn(): function shuffle_playlist (line 212) | def shuffle_playlist(): function reverse_songs (line 223) | def reverse_songs(): function reverse_songs_range (line 231) | def reverse_songs_range(lower, upper): function reverse_playlist (line 242) | def reverse_playlist(): FILE: mps_youtube/commands/spotify_playlist.py function generate_credentials (line 21) | def generate_credentials(): function grab_playlist (line 29) | def grab_playlist(spotify, playlist): function show_message (line 61) | def show_message(message, col=c.r, update=False): function _best_song_match (line 70) | def _best_song_match(songs, title, duration, titleweight, durationweight): function _match_tracks (line 122) | def _match_tracks(tracks): function search_user (line 161) | def search_user(term): function search_playlist (line 214) | def search_playlist(term, spotify=None): FILE: mps_youtube/config.py class ConfigItem (line 22) | class ConfigItem: method __init__ (line 26) | def __init__(self, name, value, minval=None, maxval=None, check_fn=None, method get (line 45) | def get(self): method display (line 53) | def display(self): method display_temp (line 58) | def display_temp(self): method display_helper (line 62) | def display_helper(self, retval): method set (line 71) | def set(self, value, is_temp=False): function set_save (line 168) | def set_save(self, value, is_temp): function check_console_width (line 176) | def check_console_width(val): function check_ddir (line 202) | def check_ddir(d): function check_win_pos (line 214) | def check_win_pos(pos): function check_win_size (line 233) | def check_win_size(size): function check_encoder (line 249) | def check_encoder(option): function check_player (line 264) | def check_player(player): function check_lastfm_password (line 293) | def check_lastfm_password(password): class _Config (line 301) | class _Config: method __getitem__ (line 353) | def __getitem__(self, key): method __getattr__ (line 360) | def __getattr__(self, name): method __iter__ (line 368) | def __iter__(self): method save (line 371) | def save(self): method convert_old_cf_to_json (line 380) | def convert_old_cf_to_json(self): method load (line 392) | def load(self): FILE: mps_youtube/content.py class Content (line 18) | class Content: class PaginatedContent (line 22) | class PaginatedContent(Content): method getPage (line 23) | def getPage(self, page): method numPages (line 26) | def numPages(self): class LineContent (line 30) | class LineContent(PaginatedContent): method getPage (line 31) | def getPage(self, page): method numPages (line 37) | def numPages(self): method get_text (line 40) | def get_text(self, s, e): method get_count (line 43) | def get_count(self): class StringContent (line 47) | class StringContent(LineContent): method __init__ (line 48) | def __init__(self, string): method get_text (line 51) | def get_text(self, s, e): method get_count (line 54) | def get_count(self): function page_msg (line 60) | def page_msg(page=0): function generate_songlist_display (line 77) | def generate_songlist_display(song=False, zeromsg=None): function generate_playlist_display (line 141) | def generate_playlist_display(): function _get_user_columns (line 168) | def _get_user_columns(): function logo (line 205) | def logo(col=None, version=""): function playlists_display (line 231) | def playlists_display(): function qrcode_display (line 253) | def qrcode_display(url): function get_last_query (line 263) | def get_last_query(): FILE: mps_youtube/contentquery.py class ContentQuery (line 12) | class ContentQuery: method __init__ (line 24) | def __init__(self, datatype, api, query): method __getitem__ (line 36) | def __getitem__(self, iid): method count (line 46) | def count(self): method __len__ (line 50) | def __len__(self): method _perform_api_call (line 53) | def _perform_api_call(self): FILE: mps_youtube/description_parser.py function calculate_certainty (line 8) | def calculate_certainty(line): function has_artist (line 27) | def has_artist(text): function strip_string (line 33) | def strip_string(text, single=False): function long_substr (line 55) | def long_substr(data): function is_substr (line 66) | def is_substr(find, data): function artist_from_title (line 76) | def artist_from_title(title): function parse (line 117) | def parse(text, title="Unknown"): FILE: mps_youtube/helptext.py function helptext (line 14) | def helptext(): function get_help (line 334) | def get_help(choice): function get_changelog (line 409) | def get_changelog(): function get_changelog_local (line 419) | def get_changelog_local(): function check_tor (line 427) | def check_tor(): FILE: mps_youtube/history.py function add (line 10) | def add(song): function load (line 20) | def load(): function save (line 33) | def save(): function _convert_to_m3u (line 44) | def _convert_to_m3u(): FILE: mps_youtube/init.py function init (line 33) | def init(): function _init_transcode (line 107) | def _init_transcode(): function _init_readline (line 208) | def _init_readline(): function _process_cl_args (line 221) | def _process_cl_args(): function _get_version_info (line 267) | def _get_version_info(): FILE: mps_youtube/listview/__init__.py class ListView (line 14) | class ListView(content.PaginatedContent): method __init__ (line 47) | def __init__(self, columns, objects, function_call=None): method numPages (line 63) | def numPages(self): method getPage (line 67) | def getPage(self, page): method _page_slice (line 71) | def _page_slice(self): method content (line 75) | def content(self): method _play (line 141) | def _play(self, _, choice, __): # pre, choice, post method views_per_page (line 159) | def views_per_page(self): FILE: mps_youtube/listview/base.py class ListViewItem (line 1) | class ListViewItem: method __init__ (line 7) | def __init__(self, data): method __getattr__ (line 10) | def __getattr__(self, key): method length (line 13) | def length(self, _=0): FILE: mps_youtube/listview/livestream.py class ListLiveStream (line 5) | class ListLiveStream(ListViewItem): method ytid (line 8) | def ytid(self, lngt=10): method ret (line 12) | def ret(self): method title (line 16) | def title(self, lngt=10): method description (line 19) | def description(self, lngt=10): method return_field (line 24) | def return_field(): FILE: mps_youtube/listview/songtitle.py class ListSongtitle (line 5) | class ListSongtitle(ListViewItem): method __init__ (line 12) | def __init__(self, data, certainty=1.0): method artist (line 17) | def artist(self, l=10): method title (line 21) | def title(self, l=10): method checked (line 25) | def checked(self, l=10): method certainty (line 29) | def certainty(self): method is_checked (line 33) | def is_checked(self): method toggle (line 37) | def toggle(self): method ret (line 41) | def ret(self): method return_field (line 46) | def return_field(): FILE: mps_youtube/listview/user.py class ListUser (line 4) | class ListUser(ListViewItem): method id (line 8) | def id(self, length=0): method name (line 12) | def name(self, length=10): method description (line 16) | def description(self, length=10): method kind (line 20) | def kind(self, length=10): method ret (line 26) | def ret(self): method return_field (line 31) | def return_field(): FILE: mps_youtube/main.py function matchfunction (line 56) | def matchfunction(func, regex, userinput): function prompt_for_exit (line 102) | def prompt_for_exit(): function main (line 117) | def main(): FILE: mps_youtube/mpris.py class Mpris2Controller (line 44) | class Mpris2Controller: method __init__ (line 50) | def __init__(self): method release (line 62) | def release(self): method acquire (line 72) | def acquire(self): method run (line 79) | def run(self, connection): method listenstatus (line 89) | def listenstatus(self, conn): method _acquire_bus (line 111) | def _acquire_bus(self): method _add_interfaces (line 121) | def _add_interfaces(self): method _run_main_loop (line 127) | def _run_main_loop(self): class Mpris2MediaPlayer (line 138) | class Mpris2MediaPlayer(dbus.service.Object): method __init__ (line 147) | def __init__(self, bus): method bindmpv (line 193) | def bindmpv(self, sockpath): method bindfifo (line 233) | def bindfifo(self, fifopath, mpv=False): method setproperty (line 246) | def setproperty(self, name: str, val: T.Optional[T.Any]): method _sendcommand (line 322) | def _sendcommand(self, command): method Raise (line 345) | def Raise(self): method Quit (line 353) | def Quit(self): method Next (line 364) | def Next(self): method Previous (line 371) | def Previous(self): method Pause (line 378) | def Pause(self): method PlayPause (line 390) | def PlayPause(self): method Stop (line 401) | def Stop(self): method Play (line 408) | def Play(self): method Seek (line 419) | def Seek(self, offset): method SetPosition (line 430) | def SetPosition(self, track_id, position): method OpenUri (line 445) | def OpenUri(self, uri): method Seeked (line 455) | def Seeked(self, position): method Get (line 471) | def Get(self, interface_name, property_name): method GetAll (line 479) | def GetAll(self, interface_name): method Set (line 496) | def Set(self, interface_name, property_name, new_value): method PropertiesChanged (line 514) | def PropertiesChanged(self, interface_name, changed_properties, class MprisConnection (line 523) | class MprisConnection(object): method __init__ (line 529) | def __init__(self, connection): method send (line 533) | def send(self, obj): function main (line 545) | def main(connection): FILE: mps_youtube/pafy.py class MyLogger (line 12) | class MyLogger: method debug (line 13) | def debug(self, msg): method info (line 21) | def info(self, msg): method warning (line 24) | def warning(self, msg): method error (line 27) | def error(self, msg): function get_video_streams (line 31) | def get_video_streams(ytid): function download_video (line 41) | def download_video(ytid, folder, audio_only=False): function search_videos (line 62) | def search_videos(query, pages): function channel_search (line 76) | def channel_search(query): function playlist_search (line 85) | def playlist_search(query): function get_playlist (line 94) | def get_playlist(playlist_id): function get_video_title_suggestions (line 105) | def get_video_title_suggestions(query): function channel_id_from_name (line 110) | def channel_id_from_name(query): function all_videos_from_channel (line 116) | def all_videos_from_channel(channel_id): function search_videos_from_channel (line 120) | def search_videos_from_channel(channel_id, query): function get_comments (line 124) | def get_comments(video_id): function get_video_info (line 128) | def get_video_info(video_id): function return_dislikes (line 136) | def return_dislikes(video_id): function extract_video_id (line 140) | def extract_video_id(url: str) -> str: function all_playlists_from_channel (line 181) | def all_playlists_from_channel(channel_id): FILE: mps_youtube/paths.py function get_default_ddir (line 6) | def get_default_ddir(): function get_config_dir (line 41) | def get_config_dir(): FILE: mps_youtube/player.py class BasePlayer (line 19) | class BasePlayer: method PlaybackStatus (line 24) | def PlaybackStatus(self): method PlaybackStatus (line 28) | def PlaybackStatus(self, value): method play (line 36) | def play(self, songlist, shuffle=False, repeat=False, override=False): method next (line 106) | def next(self): method previous (line 109) | def previous(self): method stop (line 112) | def stop(self): method seek (line 116) | def seek(self): method _playsong (line 119) | def _playsong(self, failcount=0, softrepeat=False): method _launch_player (line 143) | def _launch_player(self): method send_metadata_mpris (line 147) | def send_metadata_mpris(self): method _playback_progress (line 163) | def _playback_progress(self, idx, allsongs, repeat=False): method make_status_line (line 202) | def make_status_line(self, elapsed_s, prefix, songlength=0, volume=None): method _make_status_line (line 210) | def _make_status_line(self, elapsed_s, prefix, songlength=0, volume=No... class CmdPlayer (line 246) | class CmdPlayer(BasePlayer): method next (line 248) | def next(self): method previous (line 255) | def previous(self): method stop (line 262) | def stop(self): method terminate_process (line 266) | def terminate_process(self): method _generate_real_playerargs (line 272) | def _generate_real_playerargs(self): method clean_up (line 275) | def clean_up(self): method launch_player (line 278) | def launch_player(self, cmd): method _help (line 281) | def _help(self, short=True): method _launch_player (line 284) | def _launch_player(self): function stream_details (line 314) | def stream_details(song, failcount=0, override=False, softrepeat=False): FILE: mps_youtube/players/GenericPlayer.py class GenericPlayer (line 17) | class GenericPlayer(CmdPlayer): method __init__ (line 18) | def __init__(self, player): method _generate_real_playerargs (line 21) | def _generate_real_playerargs(self): method clean_up (line 34) | def clean_up(self): method launch_player (line 40) | def launch_player(self, cmd): method _help (line 54) | def _help(self, short=True): FILE: mps_youtube/players/mplayer.py class mplayer (line 15) | class mplayer(CmdPlayer): method __init__ (line 16) | def __init__(self, player): method _generate_real_playerargs (line 20) | def _generate_real_playerargs(self): method clean_up (line 75) | def clean_up(self): method launch_player (line 79) | def launch_player(self, cmd): method _player_status (line 114) | def _player_status(self, prefix, songlength=0): method _help (line 173) | def _help(self, short=True): function _get_input_file (line 194) | def _get_input_file(): function _get_mplayer_version (line 230) | def _get_mplayer_version(exename: str) -> T.Union[int, T.Tuple[int, ...]]: FILE: mps_youtube/players/mpv.py class mpv (line 17) | class mpv(CmdPlayer): method __init__ (line 18) | def __init__(self, player): method _generate_real_playerargs (line 33) | def _generate_real_playerargs(self): method clean_up (line 103) | def clean_up(self): method launch_player (line 113) | def launch_player(self, cmd): method _player_status (line 150) | def _player_status(self, prefix, songlength=0): method _help (line 257) | def _help(self, short=True): function _get_input_file (line 278) | def _get_input_file(): function _get_mpv_version (line 314) | def _get_mpv_version(exename): FILE: mps_youtube/players/vlc.py class vlc (line 8) | class vlc(CmdPlayer): method __init__ (line 9) | def __init__(self, player): method _generate_real_playerargs (line 12) | def _generate_real_playerargs(self): method clean_up (line 28) | def clean_up(self): method launch_player (line 31) | def launch_player(self, cmd): method _help (line 37) | def _help(self, short=True): method _kill_instance (line 40) | def _kill_instance(self): FILE: mps_youtube/playlist.py class Playlist (line 1) | class Playlist: method __init__ (line 5) | def __init__(self, name=None, songs=None): method __len__ (line 10) | def __len__(self): method __getitem__ (line 14) | def __getitem__(self, sliced): method __setitem__ (line 17) | def __setitem__(self, position, item): method __iter__ (line 20) | def __iter__(self): method duration (line 25) | def duration(self): class Video (line 34) | class Video: method __init__ (line 38) | def __init__(self, ytid, title, length): FILE: mps_youtube/playlists.py function save (line 9) | def save(): function load (line 21) | def load(): function delete (line 53) | def delete(name): function read_m3u (line 59) | def read_m3u(m3u): function _convert_playlist_to_v2 (line 92) | def _convert_playlist_to_v2(): function _convert_playlist_to_m3u (line 133) | def _convert_playlist_to_m3u(): FILE: mps_youtube/screen.py function update (line 11) | def update(fill_blank=True): function clear (line 34) | def clear(): function reset_terminal (line 42) | def reset_terminal(): function writestatus (line 48) | def writestatus(text, mute=False): function _writeline (line 54) | def _writeline(text): function msgexit (line 67) | def msgexit(msg, code=0): FILE: mps_youtube/streams.py function prune (line 8) | def prune(): function get (line 38) | def get(vid, force=False, callback=None, threeD=False): function select (line 86) | def select(slist, q=0, audio=False, m4a_ok=True, maxres=None): function get_size (line 139) | def get_size(ytid, url, preloading=False): function _get_content_length (line 157) | def _get_content_length(url, preloading=False): function preload (line 167) | def preload(song, delay=2, override=False): function _preload (line 175) | def _preload(song, delay, override): FILE: mps_youtube/terminalsize.py function get_terminal_size (line 14) | def get_terminal_size(): function _get_terminal_size_windows (line 45) | def _get_terminal_size_windows(): function _get_terminal_size_tput (line 70) | def _get_terminal_size_tput(): function _get_terminal_size_linux (line 82) | def _get_terminal_size_linux(): FILE: mps_youtube/test/test_main.py class TestMain (line 8) | class TestMain(unittest.TestCase): method test_fmt_time (line 9) | def test_fmt_time(self): method test_num_repr (line 18) | def test_num_repr(self): FILE: mps_youtube/test/test_mpris.py function test_mprsi2controller_init (line 11) | def test_mprsi2controller_init(): function test_mpris2mediaplayer_init (line 15) | def test_mpris2mediaplayer_init(): function test_mpris2mediaplayer_set_property_time_pos (line 72) | def test_mpris2mediaplayer_set_property_time_pos(val): function test_mpris2mediaplayer_set_property_time_pos_seeked (line 98) | def test_mpris2mediaplayer_set_property_time_pos_seeked(val1, val2): FILE: mps_youtube/test/test_players_mplayer.py function test_get_mplayer_version_no_mplayer (line 17) | def test_get_mplayer_version_no_mplayer(exename, exp_err): function test_get_mplayer_version_invalid_input (line 22) | def test_get_mplayer_version_invalid_input(): function test_get_mplayer_version (line 38) | def test_get_mplayer_version(output, exp_res): FILE: mps_youtube/test/test_util.py function test_uea_pad (line 15) | def test_uea_pad(num, t, exp_res): FILE: mps_youtube/util.py class IterSlicer (line 29) | class IterSlicer(): method __init__ (line 33) | def __init__(self, iterable, length=None): method __getitem__ (line 43) | def __getitem__(self, sliced): method __len__ (line 59) | def __len__(self): function has_exefile (line 65) | def has_exefile(filename): function dbg (line 88) | def dbg(*args): function utf8_replace (line 94) | def utf8_replace(txt): function xenc (line 109) | def xenc(stuff): function xprint (line 114) | def xprint(stuff, end=None): function mswinfn (line 119) | def mswinfn(filename): function sanitize_filename (line 128) | def sanitize_filename(filename, ignore_slashes=False): function set_window_title (line 141) | def set_window_title(title): function list_update (line 149) | def list_update(item, lst, remove=False): function get_near_name (line 158) | def get_near_name(begin, items): function F (line 166) | def F(key, nb=0, na=0, textlib=None): function get_pafy (line 192) | def get_pafy(item, force=False, callback=None): function getxy (line 239) | def getxy(): function fmt_time (line 259) | def fmt_time(seconds): function correct_truncate (line 275) | def correct_truncate(text, max_len): function uea_pad (line 291) | def uea_pad(num, t, direction="<", notrunc=False): function real_len (line 324) | def real_len(u, alt=False): function yt_datetime (line 343) | def yt_datetime(yt_date_time): function yt_datetime_local (line 355) | def yt_datetime_local(yt_date_time): function utc2local (line 366) | def utc2local(utc): function parse_multi (line 370) | def parse_multi(choice, end=None): function _bi_range (line 406) | def _bi_range(start, end): function is_known_player (line 423) | def is_known_player(player): function load_player_info (line 438) | def load_player_info(player): function fetch_songs (line 456) | def fetch_songs(text, title="Unknown"): function number_string_to_list (line 460) | def number_string_to_list(text): function _get_mpv_version (line 476) | def _get_mpv_version(exename): function _get_mplayer_version (line 493) | def _get_mplayer_version(exename): function _get_metadata (line 511) | def _get_metadata(song_title): function _get_metadata_from_lastfm (line 540) | def _get_metadata_from_lastfm(artist, track): function assign_player (line 563) | def assign_player(player): class CommandCompleter (line 581) | class CommandCompleter: method __init__ (line 585) | def __init__(self): method complete_command (line 589) | def complete_command(self, text, state): method add_cmd (line 595) | def add_cmd(self, val): function parse_video_length (line 599) | def parse_video_length(duration):