SYMBOL INDEX (264 symbols across 55 files) FILE: bilix/_process.py function _init (line 7) | def _init(): function singleton (line 14) | def singleton(cls): FILE: bilix/cli/assign.py function kwargs_filter (line 14) | def kwargs_filter(obj: Union[type, Callable], kwargs: dict): function module_handle_funcs (line 45) | def module_handle_funcs(module): function auto_assemble (line 61) | def auto_assemble(handle_func): function longest_common_len (line 89) | def longest_common_len(str1, str2): function find_sites (line 101) | def find_sites(): function assign (line 109) | def assign(cli_kwargs): FILE: bilix/cli/main.py function handle_help (line 17) | def handle_help(ctx: click.Context, param: typing.Union[click.Option, cl... function handle_version (line 24) | def handle_version(ctx: click.Context, param: typing.Union[click.Option,... function handle_debug (line 31) | def handle_debug(ctx: click.Context, param: typing.Union[click.Option, c... function print_help (line 40) | def print_help(): class BasedQualityType (line 174) | class BasedQualityType(click.ParamType): method convert (line 177) | def convert(self, value, param, ctx): class BasedSpeedLimit (line 188) | class BasedSpeedLimit(click.ParamType): method convert (line 191) | def convert(self, value, param, ctx): class BasedTimeRange (line 196) | class BasedTimeRange(click.ParamType): method convert (line 199) | def convert(self, value, param, ctx): function main (line 363) | def main(**kwargs): FILE: bilix/download/base_downloader.py class BaseDownloaderMeta (line 24) | class BaseDownloaderMeta(type): method __new__ (line 25) | def __new__(cls, name, bases, dct): method check_unique_method (line 44) | def check_unique_method(method_name: str, bases: Tuple[type, ...]): method parse_cli_doc (line 51) | def parse_cli_doc(func) -> Optional[dict]: method ensure_path (line 64) | def ensure_path(func, sig): class BaseDownloader (line 81) | class BaseDownloader(metaclass=BaseDownloaderMeta): method __init__ (line 87) | def __init__( method __aenter__ (line 116) | async def __aenter__(self): method __aexit__ (line 120) | async def __aexit__(self, exc_type, exc_val, exc_tb): method aclose (line 123) | async def aclose(self): method get_static (line 127) | async def get_static(self, url: str, path: Union[str, Path], convert_f... method _stream_context (line 154) | async def _stream_context(self, times: int): method stream_num (line 184) | def stream_num(self): method chunk_size (line 189) | def chunk_size(self) -> Optional[int]: method _check_speed (line 196) | async def _check_speed(self, content_size): method update_cookies_from_browser (line 203) | def update_cookies_from_browser(self, browser: str): method _decide_handle (line 215) | def _decide_handle(cls, method: str, keys: Tuple[str, ...], options: d... method handle (line 224) | def handle(cls, method: str, keys: Tuple[str, ...], options: dict): FILE: bilix/download/base_downloader_m3u8.py class BaseDownloaderM3u8 (line 20) | class BaseDownloaderM3u8(BaseDownloader): method __init__ (line 23) | def __init__( method _decrypt (line 48) | async def _decrypt(self, seg: m3u8.Segment, content: bytearray): method to_invariant_m3u8 (line 64) | async def to_invariant_m3u8(self, m3u8_url: str) -> m3u8.M3U8: method get_m3u8_video (line 74) | async def get_m3u8_video(self, m3u8_url: str, path: Union[str, Path], ... method _update_task_total (line 143) | async def _update_task_total(self, task_id, time_part: float, update_s... method _get_seg (line 154) | async def _get_seg(self, seg: Segment, path: Path, task_id, p_sema: as... method _after_seg (line 193) | def _after_seg(self, seg: Segment, content: bytearray) -> bytearray: FILE: bilix/download/base_downloader_part.py class BaseDownloaderPart (line 20) | class BaseDownloaderPart(BaseDownloader): method __init__ (line 23) | def __init__( method _pre_req (line 45) | async def _pre_req(self, urls: List[str]) -> Tuple[int, str]: method get_media_clip (line 61) | async def get_media_clip( method get_file (line 151) | async def get_file(self, url_or_urls: Union[str, Iterable[str]], path:... method _get_file_part (line 200) | async def _get_file_part(self, urls: List[str], path: Path, part_range... FILE: bilix/download/utils.py function merge_files (line 15) | async def merge_files(file_list: List[Path], new_path: Path): function req_retry (line 25) | async def req_retry(client: httpx.AsyncClient, url_or_urls: Union[str, S... function eclipse_str (line 52) | def eclipse_str(s: str, max_len: int = 100): function path_check (line 60) | def path_check(path: Path, retry: int = 100) -> Tuple[bool, Path]: function raise_api_error (line 84) | def raise_api_error(func): FILE: bilix/exception.py class APIError (line 1) | class APIError(Exception): method __init__ (line 4) | def __init__(self, msg: str, resource): method __str__ (line 8) | def __str__(self): class APIParseError (line 12) | class APIParseError(APIError): method __init__ (line 15) | def __init__(self, e, func): method __str__ (line 19) | def __str__(self): class APIResourceError (line 23) | class APIResourceError(APIError): class APIUnsupportedError (line 27) | class APIUnsupportedError(APIError): class APIInvalidError (line 31) | class APIInvalidError(APIError): class HandleError (line 35) | class HandleError(Exception): class HandleMethodError (line 39) | class HandleMethodError(HandleError): method __init__ (line 42) | def __init__(self, executor_cls, method): method __str__ (line 46) | def __str__(self): FILE: bilix/ffmpeg.py function concat (line 11) | async def concat(path_lst: List[Path], output_path: Path, remove=True): function combine (line 25) | async def combine(path_lst: List[Path], output_path: Path, remove=True): function time_range_clip (line 38) | async def time_range_clip(input_path: Path, start: int, t: int, output_p... FILE: bilix/log.py function get_logger (line 5) | def get_logger(): FILE: bilix/progress/abc.py class Progress (line 5) | class Progress(ABC): method start (line 10) | def start(cls): method stop (line 15) | def stop(cls): method tasks (line 19) | def tasks(self): method active_speed (line 23) | def active_speed(self) -> Optional[float]: method add_task (line 27) | async def add_task( method update (line 39) | async def update( FILE: bilix/progress/cli_progress.py class SpinnerColumn (line 10) | class SpinnerColumn(ProgressColumn): method __init__ (line 11) | def __init__(self, style="progress.spinner", speed: float = 1.0): method render (line 17) | def render(self, task): class CLIProgress (line 27) | class CLIProgress(Progress): method __init__ (line 41) | def __init__(self): method start (line 45) | def start(cls): method stop (line 49) | def stop(cls): method tasks (line 53) | def tasks(self): method _cat_description (line 57) | def _cat_description(description, max_length=33): method add_task (line 61) | async def add_task( method active_speed (line 76) | def active_speed(self): method update (line 80) | async def update( method switch_theme (line 100) | def switch_theme(cls, bs="rgb(95,138,239)", gs="rgb(65,165,189)"): FILE: bilix/progress/ws_progress.py class WebSocketProgress (line 7) | class WebSocketProgress(CLIProgress): method __init__ (line 8) | def __init__(self, sockets): method broadcast (line 12) | async def broadcast(self, msg: str): method add_task (line 16) | async def add_task(self, **kwargs): method update (line 23) | async def update(self, task_id, **kwargs) -> None: FILE: bilix/sites/bilibili/api.py function get_cate_meta (line 25) | async def get_cate_meta(client: httpx.AsyncClient) -> dict: function get_list_info (line 45) | async def get_list_info(client: httpx.AsyncClient, url_or_sid: str, ): function get_collect_info (line 73) | async def get_collect_info(client: httpx.AsyncClient, url_or_sid: str): function get_favour_page_info (line 93) | async def get_favour_page_info(client: httpx.AsyncClient, url_or_fid: st... function get_cate_page_info (line 118) | async def get_cate_page_info(client: httpx.AsyncClient, cate_id, time_fr... function _add_sign (line 141) | async def _add_sign(client: httpx.AsyncClient, params: dict): function _find_mid (line 169) | def _find_mid(space_url: str): function get_up_video_info (line 174) | async def get_up_video_info(client: httpx.AsyncClient, url_or_mid: str, ... function get_up_info (line 202) | async def get_up_info(client: httpx.AsyncClient, url_or_mid: str): class Media (line 214) | class Media(BaseModel): method urls (line 226) | def urls(self): class Dash (line 231) | class Dash(BaseModel): method from_dict (line 239) | def from_dict(cls, play_info: dict): method choose_video (line 280) | def choose_video(self, quality: Union[int, str], video_codec: str) -> ... method choose_audio (line 298) | def choose_audio(self, audio_codec: str) -> Optional[Media]: method choose_quality (line 306) | def choose_quality(self, quality: Union[str, int], codec: str = '') ->... class Status (line 312) | class Status(BaseModel): method no_view (line 324) | def no_view(cls, v): class Page (line 328) | class Page(BaseModel): class VideoInfo (line 333) | class VideoInfo(BaseModel): function _parse_bv_html (line 349) | def _parse_bv_html(url, html: str) -> VideoInfo: function _parse_ep_html (line 395) | def _parse_ep_html(url, html: str) -> VideoInfo: function get_video_info (line 428) | async def get_video_info(client: httpx.AsyncClient, url: str) -> VideoInfo: function _get_video_info_from_html (line 437) | async def _get_video_info_from_html(client: httpx.AsyncClient, url: str)... function _get_video_info_from_api (line 454) | async def _get_video_info_from_api(client: httpx.AsyncClient, url: str) ... function _attach_ep_dash (line 462) | async def _attach_ep_dash(client: httpx.AsyncClient, video_info: VideoIn... function _attach_dash_and_durl_from_api (line 485) | async def _attach_dash_and_durl_from_api(client: httpx.AsyncClient, vide... function _get_video_basic_info_from_api (line 506) | async def _get_video_basic_info_from_api(client: httpx.AsyncClient, url)... function get_subtitle_info (line 540) | async def get_subtitle_info(client: httpx.AsyncClient, bvid, cid): function get_dm_urls (line 550) | async def get_dm_urls(client: httpx.AsyncClient, aid, cid) -> List[str]: FILE: bilix/sites/bilibili/api_test.py function event_loop (line 12) | def event_loop(): function test_get_cate_meta (line 22) | async def test_get_cate_meta(): function test_get_list_info (line 29) | async def test_get_list_info(): function test_get_collect_info (line 38) | async def test_get_collect_info(): function test_get_favour_page_info (line 47) | async def test_get_favour_page_info(): function test_get_cate_page_info (line 54) | async def test_get_cate_page_info(): function test_get_up_video_info (line 64) | async def test_get_up_video_info(): function test_get_video_info (line 81) | async def test_get_video_info(): function test_get_subtitle_info (line 118) | async def test_get_subtitle_info(): function test_get_dm_info (line 126) | async def test_get_dm_info(): FILE: bilix/sites/bilibili/downloader.py class DownloaderBilibili (line 21) | class DownloaderBilibili(BaseDownloaderPart): method __init__ (line 25) | def __init__( method parse_url (line 71) | def parse_url(cls, url: str): method get_collect_or_list (line 84) | async def get_collect_or_list(self, url, path=Path('.'), method get_favour (line 115) | async def get_favour(self, url_or_fid, path=Path('.'), method _get_favor_by_page (line 152) | async def _get_favor_by_page(self, url_or_fid, path: Path, pn=1, num=2... method cate_meta (line 166) | async def cate_meta(self): method get_cate (line 174) | async def get_cate(self, cate_name: str, path=Path('.'), num=10, order... method _get_cate_by_page (line 218) | async def _get_cate_by_page( method get_up (line 230) | async def get_up( method _get_up_by_page (line 268) | async def _get_up_by_page(self, url_or_mid, path: Path, pn=1, num=30, ... method get_series (line 280) | async def get_series(self, url: str, path=Path('.'), method get_video (line 314) | async def get_video(self, url: str, path=Path('.'), method _dm2ass_factory (line 441) | def _dm2ass_factory(width: int, height: int): method get_dm (line 450) | async def get_dm(self, url, path=Path('.'), update=False, convert_func... method get_subtitle (line 488) | async def get_subtitle(self, url, path=Path('.'), convert_func=json2sr... method handle (line 519) | def handle(cls, method: str, keys: Tuple[str, ...], options: dict): FILE: bilix/sites/bilibili/downloader_test.py function test_get_collect_or_list (line 7) | async def test_get_collect_or_list(): function test_get_favour (line 17) | async def test_get_favour(): function test_get_cate (line 24) | async def test_get_cate(): function test_get_up (line 31) | async def test_get_up(): function test_get_series (line 38) | async def test_get_series(): function test_get_dm (line 51) | async def test_get_dm(): function test_get_subtitle (line 58) | async def test_get_subtitle(): function test_choose_quality (line 65) | async def test_choose_quality(): FILE: bilix/sites/bilibili/informer.py class InformerBilibili (line 13) | class InformerBilibili(DownloaderBilibili): method parse_url (line 17) | def parse_url(cls, url: str): method info_key (line 22) | async def info_key(self, key): method info_up (line 25) | async def info_up(self, url: str): method info_favour (line 29) | async def info_favour(self, url: str): method info_collect_or_list (line 32) | async def info_collect_or_list(self, url: str): method info_video (line 35) | async def info_video(self, url: str): method handle (line 79) | def handle(cls, method: str, keys: Tuple[str, ...], options: dict): FILE: bilix/sites/bilibili/informer_test.py function test_bilibili_informer (line 8) | async def test_bilibili_informer(): FILE: bilix/sites/bilibili/utils.py function parse_ids_from_url (line 4) | def parse_ids_from_url(url_or_string: str): FILE: bilix/sites/bilibili/utils_test.py function test_parse_ids_from_url (line 4) | def test_parse_ids_from_url(): FILE: bilix/sites/cctv/api.py function get_id (line 19) | async def get_id(client: httpx.AsyncClient, url: str) -> Tuple[str, str,... function get_media_info (line 31) | async def get_media_info(client: httpx.AsyncClient, pid: str) -> Tuple[s... function get_series_info (line 53) | async def get_series_info(client: httpx.AsyncClient, vide: str, vida: st... FILE: bilix/sites/cctv/api_test.py function test_get_video_info (line 9) | async def test_get_video_info(): FILE: bilix/sites/cctv/downloader.py class DownloaderCctv (line 11) | class DownloaderCctv(BaseDownloaderM3u8): method __init__ (line 14) | def __init__( method get_series (line 41) | async def get_series(self, url: str, path=Path('.'), quality: int = 0): method get_video (line 59) | async def get_video(self, url_or_pid: str, path=Path('.'), quality: in... FILE: bilix/sites/douyin/api.py class VideoInfo (line 26) | class VideoInfo(BaseModel): function get_video_info (line 37) | async def get_video_info(client: httpx.AsyncClient, url: str) -> VideoInfo: function main (line 68) | async def main(): FILE: bilix/sites/douyin/api_test.py function test_get_video_info (line 9) | async def test_get_video_info(): FILE: bilix/sites/douyin/downloader.py class DownloaderDouyin (line 11) | class DownloaderDouyin(BaseDownloaderPart): method __init__ (line 14) | def __init__( method get_video (line 36) | async def get_video(self, url: str, path=Path('.'), image=False): FILE: bilix/sites/douyin/downloader_test.py function test_get_video (line 6) | async def test_get_video(): FILE: bilix/sites/hanime1/api.py class VideoInfo (line 16) | class VideoInfo(BaseModel): function get_video_info (line 25) | async def get_video_info(client: httpx.AsyncClient, url_or_avid: str) ->... FILE: bilix/sites/hanime1/api_test.py function test_get_video_info (line 9) | async def test_get_video_info(): FILE: bilix/sites/hanime1/downloader.py class DownloaderHanime1 (line 11) | class DownloaderHanime1(BaseDownloaderM3u8, BaseDownloaderPart): method __init__ (line 14) | def __init__( method get_video (line 38) | async def get_video(self, url: str, path=Path('.'), image=False, time_... FILE: bilix/sites/jable/api.py class VideoInfo (line 15) | class VideoInfo(BaseModel): function get_actor_info (line 25) | async def get_actor_info(client: httpx.AsyncClient, url: str): function get_video_info (line 34) | async def get_video_info(client: httpx.AsyncClient, url_or_avid: str) ->... FILE: bilix/sites/jable/api_test.py function test_get_video_info (line 9) | async def test_get_video_info(): function test_get_actor_info (line 17) | async def test_get_actor_info(): FILE: bilix/sites/jable/downloader.py class DownloaderJable (line 10) | class DownloaderJable(BaseDownloaderM3u8): method __init__ (line 13) | def __init__( method get_actor (line 41) | async def get_actor(self, url: str, path=Path("."), image=True): method get_video (line 56) | async def get_video(self, url: str, path=Path("."), image=True, time_r... FILE: bilix/sites/tiktok/api.py class VideoInfo (line 24) | class VideoInfo(BaseModel): function get_video_info (line 35) | async def get_video_info(client: httpx.AsyncClient, url: str) -> VideoInfo: FILE: bilix/sites/tiktok/api_test.py function test_get_video_info (line 9) | async def test_get_video_info(): FILE: bilix/sites/tiktok/downloader.py class DownloaderTiktok (line 11) | class DownloaderTiktok(BaseDownloaderPart): method __init__ (line 14) | def __init__( method get_video (line 36) | async def get_video(self, url: str, path=Path('.'), image=False): FILE: bilix/sites/tiktok/downloader_test.py function test_get_video (line 6) | async def test_get_video(): FILE: bilix/sites/yhdmp/api.py function _get_js (line 22) | def _get_js(): function _get_t2_k2 (line 30) | def _get_t2_k2(t1: str, k1: str) -> dict: function _decode (line 35) | def _decode(data: str) -> str: function req_retry (line 39) | async def req_retry(client: httpx.AsyncClient, url_or_urls: Union[str, L... class VideoInfo (line 55) | class VideoInfo(BaseModel): function get_video_info (line 66) | async def get_video_info(client: httpx.AsyncClient, url: str) -> VideoInfo: function get_m3u8_url (line 90) | async def get_m3u8_url(client: httpx.AsyncClient, url): FILE: bilix/sites/yhdmp/api_test.py function test_get_video_info (line 9) | async def test_get_video_info(): FILE: bilix/sites/yhdmp/downloader.py class DownloaderYhdmp (line 10) | class DownloaderYhdmp(BaseDownloaderM3u8): method __init__ (line 11) | def __init__( method get_series (line 39) | async def get_series(self, url: str, path=Path('.'), p_range: Sequence... method get_video (line 71) | async def get_video(self, url: str, path=Path('.'), time_range=None): method _decide_handle (line 84) | def _decide_handle(cls, method: str, keys: Tuple[str, ...], options: d... FILE: bilix/sites/yhdmp/yhdmp.js function __getplay_rev_data (line 1) | function __getplay_rev_data(_in_data) { function __getplay_pck (line 109) | function __getplay_pck() { function __getplay_pck2 (line 272) | function __getplay_pck2() { function updateDoc (line 401) | function updateDoc(cookie) { function get_t2_k2 (line 412) | function get_t2_k2(t1, k1) { FILE: bilix/sites/yinghuacd/api.py class VideoInfo (line 15) | class VideoInfo(BaseModel): function get_video_info (line 23) | async def get_video_info(client: httpx.AsyncClient, url: str) -> VideoInfo: FILE: bilix/sites/yinghuacd/api_test.py function test_get_video_info (line 9) | async def test_get_video_info(): FILE: bilix/sites/yinghuacd/downloader.py class DownloaderYinghuacd (line 13) | class DownloaderYinghuacd(BaseDownloaderM3u8): method __init__ (line 14) | def __init__( method _after_seg (line 42) | def _after_seg(self, seg: Segment, content: bytearray) -> bytearray: method get_series (line 48) | async def get_series(self, url: str, path=Path("."), p_range: Sequence... method get_video (line 66) | async def get_video(self, url: str, path=Path('.'), time_range=None, v... method _decide_handle (line 86) | def _decide_handle(cls, method: str, keys: Tuple[str, ...], options: d... FILE: bilix/sites/youtube/api.py class VideoInfo (line 17) | class VideoInfo(BaseModel): function get_video_info (line 25) | async def get_video_info(client: httpx.AsyncClient, url: str): FILE: bilix/sites/youtube/api_test.py function test_get_video_info (line 9) | async def test_get_video_info(): FILE: bilix/sites/youtube/downloader.py class DownloaderYoutube (line 11) | class DownloaderYoutube(BaseDownloaderPart): method __init__ (line 14) | def __init__( method get_video (line 39) | async def get_video(self, url: str, path=Path('.')): FILE: bilix/utils.py function cors_slice (line 14) | def cors_slice(cors: Sequence[Coroutine], p_range: Sequence[int]): function legal_title (line 22) | def legal_title(*parts: str, join_str: str = '-'): function replace_illegal (line 34) | def replace_illegal(s: str): function convert_size (line 42) | def convert_size(total_bytes: int) -> str: function pick_unit_and_suffix (line 49) | def pick_unit_and_suffix(size: int, suffixes: List[str], base: int) -> T... function parse_bytes_str (line 60) | def parse_bytes_str(s: str) -> float: function valid_sess_data (line 72) | def valid_sess_data(sess_data: Optional[str]) -> str: function t2s (line 82) | def t2s(t: int) -> str: function s2t (line 86) | def s2t(s: str) -> int: function json2srt (line 97) | def json2srt(data: Union[bytes, str, dict]): function timer (line 122) | def timer(func): FILE: examples/a_very_simple_example.py function main (line 11) | async def main(): function main2 (line 20) | async def main2(): FILE: examples/download_by_timerange.py function main (line 10) | async def main(): FILE: examples/limit_download_rate.py function main (line 10) | async def main(): function main2 (line 15) | async def main2(): FILE: examples/multi_site_download_same_time.py function main (line 15) | async def main(): FILE: examples/multi_type_tasks.py function main (line 12) | async def main(): FILE: examples/use_of_api.py function main (line 12) | async def main():