Skip to content

Commit

Permalink
feat: support fetching available episode transcripts
Browse files Browse the repository at this point in the history
  • Loading branch information
lightpohl committed May 29, 2024
1 parent a157052 commit 43e6c6c
Show file tree
Hide file tree
Showing 4 changed files with 157 additions and 43 deletions.
66 changes: 34 additions & 32 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,38 +24,40 @@ Either `--url` or `--file` must be provided.

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

| Option | Type | Required | Description |
| ------------------------ | ------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| --url | String | true\* | URL to podcast RSS feed. |
| --file | String | true\* | Path to local RSS file. |
| --out-dir | String | false | Specify output directory for episodes and metadata. Defaults to "./{{podcast_title}}". See "Template Options" for more details. |
| --threads | Number | false | Determines the number of downloads that will happen concurrently. Default is 1. |
| --attempts | Number | false | Sets the number of download attempts per individual file. Default is 3. |
| --archive | [String] | false | Download 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-template | String | false | Template for generating episode related filenames. See "Template Options" for details. |
| --include-meta | | false | Write out podcast metadata to JSON. |
| --include-episode-meta | | false | Write out individual episode metadata to JSON. |
| --include-episode-images | | false | Download found episode images. |
| --offset | Number | false | Offset starting download position. Default is 0. |
| --limit | Number | false | Max number of episodes to download. Downloads all by default. |
| --after | String | false | Only download episodes after this date (i.e. MM/DD/YYY, inclusive). |
| --before | String | false | Only download episodes before this date (i.e. MM/DD/YYY, inclusive) |
| --episode-regex | String | false | Match episode title against provided regex before starting download. |
| --episode-digits | Number | false | Minimum number of digits to use for episode numbering (e.g. 3 would generate "001" instead of "1"). Default is 0. |
| --episode-num-offset | Number | false | Offset the acquired episode number. Default is 0. |
| --episode-source-order | String | false | Attempted order to extract episode audio URL from RSS feed. Default is "enclosure,link". |
| --add-mp3-metadata | | false | Attempts 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-bitrate | String (e.g. "48k") | false | Attempts to adjust bitrate of episodes. (**ffmpeg required**) |
| --mono | | false | Attempts to force episodes into mono. (**ffmpeg required**) |
| --override | | false | Override local files on collision. |
| --always-postprocess | | false | Always run additional tasks on the file regardless if the file already exists. This includes --add-mp3-metadata, --adjust-bitrate, --mono, and --exec. |
| --reverse | | false | Reverse download direction and start at last RSS item. |
| --info | | false | Print retrieved podcast info instead of downloading. |
| --list | [String] | false | Print episode list instead of downloading. Defaults to "table" when used as a boolean option. "json" is also supported. |
| --exec | String | false | Execute a command after each episode is downloaded. See "Template Options" for more details. |
| --parser-config | String | false | Path to JSON file that will be parsed and used to override the default config passed to [rss-parser](https://github.com/rbren/rss-parser#xml-options). |
| --proxy | | false | Enable proxy support. Specify environment variables listed by [global-agent](https://github.com/gajus/global-agent#environment-variables). |
| --help | | false | Output usage information. |
| Option | Type | Required | Description |
| ----------------------------- | ------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| --url | String | true\* | URL to podcast RSS feed. |
| --file | String | true\* | Path to local RSS file. |
| --out-dir | String | false | Specify output directory for episodes and metadata. Defaults to "./{{podcast_title}}". See "Template Options" for more details. |
| --threads | Number | false | Determines the number of downloads that will happen concurrently. Default is 1. |
| --attempts | Number | false | Sets the number of download attempts per individual file. Default is 3. |
| --archive | [String] | false | Download 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-template | String | false | Template for generating episode related filenames. See "Template Options" for details. |
| --include-meta | | false | Write out podcast metadata to JSON. |
| --include-episode-meta | | false | Write out individual episode metadata **to** JSON. |
| --include-episode-images | | false | Download found episode images. |
| --include-episode-transcripts | | false | download found episode transcripts. |
| --offset | Number | false | Offset starting download position. Default is 0. |
| --limit | Number | false | Max number of episodes to download. Downloads all by default. |
| --after | String | false | Only download episodes after this date (i.e. MM/DD/YYY, inclusive). |
| --before | String | false | Only download episodes before this date (i.e. MM/DD/YYY, inclusive) |
| --episode-regex | String | false | Match episode title against provided regex before starting download. |
| --episode-digits | Number | false | Minimum number of digits to use for episode numbering (e.g. 3 would generate "001" instead of "1"). Default is 0. |
| --episode-num-offset | Number | false | Offset the acquired episode number. Default is 0. |
| --episode-source-order | String | false | Attempted order to extract episode audio URL from RSS feed. Default is "enclosure,link". |
| --episode-transcript-types | String | false | List 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-metadata | | false | Attempts 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-bitrate | String (e.g. "48k") | false | Attempts to adjust bitrate of episodes. (**ffmpeg required**) |
| --mono | | false | Attempts to force episodes into mono. (**ffmpeg required**) |
| --override | | false | Override local files on collision. |
| --always-postprocess | | false | Always run additional tasks on the file regardless if the file already exists. This includes --add-mp3-metadata, --adjust-bitrate, --mono, and --exec. |
| --reverse | | false | Reverse download direction and start at last RSS item. |
| --info | | false | Print retrieved podcast info instead of downloading. |
| --list | [String] | false | Print episode list instead of downloading. Defaults to "table" when used as a boolean option. "json" is also supported. |
| --exec | String | false | Execute a command after each episode is downloaded. See "Template Options" for more details. |
| --parser-config | String | false | Path to JSON file that will be parsed and used to override the default config passed to [rss-parser](https://github.com/rbren/rss-parser#xml-options). |
| --proxy | | false | Enable proxy support. Specify environment variables listed by [global-agent](https://github.com/gajus/global-agent#environment-variables). |
| --help | | false | Output usage information. |

## Archive

Expand Down
4 changes: 4 additions & 0 deletions bin/bin.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,10 +41,12 @@ const {
episodeRegex,
episodeSourceOrder,
episodeTemplate,
episodeTranscriptTypes,
exec,
file,
includeEpisodeImages,
includeEpisodeMeta,
includeEpisodeTranscripts,
includeMeta,
info,
limit,
Expand Down Expand Up @@ -212,6 +214,8 @@ const main = async () => {
episodeSourceOrder,
episodeTemplate,
includeEpisodeImages,
includeEpisodeTranscripts,
episodeTranscriptTypes,
});

if (!targetItems.length) {
Expand Down
Loading

0 comments on commit 43e6c6c

Please sign in to comment.