{"id":303,"date":"2019-09-16T09:52:00","date_gmt":"2019-09-16T01:52:00","guid":{"rendered":"https:\/\/kuo.us.to\/wordpress\/?p=303"},"modified":"2023-02-01T15:12:14","modified_gmt":"2023-02-01T07:12:14","slug":"%e7%94%a8python-%e6%a8%a1%e7%b5%84-youtube-dl-%e4%b8%8b%e8%bc%89-youtube-%e7%9b%b4%e6%92%ad%e5%bd%b1%e7%89%87","status":"publish","type":"post","link":"https:\/\/kuo.us.to\/wordpress\/python%e5%ad%b8%e7%bf%92%e7%ad%86%e8%a8%98\/303\/","title":{"rendered":"\u7528Python \u6a21\u7d44 youtube-dl \u4e0b\u8f09 Youtube \u76f4\u64ad\u5f71\u7247"},"content":{"rendered":"<p>\u9019\u4e00\u9663\u5b50\u56e0\u70ba\u6709\u4e0b\u8f09Youtube\u4e0a\u516c\u5171\u96fb\u8996\u53f0\u76f4\u64ad\u7684\u9700\u6c42\uff0c<br \/>\n\u722c\u6587\u627e\u89e3\u6c7a\u65b9\u6848\u3002<\/p>\n<p>\u525b\u597d\u6709\u5728\u5b78Python\uff0c<br \/>\n\u6240\u4ee5\u5c31\u76f4\u63a5\u904b\u7528\u3002<\/p>\n<p>\u6e96\u5099\u7a0b\u5e8f\uff1a<br \/>\n\u5b89\u88ddPython\uff0c<\/p>\n<p>\u5b89\u88dd\u7684\u904e\u7a0b\u8acb\u5927\u5bb6\u76f4\u63a5\u722c\u6587\uff0c\u9019\u90e8\u4efd\u7db2\u8def\u4e0a\u7684\u6559\u5b78\u592a\u591a\u4e86\u3002<\/p>\n<p>\u6211\u662f\u5b89\u88ddminiconda\u3002<\/p>\n<p>\u4ee5\u4e0b\u662f\u5728miniconda\u7684\u74b0\u5883\u4e0b\u4f86\u64cd\u4f5c\uff1a<\/p>\n<p>\u5b89\u88dd youtube-dl \u548c ffmpeg<\/p>\n<p>pip install youtube-dl<\/p>\n<p>pip install ffmpeg<\/p>\n<div style=\"clear: both; text-align: center;\"><a href=\"https:\/\/1.bp.blogspot.com\/-4lnAHGSE6pQ\/XX7SO87FycI\/AAAAAAAAQDY\/mh9Ty8p4z-4hEEBePCwY9ANC_n3aCtqyACLcBGAsYHQ\/s1600\/snipaste_20190916_080446.png\" style=\"margin-left: 1em; margin-right: 1em;\"><img decoding=\"async\" loading=\"lazy\" border=\"0\" data-original-height=\"600\" data-original-width=\"1200\" height=\"320\" src=\"https:\/\/1.bp.blogspot.com\/-4lnAHGSE6pQ\/XX7SO87FycI\/AAAAAAAAQDY\/mh9Ty8p4z-4hEEBePCwY9ANC_n3aCtqyACLcBGAsYHQ\/s640\/snipaste_20190916_080446.png\" width=\"640\"><\/a><\/div>\n<p>youtube-dl \u6a21\u7d44\u652f\u63f4\u7684\u7db2\u7ad9\u975e\u5e38\u7684\u591a\uff0c\u8acb\u53c3\u8003\u5b98\u65b9\u6587\u4ef6\uff1a<br \/>\n<a href=\"https:\/\/github.com\/ytdl-org\/youtube-dl\/blob\/master\/docs\/supportedsites.md\">https:\/\/github.com\/ytdl-org\/youtube-dl\/blob\/master\/docs\/supportedsites.md<\/a><\/p>\n<p>youtube-dl \u7684\u6307\u4ee4\u9078\u9805\u883b\u591a\u7684\uff0c<br \/>\n\u9375\u5165youtube-dl &#8211;help\u5f8c\uff0c\u53ef\u4ee5\u67e5\u8a62\u5404\u9805\u6307\u4ee4\u3002<\/p>\n<p>\u5b98\u65b9\u53c3\u8003\u6307\u4ee4\u7db2\u5740\uff1a<br \/>\n<a href=\"https:\/\/github.com\/ytdl-org\/youtube-dl\/blob\/master\/README.md#options\">https:\/\/github.com\/ytdl-org\/youtube-dl\/blob\/master\/README.md#options<\/a><\/p>\n<p>\u4e0b\u8f09 Youtube \u5f71\u7247\uff1a<br \/>\nyoutube-dl https:\/\/www.youtube.com\/watch?v=19g6IHsfsyY<\/p>\n<p>\u57f7\u884c\u7d50\u679c\u5982\u4e0b\uff1a<br \/>\n(base) C:Userssuperuser&gt;youtube-dl https:\/\/www.youtube.com\/watch?v=19g6IHsfsyY<br \/>\n[youtube] 19g6IHsfsyY: Downloading webpage<br \/>\n[youtube] 19g6IHsfsyY: Downloading video info webpage<br \/>\n[download] Destination: 2017\u300c\u672a\u4f86\u8207\u5e0c\u671b\u7cfb\u5217\u8b1b\u5ea7\u300d5_27\u56b4\u9577\u58fd-19g6IHsfsyY.mp4<br \/>\n[download] 100% of 382.05MiB in 00:35<\/p>\n<div style=\"clear: both; text-align: center;\"><a href=\"https:\/\/1.bp.blogspot.com\/-_sCfFnZDJpE\/XX7nzbLalsI\/AAAAAAAAQDw\/FEnsgGj-ONIiZ4ViB4uytwSSb532R3sMgCLcBGAsYHQ\/s1600\/snipaste_20190916_093905.png\" style=\"margin-left: 1em; margin-right: 1em;\"><img decoding=\"async\" loading=\"lazy\" border=\"0\" data-original-height=\"534\" data-original-width=\"1104\" height=\"308\" src=\"https:\/\/1.bp.blogspot.com\/-_sCfFnZDJpE\/XX7nzbLalsI\/AAAAAAAAQDw\/FEnsgGj-ONIiZ4ViB4uytwSSb532R3sMgCLcBGAsYHQ\/s640\/snipaste_20190916_093905.png\" width=\"640\"><\/a><\/div>\n<p>\u4e0b\u8f09Youtube\u76f4\u64ad\u7a0b\u5e8f\uff1a<br \/>\n\u4e0b\u8f09Youtube\u76f4\u64ad\u7a0b\u5e8f\u548c\u4e0a\u9762\u7684\u64cd\u4f5c\u4e00\u6a23\uff0c\u4f46\u9ebb\u7169\u7684\u662f\u4e0b\u8f09\u4e0d\u6703\u81ea\u884c\u7d42\u6b62\u3002<\/p>\n<p>\u6240\u4ee5\u6700\u597d\u505a\u4e00\u500b\u4e0b\u8f09\u7684\u6279\u6b21\u57f7\u884c\u6a94\uff0c\u5728windows \u7684\u5de5\u4f5c\u6392\u7a0b\u4e2d\u9810\u7d04\u57f7\u884c\u3002<br \/>\n\u518d\u505a\u4e00\u500b\u4e00\u500b\u5f37\u5236\u7d42\u6b62\u7684\u6279\u6b21\u57f7\u884c\u6a94\uff0c\u5728\u76f4\u64ad\u7d50\u675f\u6642\u9810\u7d04\u57f7\u884c\u3002<\/p>\n<p>\u5099\u8a3b\uff1a\u5b58\u6a94\u540d\u6293\u7cfb\u7d71\u5e74\u6708\u65e5\uff0c\u5728C\u789f\u7684Mynideo\u76ee\u9304\u4e2d\u81ea\u52d5\u5b58\u6a94\u3002<\/p>\n<p>\u4e0b\u8f09\u6279\u6b21\u57f7\u884c\u6a94\u5167\u5bb9\u5982\u4e0b\uff08\u5b58\u6210auto_record.bat\uff09\uff1a<br \/>\n@echo off<\/p>\n<p>set x=%date:~0,4%%date:~5,2%%date:~8,2%<\/p>\n<p>CD \/d C:Myvideo<br \/>\nyoutube-dl -o \u516c\u8996\u53f0\u8a9e\u53f0-%x%.%%(ext)s https:\/\/youtu.be\/sHVv4H_mva0<\/p>\n<p>\u5f37\u5236\u7d42\u6b62\u7684\u6279\u6b21\u57f7\u884c\u6a94\u5167\u5bb9\u5982\u4e0b\uff08\u5b58\u6210stop_record.bat\uff09\uff1a<br \/>\n@echo off<\/p>\n<p>taskkill \/FI &#8220;IMAGENAME eq cmd.exe&#8221;<\/p>\n<div style=\"clear: both; text-align: center;\"><a href=\"https:\/\/1.bp.blogspot.com\/-R_1-4bp1QGQ\/XX770bNkWlI\/AAAAAAAAQD8\/nU3R5CA0SjUyWA5glSuKli_GPEAE5k4vACLcBGAsYHQ\/s1600\/snipaste_20190916_110410.png\" style=\"margin-left: 1em; margin-right: 1em;\"><img decoding=\"async\" loading=\"lazy\" border=\"0\" data-original-height=\"341\" data-original-width=\"920\" height=\"236\" src=\"https:\/\/1.bp.blogspot.com\/-R_1-4bp1QGQ\/XX770bNkWlI\/AAAAAAAAQD8\/nU3R5CA0SjUyWA5glSuKli_GPEAE5k4vACLcBGAsYHQ\/s640\/snipaste_20190916_110410.png\" width=\"640\"><\/a><\/div>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<\/p>\n<p>\u88dc\u5145\u8aaa\u660e\uff1a<br \/>\n\u5728jupyter notebook\u4e2d\u57f7\u884c\u7684\u5957\u4ef6\u662f youtube_dl\u3002<\/p>\n<p>\u5b89\u88dd\u6307\u4ee4\uff1a<br \/>\npip install youtube_dl<\/p>\n<div style=\"clear: both; text-align: center;\"><a href=\"https:\/\/1.bp.blogspot.com\/-ZafGBRSebiQ\/XX7a647l-UI\/AAAAAAAAQDk\/1XgV8Pokx38MCPd2LR7Uufd7gIajAMw-QCLcBGAsYHQ\/s1600\/snipaste_20190916_084331.png\" style=\"margin-left: 1em; margin-right: 1em;\"><img decoding=\"async\" loading=\"lazy\" border=\"0\" data-original-height=\"176\" data-original-width=\"1352\" height=\"82\" src=\"https:\/\/1.bp.blogspot.com\/-ZafGBRSebiQ\/XX7a647l-UI\/AAAAAAAAQDk\/1XgV8Pokx38MCPd2LR7Uufd7gIajAMw-QCLcBGAsYHQ\/s640\/snipaste_20190916_084331.png\" width=\"640\"><\/a><\/div>\n<p>\u5b89\u88dd\u5b8c\u6210\u4e4b\u5f8c\u8981\u91cd\u555fkernel<br \/>\n\u9375\u5165help (youtube_dl)\uff0c\u6309\u57f7\u884c\u53ef\u4ee5\u67e5\u8a62\u6307\u4ee4<\/p>\n<pre style=\"background-color: white; border: none; box-sizing: unset; color: var(--jp-content-font-color1); font-family: var(--jp-code-font-family); font-size: var(--jp-code-font-size); line-height: var(--jp-code-line-height); overflow-wrap: break-word; overflow: auto; padding: 0px; white-space: pre-wrap; word-break: break-all;\">Help on package youtube_dl:\n\nNAME\n    youtube_dl - # coding: utf-8\n\nPACKAGE CONTENTS\n    YoutubeDL\n    __main__\n    aes\n    cache\n    compat\n    downloader (package)\n    extractor (package)\n    jsinterp\n    options\n    postprocessor (package)\n    socks\n    swfinterp\n    update\n    utils\n    version\n\nCLASSES\n    builtins.object\n        youtube_dl.YoutubeDL.YoutubeDL\n    \n    class YoutubeDL(builtins.object)\n     |  YoutubeDL(params=None, auto_init=True)\n     |  \n     |  YoutubeDL class.\n     |  \n     |  YoutubeDL objects are the ones responsible of downloading the\n     |  actual video file and writing it to disk if the user has requested\n     |  it, among some other tasks. In most cases there should be one per\n     |  program. As, given a video URL, the downloader doesn't know how to\n     |  extract all the needed information, task that InfoExtractors do, it\n     |  has to pass the URL to one of them.\n     |  \n     |  For this, YoutubeDL objects have a method that allows\n     |  InfoExtractors to be registered in a given order. When it is passed\n     |  a URL, the YoutubeDL object handles it to the first InfoExtractor it\n     |  finds that reports being able to handle it. The InfoExtractor extracts\n     |  all the information about the video or videos the URL refers to, and\n     |  YoutubeDL process the extracted information, possibly using a File\n     |  Downloader to download the video.\n     |  \n     |  YoutubeDL objects accept a lot of parameters. In order not to saturate\n     |  the object constructor with arguments, it receives a dictionary of\n     |  options instead. These options are available through the params\n     |  attribute for the InfoExtractors to use. The YoutubeDL also\n     |  registers itself as the downloader in charge for the InfoExtractors\n     |  that are added to it, so this is a \"mutual registration\".\n     |  \n     |  Available options:\n     |  \n     |  username:          Username for authentication purposes.\n     |  password:          Password for authentication purposes.\n     |  videopassword:     Password for accessing a video.\n     |  ap_mso:            Adobe Pass multiple-system operator identifier.\n     |  ap_username:       Multiple-system operator account username.\n     |  ap_password:       Multiple-system operator account password.\n     |  usenetrc:          Use netrc for authentication instead.\n     |  verbose:           Print additional info to stdout.\n     |  quiet:             Do not print messages to stdout.\n     |  no_warnings:       Do not print out anything for warnings.\n     |  forceurl:          Force printing final URL.\n     |  forcetitle:        Force printing title.\n     |  forceid:           Force printing ID.\n     |  forcethumbnail:    Force printing thumbnail URL.\n     |  forcedescription:  Force printing description.\n     |  forcefilename:     Force printing final filename.\n     |  forceduration:     Force printing duration.\n     |  forcejson:         Force printing info_dict as JSON.\n     |  dump_single_json:  Force printing the info_dict of the whole playlist\n     |                     (or video) as a single JSON line.\n     |  simulate:          Do not download the video files.\n     |  format:            Video format code. See options.py for more information.\n     |  outtmpl:           Template for output names.\n     |  restrictfilenames: Do not allow \"&amp;\" and spaces in file names\n     |  ignoreerrors:      Do not stop on download errors.\n     |  force_generic_extractor: Force downloader to use the generic extractor\n     |  nooverwrites:      Prevent overwriting files.\n     |  playliststart:     Playlist item to start at.\n     |  playlistend:       Playlist item to end at.\n     |  playlist_items:    Specific indices of playlist to download.\n     |  playlistreverse:   Download playlist items in reverse order.\n     |  playlistrandom:    Download playlist items in random order.\n     |  matchtitle:        Download only matching titles.\n     |  rejecttitle:       Reject downloads for matching titles.\n     |  logger:            Log messages to a logging.Logger instance.\n     |  logtostderr:       Log messages to stderr instead of stdout.\n     |  writedescription:  Write the video description to a .description file\n     |  writeinfojson:     Write the video description to a .info.json file\n     |  writeannotations:  Write the video annotations to a .annotations.xml file\n     |  writethumbnail:    Write the thumbnail image to a file\n     |  write_all_thumbnails:  Write all thumbnail formats to files\n     |  writesubtitles:    Write the video subtitles to a file\n     |  writeautomaticsub: Write the automatically generated subtitles to a file\n     |  allsubtitles:      Downloads all the subtitles of the video\n     |                     (requires writesubtitles or writeautomaticsub)\n     |  listsubtitles:     Lists all available subtitles for the video\n     |  subtitlesformat:   The format code for subtitles\n     |  subtitleslangs:    List of languages of the subtitles to download\n     |  keepvideo:         Keep the video file after post-processing\n     |  daterange:         A DateRange object, download only if the upload_date is in the range.\n     |  skip_download:     Skip the actual download of the video file\n     |  cachedir:          Location of the cache files in the filesystem.\n     |                     False to disable filesystem cache.\n     |  noplaylist:        Download single video instead of a playlist if in doubt.\n     |  age_limit:         An integer representing the user's age in years.\n     |                     Unsuitable videos for the given age are skipped.\n     |  min_views:         An integer representing the minimum view count the video\n     |                     must have in order to not be skipped.\n     |                     Videos without view count information are always\n     |                     downloaded. None for no limit.\n     |  max_views:         An integer representing the maximum view count.\n     |                     Videos that are more popular than that are not\n     |                     downloaded.\n     |                     Videos without view count information are always\n     |                     downloaded. None for no limit.\n     |  download_archive:  File name of a file where all downloads are recorded.\n     |                     Videos already present in the file are not downloaded\n     |                     again.\n     |  cookiefile:        File name where cookies should be read from and dumped to.\n     |  nocheckcertificate:Do not verify SSL certificates\n     |  prefer_insecure:   Use HTTP instead of HTTPS to retrieve information.\n     |                     At the moment, this is only supported by YouTube.\n     |  proxy:             URL of the proxy server to use\n     |  geo_verification_proxy:  URL of the proxy to use for IP address verification\n     |                     on geo-restricted sites.\n     |  socket_timeout:    Time to wait for unresponsive hosts, in seconds\n     |  bidi_workaround:   Work around buggy terminals without bidirectional text\n     |                     support, using fridibi\n     |  debug_printtraffic:Print out sent and received HTTP traffic\n     |  include_ads:       Download ads as well\n     |  default_search:    Prepend this string if an input url is not valid.\n     |                     'auto' for elaborate guessing\n     |  encoding:          Use this encoding instead of the system-specified.\n     |  extract_flat:      Do not resolve URLs, return the immediate result.\n     |                     Pass in 'in_playlist' to only show this behavior for\n     |                     playlist items.\n     |  postprocessors:    A list of dictionaries, each with an entry\n     |                     * key:  The name of the postprocessor. See\n     |                             youtube_dl\/postprocessor\/__init__.py for a list.\n     |                     as well as any further keyword arguments for the\n     |                     postprocessor.\n     |  progress_hooks:    A list of functions that get called on download\n     |                     progress, with a dictionary with the entries\n     |                     * status: One of \"downloading\", \"error\", or \"finished\".\n     |                               Check this first and ignore unknown values.\n     |  \n     |                     If status is one of \"downloading\", or \"finished\", the\n     |                     following properties may also be present:\n     |                     * filename: The final filename (always present)\n     |                     * tmpfilename: The filename we're currently writing to\n     |                     * downloaded_bytes: Bytes on disk\n     |                     * total_bytes: Size of the whole file, None if unknown\n     |                     * total_bytes_estimate: Guess of the eventual file size,\n     |                                             None if unavailable.\n     |                     * elapsed: The number of seconds since download started.\n     |                     * eta: The estimated time in seconds, None if unknown\n     |                     * speed: The download speed in bytes\/second, None if\n     |                              unknown\n     |                     * fragment_index: The counter of the currently\n     |                                       downloaded video fragment.\n     |                     * fragment_count: The number of fragments (= individual\n     |                                       files that will be merged)\n     |  \n     |                     Progress hooks are guaranteed to be called at least once\n     |                     (with status \"finished\") if the download is successful.\n     |  merge_output_format: Extension to use when merging formats.\n     |  fixup:             Automatically correct known faults of the file.\n     |                     One of:\n     |                     - \"never\": do nothing\n     |                     - \"warn\": only emit a warning\n     |                     - \"detect_or_warn\": check whether we can do anything\n     |                                         about it, warn otherwise (default)\n     |  source_address:    Client-side IP address to bind to.\n     |  call_home:         Boolean, true iff we are allowed to contact the\n     |                     youtube-dl servers for debugging.\n     |  sleep_interval:    Number of seconds to sleep before each download when\n     |                     used alone or a lower bound of a range for randomized\n     |                     sleep before each download (minimum possible number\n     |                     of seconds to sleep) when used along with\n     |                     max_sleep_interval.\n     |  max_sleep_interval:Upper bound of a range for randomized sleep before each\n     |                     download (maximum possible number of seconds to sleep).\n     |                     Must only be used along with sleep_interval.\n     |                     Actual sleep time will be a random float from range\n     |                     [sleep_interval; max_sleep_interval].\n     |  listformats:       Print an overview of available video formats and exit.\n     |  list_thumbnails:   Print a table of all thumbnails and exit.\n     |  match_filter:      A function that gets called with the info_dict of\n     |                     every video.\n     |                     If it returns a message, the video is ignored.\n     |                     If it returns None, the video is downloaded.\n     |                     match_filter_func in utils.py is one example for this.\n     |  no_color:          Do not emit color codes in output.\n     |  geo_bypass:        Bypass geographic restriction via faking X-Forwarded-For\n     |                     HTTP header\n     |  geo_bypass_country:\n     |                     Two-letter ISO 3166-2 country code that will be used for\n     |                     explicit geographic restriction bypassing via faking\n     |                     X-Forwarded-For HTTP header\n     |  geo_bypass_ip_block:\n     |                     IP range in CIDR notation that will be used similarly to\n     |                     geo_bypass_country\n     |  \n     |  The following options determine which downloader is picked:\n     |  external_downloader: Executable of the external downloader to call.\n     |                     None or unset for standard (built-in) downloader.\n     |  hls_prefer_native: Use the native HLS downloader instead of ffmpeg\/avconv\n     |                     if True, otherwise use ffmpeg\/avconv if False, otherwise\n     |                     use downloader suggested by extractor if None.\n     |  \n     |  The following parameters are not used by YoutubeDL itself, they are used by\n     |  the downloader (see youtube_dl\/downloader\/common.py):\n     |  nopart, updatetime, buffersize, ratelimit, min_filesize, max_filesize, test,\n     |  noresizebuffer, retries, continuedl, noprogress, consoletitle,\n     |  xattr_set_filesize, external_downloader_args, hls_use_mpegts,\n     |  http_chunk_size.\n     |  \n     |  The following options are used by the post processors:\n     |  prefer_ffmpeg:     If False, use avconv instead of ffmpeg if both are available,\n     |                     otherwise prefer ffmpeg.\n     |  ffmpeg_location:   Location of the ffmpeg\/avconv binary; either the path\n     |                     to the binary or its containing directory.\n     |  postprocessor_args: A list of additional command-line arguments for the\n     |                      postprocessor.\n     |  \n     |  The following options are used by the Youtube extractor:\n     |  youtube_include_dash_manifest: If True (default), DASH manifests and related\n     |                      data will be downloaded and processed by extractor.\n     |                      You can reduce network I\/O by disabling it if you don't\n     |                      care about DASH.\n     |  \n     |  Methods defined here:\n     |  \n     |  __enter__(self)\n     |  \n     |  __exit__(self, *args)\n     |  \n     |  __init__(self, params=None, auto_init=True)\n     |      Create a FileDownloader object with the given options.\n     |  \n     |  add_default_extra_info(self, ie_result, ie, url)\n     |  \n     |  add_default_info_extractors(self)\n     |      Add the InfoExtractors returned by gen_extractors to the end of the list\n     |  \n     |  add_info_extractor(self, ie)\n     |      Add an InfoExtractor object to the end of the list.\n     |  \n     |  add_post_processor(self, pp)\n     |      Add a PostProcessor object to the end of the chain.\n     |  \n     |  add_progress_hook(self, ph)\n     |      Add the progress hook (currently only for the file downloader)\n     |  \n     |  build_format_selector(self, format_spec)\n     |  \n     |  download(self, url_list)\n     |      Download a given list of URLs.\n     |  \n     |  download_with_info_file(self, info_filename)\n     |  \n     |  encode(self, s)\n     |  \n     |  extract_info(self, url, download=True, ie_key=None, extra_info={}, process=True, force_generic_extractor=False)\n     |      Returns a list with a dictionary for each video we find.\n     |      If 'download', also downloads the videos.\n     |      extra_info is a dict containing the extra values to add to each result\n     |  \n     |  get_encoding(self)\n     |  \n     |  get_info_extractor(self, ie_key)\n     |      Get an instance of an IE with name ie_key, it will try to get one from\n     |      the _ies list, if there's no instance it will create a new one and add\n     |      it to the extractor list.\n     |  \n     |  in_download_archive(self, info_dict)\n     |  \n     |  list_formats(self, info_dict)\n     |  \n     |  list_subtitles(self, video_id, subtitles, name='subtitles')\n     |  \n     |  list_thumbnails(self, info_dict)\n     |  \n     |  post_process(self, filename, ie_info)\n     |      Run all the postprocessors on the given file.\n     |  \n     |  prepare_filename(self, info_dict)\n     |      Generate the output filename.\n     |  \n     |  print_debug_header(self)\n     |  \n     |  process_ie_result(self, ie_result, download=True, extra_info={})\n     |      Take the result of the ie(may be modified) and resolve all unresolved\n     |      references (URLs, playlist items).\n     |      \n     |      It will also download the videos if 'download'.\n     |      Returns the resolved ie_result.\n     |  \n     |  process_info(self, info_dict)\n     |      Process a single resolved IE result.\n     |  \n     |  process_subtitles(self, video_id, normal_subtitles, automatic_captions)\n     |      Select the requested subtitles and their format\n     |  \n     |  process_video_result(self, info_dict, download=True)\n     |  \n     |  record_download_archive(self, info_dict)\n     |  \n     |  report_error(self, message, tb=None)\n     |      Do the same as trouble, but prefixes the message with 'ERROR:', colored\n     |      in red if stderr is a tty file.\n     |  \n     |  report_file_already_downloaded(self, file_name)\n     |      Report file has already been fully downloaded.\n     |  \n     |  report_warning(self, message)\n     |      Print the message to stderr, it will be prefixed with 'WARNING:'\n     |      If stderr is a tty file the 'WARNING:' will be colored\n     |  \n     |  restore_console_title(self)\n     |  \n     |  save_console_title(self)\n     |  \n     |  to_console_title(self, message)\n     |  \n     |  to_screen(self, message, skip_eol=False)\n     |      Print message to stdout if not in quiet mode.\n     |  \n     |  to_stderr(self, message)\n     |      Print message to stderr.\n     |  \n     |  to_stdout(self, message, skip_eol=False, check_quiet=False)\n     |      Print message to stdout if not in quiet mode.\n     |  \n     |  trouble(self, message=None, tb=None)\n     |      Determine action to take when a download problem appears.\n     |      \n     |      Depending on if the downloader has been configured to ignore\n     |      download errors or not, this method may throw an exception or\n     |      not when errors are found, after printing the message.\n     |      \n     |      tb, if given, is additional traceback information.\n     |  \n     |  urlopen(self, req)\n     |      Start an HTTP download\n     |  \n     |  warn_if_short_id(self, argv)\n     |  \n     |  ----------------------------------------------------------------------\n     |  Static methods defined here:\n     |  \n     |  add_extra_info(info_dict, extra_info)\n     |      Set the keys from extra_info in info dict if they are missing\n     |  \n     |  filter_requested_info(info_dict)\n     |  \n     |  format_resolution(format, default='unknown')\n     |  \n     |  ----------------------------------------------------------------------\n     |  Data descriptors defined here:\n     |  \n     |  __dict__\n     |      dictionary for instance variables (if defined)\n     |  \n     |  __weakref__\n     |      list of weak references to the object (if defined)\n     |  \n     |  ----------------------------------------------------------------------\n     |  Data and other attributes defined here:\n     |  \n     |  params = None\n\nFUNCTIONS\n    gen_extractors()\n        Return a list of an instance of every supported extractor.\n        The order does matter; the first extractor matched is the one handling the URL.\n    \n    list_extractors(age_limit)\n        Return a list of extractors that are suitable for the given age,\n        sorted by extractor ID.\n    \n    main(argv=None)\n\nDATA\n    __all__ = ['main', 'YoutubeDL', 'gen_extractors', 'list_extractors']\n    __license__ = 'Public Domain'\n\nFILE\n    c:userssuperuserminiconda3libsite-packagesyoutube_dl__init__.py<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u9019\u4e00\u9663\u5b50\u56e0\u70ba\u6709\u4e0b\u8f09Youtube\u4e0a\u516c\u5171\u96fb\u8996\u53f0\u76f4\u64ad\u7684\u9700\u6c42\uff0c \u722c\u6587\u627e\u89e3\u6c7a\u65b9\u6848\u3002 \u525b\u597d\u6709\u5728\u5b78Python\uff0c \u6240\u4ee5\u5c31\u76f4 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advgb_blocks_editor_width":"","advgb_blocks_columns_visual_guide":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}}},"categories":[4],"tags":[9,292,296,293,294,295],"author_meta":{"display_name":"mackuo","author_link":"https:\/\/kuo.us.to\/wordpress\/author\/mackuo\/"},"featured_img":null,"coauthors":[],"tax_additional":{"categories":{"linked":["<a href=\"https:\/\/kuo.us.to\/wordpress\/category\/python%e5%ad%b8%e7%bf%92%e7%ad%86%e8%a8%98\/\" class=\"advgb-post-tax-term\">Python\u5b78\u7fd2\u7b46\u8a18<\/a>"],"unlinked":["<span class=\"advgb-post-tax-term\">Python\u5b78\u7fd2\u7b46\u8a18<\/span>"]},"tags":{"linked":["<a href=\"https:\/\/kuo.us.to\/wordpress\/category\/python%e5%ad%b8%e7%bf%92%e7%ad%86%e8%a8%98\/\" class=\"advgb-post-tax-term\">Python<\/a>","<a href=\"https:\/\/kuo.us.to\/wordpress\/category\/python%e5%ad%b8%e7%bf%92%e7%ad%86%e8%a8%98\/\" class=\"advgb-post-tax-term\">youtube<\/a>","<a href=\"https:\/\/kuo.us.to\/wordpress\/category\/python%e5%ad%b8%e7%bf%92%e7%ad%86%e8%a8%98\/\" class=\"advgb-post-tax-term\">youtube \u4e0b\u8f09<\/a>","<a href=\"https:\/\/kuo.us.to\/wordpress\/category\/python%e5%ad%b8%e7%bf%92%e7%ad%86%e8%a8%98\/\" class=\"advgb-post-tax-term\">youtube_dl<\/a>","<a href=\"https:\/\/kuo.us.to\/wordpress\/category\/python%e5%ad%b8%e7%bf%92%e7%ad%86%e8%a8%98\/\" class=\"advgb-post-tax-term\">youtube-dl<\/a>","<a href=\"https:\/\/kuo.us.to\/wordpress\/category\/python%e5%ad%b8%e7%bf%92%e7%ad%86%e8%a8%98\/\" class=\"advgb-post-tax-term\">youtube\u76f4\u64ad<\/a>"],"unlinked":["<span class=\"advgb-post-tax-term\">Python<\/span>","<span class=\"advgb-post-tax-term\">youtube<\/span>","<span class=\"advgb-post-tax-term\">youtube \u4e0b\u8f09<\/span>","<span class=\"advgb-post-tax-term\">youtube_dl<\/span>","<span class=\"advgb-post-tax-term\">youtube-dl<\/span>","<span class=\"advgb-post-tax-term\">youtube\u76f4\u64ad<\/span>"]}},"comment_count":"0","relative_dates":{"created":"Posted 7 \u5e74 ago","modified":"Updated 3 \u5e74 ago"},"absolute_dates":{"created":"Posted on 2019 \u5e74 9 \u6708 16 \u65e5","modified":"Updated on 2023 \u5e74 2 \u6708 1 \u65e5"},"absolute_dates_time":{"created":"Posted on 2019 \u5e74 9 \u6708 16 \u65e5 \u4e0a\u5348 9:52","modified":"Updated on 2023 \u5e74 2 \u6708 1 \u65e5 \u4e0b\u5348 3:12"},"featured_img_caption":"","series_order":"","_links":{"self":[{"href":"https:\/\/kuo.us.to\/wordpress\/wp-json\/wp\/v2\/posts\/303"}],"collection":[{"href":"https:\/\/kuo.us.to\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kuo.us.to\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kuo.us.to\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kuo.us.to\/wordpress\/wp-json\/wp\/v2\/comments?post=303"}],"version-history":[{"count":1,"href":"https:\/\/kuo.us.to\/wordpress\/wp-json\/wp\/v2\/posts\/303\/revisions"}],"predecessor-version":[{"id":675,"href":"https:\/\/kuo.us.to\/wordpress\/wp-json\/wp\/v2\/posts\/303\/revisions\/675"}],"wp:attachment":[{"href":"https:\/\/kuo.us.to\/wordpress\/wp-json\/wp\/v2\/media?parent=303"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kuo.us.to\/wordpress\/wp-json\/wp\/v2\/categories?post=303"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kuo.us.to\/wordpress\/wp-json\/wp\/v2\/tags?post=303"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}