Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

A humble CLI for downloading and archiving podcasts.

License

NotificationsYou must be signed in to change notification settings

lightpohl/podcast-dl

Repository files navigation

A humble CLI for downloading and archiving podcasts.

How to Use

npx

Node Required

npx podcast-dl --url <PODCAST_RSS_URL>

Binaries

Visit the releases page and download the latest binary for your system.

podcast-dl --url <PODCAST_RSS_URL>

Options

Either--url or--file must be provided.

Type values surrounded in square brackets ([]) can be used as used as boolean options (no argument required).

OptionTypeRequiredDescription
--urlStringtrue*URL to podcast RSS feed.
--fileStringtrue*Path to local RSS file.
--out-dirStringfalseSpecify output directory for episodes and metadata. Defaults to "./{{podcast_title}}". See "Template Options" for more details.
--threadsNumberfalseDetermines the number of downloads that will happen concurrently. Default is 1.
--attemptsNumberfalseSets the number of download attempts per individual file. Default is 3.
--archive[String]falseDownload or write out items not listed in archive file. Generates archive file at path if not found. Defaults to "./{{podcast_title}}/archive.json" when used as a boolean option. See "Template Options" for more details.
--episode-templateStringfalseTemplate for generating episode related filenames. See "Template Options" for details.
--episode-custom-template-options<String...>falseProvide custom options for the episode template. See "Template Options" for details.
--include-metafalseWrite out podcast metadata to JSON.
--include-episode-metafalseWrite out individual episode metadatato JSON.
--include-episode-imagesfalseDownload found episode images.
--include-episode-transcriptsfalseDownload found episode transcripts.
--offsetNumberfalseOffset starting download position. Default is 0.
--limitNumberfalseMax number of episodes to download. Downloads all by default.
--afterStringfalseOnly download episodes after this date (i.e. MM/DD/YYY, inclusive).
--beforeStringfalseOnly download episodes before this date (i.e. MM/DD/YYY, inclusive)
--episode-regexStringfalseMatch episode title against provided regex before starting download.
--episode-regex-excludeStringfalseMatched episode titles against provided regex will be excluded.
--episode-digitsNumberfalseMinimum number of digits to use for episode numbering (e.g. 3 would generate "001" instead of "1"). Default is 0.
--episode-num-offsetNumberfalseOffset the acquired episode number. Default is 0.
--episode-source-orderStringfalseAttempted order to extract episode audio URL from RSS feed. Default is "enclosure,link".
--episode-transcript-typesStringfalseList of allowed transcript types in preferred order. Default is "application/json,application/x-subrip,application/srr,application/srt,text/vtt,text/html,text/plain".
--add-mp3-metadatafalseAttempts to add a base level of episode metadata to each episode. Recommended only in cases where the original metadata is of poor quality. (ffmpeg required)
--adjust-bitrateString (e.g. "48k")falseAttempts to adjust bitrate of episodes. (ffmpeg required)
--monofalseAttempts to force episodes into mono. (ffmpeg required)
--overridefalseOverride local files on collision.
--always-postprocessfalseAlways run additional tasks on the file regardless if the file already exists. This includes --add-mp3-metadata, --adjust-bitrate, --mono, and --exec.
--reversefalseReverse download direction and start at last RSS item.
--infofalsePrint retrieved podcast info instead of downloading.
--list[String]falsePrint episode list instead of downloading. Defaults to "table" when used as a boolean option. "json" is also supported.
--execStringfalseExecute a command after each episode is downloaded. See "Template Options" for more details.
--parser-configStringfalsePath to JSON file that will be parsed and used to override the default config passed torss-parser.
--proxyfalseEnable proxy support. Specify environment variables listed byglobal-agent.
--helpfalseOutput usage information.

Archive

  • If passed the--archive [path] option,podcast-dl will generate/use a JSON archive at the provided path.
  • Before downloading an episode or writing out metadata, it'll check if the item was saved previously and abort the save if found.

Template Options

Options that support templates allow users to specify a template for the generated filename(s) or option. The provided template will replace all matched keywords with the related data described below. Each keyword must be wrapped in two braces like so:

--out-dir "./{{podcast_title}}"

--episode-template "{{release_date}}-{{title}}"

--out-dir &--archive

  • podcast_title: Title of the podcast feed.
  • podcast_link:link value provided for the podcast feed. Typically the homepage URL.

--episode-template

  • title: The title of the episode.
  • release_date: The release date of the episode inYYYYMMDD format.
  • release_year: The release year (YYYY) of the episode.
  • release_month: The release month (MM) of the episode.
  • release_day: The release day (DD) of the episode.
  • episode_num: The location number of where the episodes appears in the feed.
  • url: URL of episode audio file.
  • duration: Providedmm:ss duration (if found).
  • podcast_title: Title of the podcast feed.
  • podcast_link:link value provided for the podcast feed. Typically the homepage URL.
  • guid: The GUID of the episode.

--episode-custom-template-options

Each matcher provided will be used to extract a value from the episodetitle. Access these values in the template using thecustom_<n> keyword where<n> is the index of the matcher provided (starting from0).

If no match is found, thecustom_<n> keyword will be replaced with an empty string.

--exec

  • episode_path: The path to the downloaded episode.
  • episode_path_base: The path to the folder of the downloaded episode.
  • episode_filename: The filename of the episode.
  • episode_filename_base: The filename of the episode without its extension.
  • url: URL of episode audio file.

Log Levels

By default, all logs and errors are outputted to the console. The amount of logs can be controlled using the environment variableLOG_LEVEL with the following options:

  • static: All logs and errors are outputted to the console, but disables any animations.
  • quiet: Only important info and non-critical errors will be logged (e.g. episode download started).
  • silent: Only critical error messages will be be logged.

OS Filename Limits

By default, the max length of a generated filename is255. If your OS has different limitations, or if you're running into issues with non-standard feeds, you can adjust the limit via the environment variableMAX_LENGTH_FILENAME.


[8]ページ先頭

©2009-2025 Movatter.jp