podcast-dl 9.3.4 → 9.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -42,6 +42,7 @@ Type values surrounded in square brackets (`[]`) can be used as used as boolean
42
42
  | --before | String | false | Only download episodes before this date (i.e. MM/DD/YYY, inclusive) |
43
43
  | --episode-regex | String | false | Match episode title against provided regex before starting download. |
44
44
  | --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. |
45
+ | --episode-num-offset | Number | false | Offset the acquired episode number. Default is 0. |
45
46
  | --episode-source-order | String | false | Attempted order to extract episode audio URL from RSS feed. Default is "enclosure,link". |
46
47
  | --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**) |
47
48
  | --adjust-bitrate | String (e.g. "48k") | false | Attempts to adjust bitrate of episodes. (**ffmpeg required**) |
package/bin/async.js CHANGED
@@ -165,6 +165,7 @@ const downloadItemsAsync = async ({
165
165
  bitrate,
166
166
  episodeTemplate,
167
167
  episodeDigits,
168
+ episodeNumOffset,
168
169
  episodeSourceOrder,
169
170
  exec,
170
171
  feed,
@@ -199,6 +200,7 @@ const downloadItemsAsync = async ({
199
200
  ext: audioFileExt,
200
201
  template: episodeTemplate,
201
202
  width: episodeDigits,
203
+ offset: episodeNumOffset,
202
204
  });
203
205
  const outputPodcastPath = _path.resolve(basePath, episodeFilename);
204
206
 
@@ -282,6 +284,7 @@ const downloadItemsAsync = async ({
282
284
  ext: episodeMetaExt,
283
285
  template: episodeTemplate,
284
286
  width: episodeDigits,
287
+ offset: episodeNumOffset,
285
288
  });
286
289
  const outputEpisodeMetaPath = _path.resolve(basePath, episodeMetaName);
287
290
 
package/bin/bin.js CHANGED
@@ -32,31 +32,32 @@ import { downloadItemsAsync } from "./async.js";
32
32
  setupCommander(commander, process.argv);
33
33
 
34
34
  const {
35
- file,
36
- url,
37
- outDir,
38
- episodeTemplate,
35
+ after,
36
+ alwaysPostprocess,
37
+ attempts,
38
+ before,
39
39
  episodeDigits,
40
+ episodeNumOffset,
41
+ episodeRegex,
40
42
  episodeSourceOrder,
41
- includeMeta,
42
- includeEpisodeMeta,
43
+ episodeTemplate,
44
+ exec,
45
+ file,
43
46
  includeEpisodeImages,
44
- offset,
45
- limit,
46
- episodeRegex,
47
- after,
48
- before,
49
- override,
50
- alwaysPostprocess,
51
- reverse,
47
+ includeEpisodeMeta,
48
+ includeMeta,
52
49
  info,
50
+ limit,
53
51
  list,
54
- exec,
55
52
  mono,
56
- threads,
57
- attempts,
53
+ offset,
54
+ outDir,
55
+ override,
58
56
  parserConfig,
59
57
  proxy,
58
+ reverse,
59
+ threads,
60
+ url,
60
61
  addMp3Metadata: addMp3MetadataFlag,
61
62
  adjustBitrate: bitrate,
62
63
  } = commander;
@@ -206,6 +207,7 @@ const main = async () => {
206
207
  after,
207
208
  before,
208
209
  episodeDigits,
210
+ episodeNumOffset,
209
211
  episodeRegex,
210
212
  episodeSourceOrder,
211
213
  episodeTemplate,
@@ -229,6 +231,7 @@ const main = async () => {
229
231
  bitrate,
230
232
  episodeTemplate,
231
233
  episodeDigits,
234
+ episodeNumOffset,
232
235
  episodeSourceOrder,
233
236
  exec,
234
237
  feed,
package/bin/commander.js CHANGED
@@ -26,6 +26,16 @@ export const setupCommander = (commander, argv) => {
26
26
  createParseNumber({ min: 0, name: "--episode-digits" }),
27
27
  1
28
28
  )
29
+ .option(
30
+ "--episode-num-offset <number>",
31
+ "offset the acquired episode number",
32
+ createParseNumber({
33
+ min: Number.MIN_SAFE_INTEGER,
34
+ max: Number.MAX_SAFE_INTEGER,
35
+ name: "--episode-num-offset",
36
+ }),
37
+ 0
38
+ )
29
39
  .option(
30
40
  "--episode-source-order <string>",
31
41
  "attempted order to extract episode audio URL from rss feed",
package/bin/naming.js CHANGED
@@ -18,8 +18,16 @@ const getSimpleFilename = (name, ext = "") => {
18
18
  return `${getSafeName(name, MAX_LENGTH_FILENAME - (ext?.length ?? 0))}${ext}`;
19
19
  };
20
20
 
21
- const getItemFilename = ({ item, ext, url, feed, template, width }) => {
22
- const episodeNum = feed.items.length - item._originalIndex;
21
+ const getItemFilename = ({
22
+ item,
23
+ ext,
24
+ url,
25
+ feed,
26
+ template,
27
+ width,
28
+ offset = 0,
29
+ }) => {
30
+ const episodeNum = feed.items.length - item._originalIndex + offset;
23
31
  const formattedPubDate = item.pubDate
24
32
  ? dayjs(new Date(item.pubDate)).format("YYYYMMDD")
25
33
  : null;
package/bin/util.js CHANGED
@@ -15,7 +15,7 @@ const isWin = process.platform === "win32";
15
15
  Escape arguments for a shell command used with exec.
16
16
  Borrowed from shell-escape: https://github.com/xxorax/node-shell-escape/
17
17
  Additionally, @see https://www.robvanderwoude.com/escapechars.php for why
18
- we avoid trying tp escape complex sequences in Windows.
18
+ we avoid trying to escape complex sequences in Windows.
19
19
  */
20
20
  const escapeArgForShell = (arg) => {
21
21
  let result = arg;
@@ -154,6 +154,7 @@ const getItemsToDownload = ({
154
154
  before,
155
155
  after,
156
156
  episodeDigits,
157
+ episodeNumOffset,
157
158
  episodeRegex,
158
159
  episodeSourceOrder,
159
160
  episodeTemplate,
@@ -243,6 +244,7 @@ const getItemsToDownload = ({
243
244
  ext: episodeImageFileExt,
244
245
  template: episodeTemplate,
245
246
  width: episodeDigits,
247
+ offset: episodeNumOffset,
246
248
  });
247
249
 
248
250
  const outputImagePath = path.resolve(basePath, episodeImageName);
package/bin/validate.js CHANGED
@@ -10,7 +10,6 @@ const createParseNumber = ({ min, max, name, required = true }) => {
10
10
 
11
11
  try {
12
12
  let number = parseInt(value);
13
-
14
13
  if (isNaN(number)) {
15
14
  logErrorAndExit(`${name} must be a number`);
16
15
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "podcast-dl",
3
- "version": "9.3.4",
3
+ "version": "9.4.0",
4
4
  "description": "A CLI for downloading podcasts.",
5
5
  "type": "module",
6
6
  "bin": "./bin/bin.js",