cross-seed 6.1.1 → 6.2.1

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.
Files changed (41) hide show
  1. package/dist/action.js +26 -5
  2. package/dist/action.js.map +1 -1
  3. package/dist/clients/Deluge.js +6 -2
  4. package/dist/clients/Deluge.js.map +1 -1
  5. package/dist/clients/QBittorrent.js +50 -17
  6. package/dist/clients/QBittorrent.js.map +1 -1
  7. package/dist/clients/RTorrent.js.map +1 -1
  8. package/dist/clients/TorrentClient.js +24 -1
  9. package/dist/clients/TorrentClient.js.map +1 -1
  10. package/dist/clients/Transmission.js +5 -1
  11. package/dist/clients/Transmission.js.map +1 -1
  12. package/dist/config.template.cjs +22 -17
  13. package/dist/config.template.cjs.map +1 -1
  14. package/dist/configSchema.js +82 -14
  15. package/dist/configSchema.js.map +1 -1
  16. package/dist/constants.js +1 -0
  17. package/dist/constants.js.map +1 -1
  18. package/dist/dataFiles.js +19 -11
  19. package/dist/dataFiles.js.map +1 -1
  20. package/dist/decide.js +67 -72
  21. package/dist/decide.js.map +1 -1
  22. package/dist/inject.js +1 -1
  23. package/dist/inject.js.map +1 -1
  24. package/dist/migrations/08-rss.js +15 -0
  25. package/dist/migrations/08-rss.js.map +1 -0
  26. package/dist/migrations/migrations.js +2 -0
  27. package/dist/migrations/migrations.js.map +1 -1
  28. package/dist/pipeline.js +43 -24
  29. package/dist/pipeline.js.map +1 -1
  30. package/dist/pushNotifier.js.map +1 -1
  31. package/dist/server.js +57 -12
  32. package/dist/server.js.map +1 -1
  33. package/dist/startup.js +13 -0
  34. package/dist/startup.js.map +1 -1
  35. package/dist/torrent.js +1 -1
  36. package/dist/torrent.js.map +1 -1
  37. package/dist/torznab.js +81 -40
  38. package/dist/torznab.js.map +1 -1
  39. package/dist/utils.js +16 -0
  40. package/dist/utils.js.map +1 -1
  41. package/package.json +1 -1
@@ -114,6 +114,7 @@ module.exports = {
114
114
  */
115
115
  delay: 30,
116
116
  /**
117
+ * Usually unnecessary: https://www.cross-seed.org/docs/v6-migration#data-based-matching-use-cases
117
118
  * To search with already downloaded data, you can enter the directories
118
119
  * to your downloaded torrent data to find matches, rather than relying
119
120
  * entirely on the .torrent files themselves for matching.
@@ -214,15 +215,14 @@ module.exports = {
214
215
  */
215
216
  outputDir: ".",
216
217
  /**
217
- * Whether to include single episode torrents in a search (not those from
218
- * season packs).
218
+ * Whether to include single episode torrents in search/webhook/rss.
219
219
  *
220
- * This setting does not affect matching episodes from rss and
221
- * announce.
220
+ * This setting does not affect matching episodes from announce. Read more about usage:
221
+ * https://www.cross-seed.org/docs/v6-migration#updated-includesingleepisodes-behavior
222
222
  */
223
223
  includeSingleEpisodes: false,
224
224
  /**
225
- * Include torrents which are comprised of non-video files.
225
+ * Include torrents/data comprised of non-video files.
226
226
  *
227
227
  * If this option is set to false, any folders or torrents whose
228
228
  * totalNonVideoFilesSize / totalSize > fuzzySizeThreshold
@@ -243,8 +243,8 @@ module.exports = {
243
243
  * includeSingleEpisodes: true
244
244
  * includeNonVideos: false
245
245
  *
246
- * To search for absolutely ALL types of content, including non-video, configure
247
- * your episode settings based on the above examples and use:
246
+ * To search for absolutely ALL types of content, including non-video,
247
+ * configure your episode settings based on the above examples and use:
248
248
  *
249
249
  * includeNonVideos: true
250
250
  */
@@ -262,7 +262,7 @@ module.exports = {
262
262
  * https://github.com/vercel/ms
263
263
  */
264
264
  /**
265
- * Exclude torrents first seen by cross-seed more than this long ago.
265
+ * Exclude torrents or data first seen by cross-seed more than this long ago.
266
266
  * Examples:
267
267
  * "5 days"
268
268
  * "2 weeks"
@@ -271,8 +271,9 @@ module.exports = {
271
271
  */
272
272
  excludeOlder: "2 weeks",
273
273
  /**
274
- * Exclude torrents which have been searched more recently than this long
275
- * ago.
274
+ * Exclude torrents or data which has been searched more recently than this
275
+ * long ago.
276
+ *
276
277
  * Doesn't exclude previously failed searches.
277
278
  * Examples:
278
279
  * "2 days"
@@ -291,10 +292,12 @@ module.exports = {
291
292
  * Whether to inject using the same labels/categories as the original
292
293
  * torrent.
293
294
  *
294
- * qBittorrent: This will apply the category's original category as a tag.
295
+ * qBittorrent (linking): The category will always be linkCategory.
296
+ * If set to true, a tag of category.cross-seed will be added.
295
297
  *
296
- * Example: if you have an original label/category called "Movies", this will
297
- * automatically inject cross-seeds to "Movies.cross-seed".
298
+ * Example (Non-Linking): if you have an original label/category called
299
+ * "Movies", this will automatically inject cross-seeds to
300
+ * "Movies.cross-seed".
298
301
  */
299
302
  duplicateCategories: false,
300
303
  /**
@@ -332,7 +335,7 @@ module.exports = {
332
335
  */
333
336
  searchTimeout: "2 minutes",
334
337
  /**
335
- * The number of searches to make in one run/batch.
338
+ * The number of searches (unique queries) to make in one run/batch per indexer.
336
339
  * If more than this many searches are queued,
337
340
  * "searchCadence" will determine how long until the next batch.
338
341
  *
@@ -343,9 +346,11 @@ module.exports = {
343
346
  */
344
347
  searchLimit: 400,
345
348
  /**
346
- * The list of infohashes or strings which are contained in torrents that
347
- * you want to be excluded from cross-seed. This is the same format as
348
- * torznab, surround the entire set of quoted strings in square brackets
349
+ * The list of infohashes or strings which are contained in torrents or data
350
+ * searches that you want to be excluded from cross-seed. This is the same
351
+ * format as torznab, surround the entire set of quoted strings in square
352
+ * brackets.
353
+ *
349
354
  * You can use any combination which must be entered on the one line.
350
355
  * Leave as undefined to disable.
351
356
  *
@@ -1 +1 @@
1
- {"version":3,"file":"config.template.cjs","sourceRoot":"","sources":["../src/config.template.cjs"],"names":[],"mappings":";AAAA,+EAA+E;AAC/E,qBAAqB;AAErB,MAAM,CAAC,OAAO,GAAG;IAChB;;;;;;;;QAQI;IAEJ;;;;;OAKG;IACH,MAAM,EAAE,SAAS;IAEjB;;;;;;OAMG;IACH,OAAO,EAAE,EAAE;IAEX;;;;;;;;;;;;;OAaG;IACH,MAAM,EAAE,SAAS;IAEjB;;;;;;;;;;;;;OAaG;IACH,MAAM,EAAE,SAAS;IAEjB;;;;OAIG;IACH,IAAI,EAAE,SAAS;IAEf;;OAEG;IACH,IAAI,EAAE,IAAI;IAEV;;;OAGG;IACH,sBAAsB,EAAE,SAAS;IAEjC;;;;OAIG;IACH,cAAc,EAAE,SAAS;IAEzB;;;;;;;;;OASG;IACH,cAAc,EAAE,SAAS;IAEzB;;;;;;OAMG;IACH,kBAAkB,EAAE,SAAS;IAE7B;;;;;;OAMG;IACH,YAAY,EAAE,SAAS;IAEvB;;OAEG;IAEH;;;;OAIG;IACH,KAAK,EAAE,EAAE;IAET;;;;;;;;;;;;;;;OAeG;IACH,QAAQ,EAAE,EAAE;IAEZ;;;;;;;OAOG;IACH,YAAY,EAAE,iBAAiB;IAE/B;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,EAAE,SAAS;IAElB;;;;;OAKG;IACH,QAAQ,EAAE,UAAU;IAEpB;;;;;;;;;;OAUG;IACH,WAAW,EAAE,KAAK;IAElB;;;;;;;;;;;;OAYG;IACH,SAAS,EAAE,MAAM;IAEjB;;;;OAIG;IACH,YAAY,EAAE,CAAC;IAEf;;;;;;;;;OASG;IACH,UAAU,EAAE,2BAA2B;IAEvC;;;;OAIG;IACH,SAAS,EAAE,GAAG;IAEd;;;;;;OAMG;IACH,qBAAqB,EAAE,KAAK;IAE5B;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,gBAAgB,EAAE,KAAK;IAEvB;;;;;;OAMG;IACH,kBAAkB,EAAE,IAAI;IAExB;;;OAGG;IAEH;;;;;;;OAOG;IACH,YAAY,EAAE,SAAS;IAEvB;;;;;;;;;OASG;IACH,mBAAmB,EAAE,QAAQ;IAE7B;;;OAGG;IACH,MAAM,EAAE,QAAQ;IAEhB;;;;;;;;;OASG;IACH,mBAAmB,EAAE,KAAK;IAE1B;;;;;;OAMG;IACH,UAAU,EAAE,YAAY;IAExB;;;;;;;;OAQG;IACH,aAAa,EAAE,OAAO;IAEtB;;;;;;OAMG;IACH,aAAa,EAAE,YAAY;IAE3B;;;;;;OAMG;IACH,aAAa,EAAE,WAAW;IAE1B;;;;;;;;;OASG;IACH,WAAW,EAAE,GAAG;IAEhB;;;;;;;;;;;;;OAaG;IACH,SAAS,EAAE,EAAE;CACb,CAAC"}
1
+ {"version":3,"file":"config.template.cjs","sourceRoot":"","sources":["../src/config.template.cjs"],"names":[],"mappings":";AAAA,+EAA+E;AAC/E,qBAAqB;AAErB,MAAM,CAAC,OAAO,GAAG;IAChB;;;;;;;;QAQI;IAEJ;;;;;OAKG;IACH,MAAM,EAAE,SAAS;IAEjB;;;;;;OAMG;IACH,OAAO,EAAE,EAAE;IAEX;;;;;;;;;;;;;OAaG;IACH,MAAM,EAAE,SAAS;IAEjB;;;;;;;;;;;;;OAaG;IACH,MAAM,EAAE,SAAS;IAEjB;;;;OAIG;IACH,IAAI,EAAE,SAAS;IAEf;;OAEG;IACH,IAAI,EAAE,IAAI;IAEV;;;OAGG;IACH,sBAAsB,EAAE,SAAS;IAEjC;;;;OAIG;IACH,cAAc,EAAE,SAAS;IAEzB;;;;;;;;;OASG;IACH,cAAc,EAAE,SAAS;IAEzB;;;;;;OAMG;IACH,kBAAkB,EAAE,SAAS;IAE7B;;;;;;OAMG;IACH,YAAY,EAAE,SAAS;IAEvB;;OAEG;IAEH;;;;OAIG;IACH,KAAK,EAAE,EAAE;IAET;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,EAAE,EAAE;IAEZ;;;;;;;OAOG;IACH,YAAY,EAAE,iBAAiB;IAE/B;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,EAAE,SAAS;IAElB;;;;;OAKG;IACH,QAAQ,EAAE,UAAU;IAEpB;;;;;;;;;;OAUG;IACH,WAAW,EAAE,KAAK;IAElB;;;;;;;;;;;;OAYG;IACH,SAAS,EAAE,MAAM;IAEjB;;;;OAIG;IACH,YAAY,EAAE,CAAC;IAEf;;;;;;;;;OASG;IACH,UAAU,EAAE,2BAA2B;IAEvC;;;;OAIG;IACH,SAAS,EAAE,GAAG;IAEd;;;;;OAKG;IACH,qBAAqB,EAAE,KAAK;IAE5B;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,gBAAgB,EAAE,KAAK;IAEvB;;;;;;OAMG;IACH,kBAAkB,EAAE,IAAI;IAExB;;;OAGG;IAEH;;;;;;;OAOG;IACH,YAAY,EAAE,SAAS;IAEvB;;;;;;;;;;OAUG;IACH,mBAAmB,EAAE,QAAQ;IAE7B;;;OAGG;IACH,MAAM,EAAE,QAAQ;IAEhB;;;;;;;;;;;OAWG;IACH,mBAAmB,EAAE,KAAK;IAE1B;;;;;;OAMG;IACH,UAAU,EAAE,YAAY;IAExB;;;;;;;;OAQG;IACH,aAAa,EAAE,OAAO;IAEtB;;;;;;OAMG;IACH,aAAa,EAAE,YAAY;IAE3B;;;;;;OAMG;IACH,aAAa,EAAE,WAAW;IAE1B;;;;;;;;;OASG;IACH,WAAW,EAAE,GAAG;IAEhB;;;;;;;;;;;;;;;OAeG;IACH,SAAS,EAAE,EAAE;CACb,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { readdirSync } from "fs";
1
2
  import ms from "ms";
2
3
  import { isAbsolute, relative, resolve } from "path";
3
4
  import { z } from "zod";
@@ -16,14 +17,20 @@ const ZodErrorMessages = {
16
17
  searchCadenceExcludeRecent: "excludeRecentSearch must be at least 3x searchCadence.",
17
18
  excludeRecentOlder: "excludeOlder and excludeRecentSearch must be defined for searching. excludeOlder must be 2-5x excludeRecentSearch.",
18
19
  fuzzySizeThreshold: "fuzzySizeThreshold must be between 0 and 1 with a maximum of 0.1 when using searchCadence or rssCadence",
20
+ injectNeedsInjectMode: "`cross-seed inject` requires the 'inject' action.",
19
21
  injectUrl: "You need to specify rtorrentRpcUrl, transmissionRpcUrl, qbittorrentUrl, or delugeRpcUrl when using 'inject'",
20
22
  qBitAutoTMM: "If using Automatic Torrent Management in qBittorrent, please read: https://www.cross-seed.org/docs/v6-migration#qbittorrent",
21
23
  includeSingleEpisodes: "includeSingleEpisodes is not recommended when using announce, please read: https://www.cross-seed.org/docs/v6-migration#updated-includesingleepisodes-behavior",
24
+ invalidOutputDir: "outputDir should only contain .torrent files, cross-seed will populate and manage (https://www.cross-seed.org/docs/basics/options#outputdir)",
25
+ invalidTorrentDir: "torrentDir must contain at least one .torrent file (https://www.cross-seed.org/docs/basics/options#torrentdir). If no torrents are in client, set to null for now.",
22
26
  needsTorrentDir: "You need to set torrentDir for rss and announce matching to work.",
23
27
  needsInject: "You need to use the 'inject' action for partial matching.",
24
28
  needsLinkDir: "You need to set a linkDir (and have your data accessible) for risky or partial matching to work.",
25
- linkDirInDataDir: "You cannot have your linkDir inside of your dataDirs. Please adjust your paths to correct this.",
26
- outputDirInInputDir: "You cannot have your outputDir inside of your torrentDir/dataDirs. Please adjust your paths to correct this.",
29
+ linkDirInOtherDirs: "You cannot have your linkDir inside of your torrentDir/dataDirs/outputDir. Please adjust your paths to correct this.",
30
+ dataDirsInOtherDirs: "You cannot have your dataDirs inside of your torrentDir/linkDir/outputDir. Please adjust your paths to correct this.",
31
+ torrentDirInOtherDirs: "You cannot have your torrentDir inside of your dataDirs/linkDir/outputDir. Please adjust your paths to correct this.",
32
+ outputDirInOtherDirs: "You cannot have your outputDir inside of your torrentDir/dataDirs/linkDir. Please adjust your paths to correct this.",
33
+ relativePaths: "Absolute paths for torrentDir, linkDir, dataDirs, and outputDir are recommended.",
27
34
  };
28
35
  /**
29
36
  * custom zod error map for logging
@@ -106,8 +113,16 @@ export const VALIDATION_SCHEMA = z
106
113
  .nullish()
107
114
  .transform((value) => (typeof value === "boolean" ? value : false)),
108
115
  maxDataDepth: z.number().gte(1),
109
- torrentDir: z.string().nullable(),
110
- outputDir: z.string(),
116
+ torrentDir: z
117
+ .string()
118
+ .nullable()
119
+ .refine((d) => !d || readdirSync(d).some((f) => f.endsWith(".torrent")), ZodErrorMessages.invalidTorrentDir),
120
+ outputDir: z.string().refine((dir) => {
121
+ if (readdirSync(dir).some((f) => !f.endsWith(".torrent"))) {
122
+ logger.warn(ZodErrorMessages.invalidOutputDir);
123
+ }
124
+ return true;
125
+ }),
111
126
  injectDir: z.string().optional(),
112
127
  includeSingleEpisodes: z.boolean(),
113
128
  includeNonVideos: z.boolean(),
@@ -218,7 +233,8 @@ export const VALIDATION_SCHEMA = z
218
233
  }
219
234
  return true;
220
235
  })
221
- .refine((config) => !((config.action === Action.INJECT || config.injectDir) &&
236
+ .refine((config) => config.action === Action.INJECT || !config.injectDir, ZodErrorMessages.injectNeedsInjectMode)
237
+ .refine((config) => !(config.action === Action.INJECT &&
222
238
  !config.rtorrentRpcUrl &&
223
239
  !config.qbittorrentUrl &&
224
240
  !config.transmissionRpcUrl &&
@@ -229,18 +245,70 @@ export const VALIDATION_SCHEMA = z
229
245
  .refine((config) => config.torrentDir || !config.rssCadence, ZodErrorMessages.needsTorrentDir)
230
246
  .refine((config) => config.linkDir || config.matchMode === MatchMode.SAFE, ZodErrorMessages.needsLinkDir)
231
247
  .refine((config) => {
232
- if (config.linkDir && config.dataDirs) {
233
- return !isChildPath(config.linkDir, config.dataDirs);
248
+ if (!config.linkDir)
249
+ return true;
250
+ if (isChildPath(config.linkDir, [config.outputDir]))
251
+ return false;
252
+ if (config.dataDirs && isChildPath(config.linkDir, config.dataDirs)) {
253
+ return false;
254
+ }
255
+ if (config.torrentDir &&
256
+ isChildPath(config.linkDir, [config.torrentDir])) {
257
+ return false;
258
+ }
259
+ return true;
260
+ }, ZodErrorMessages.linkDirInOtherDirs)
261
+ .refine((config) => {
262
+ if (!config.dataDirs)
263
+ return true;
264
+ for (const dataDir of config.dataDirs) {
265
+ if (isChildPath(dataDir, [config.outputDir]))
266
+ return false;
267
+ if (config.torrentDir &&
268
+ isChildPath(dataDir, [config.torrentDir])) {
269
+ return false;
270
+ }
271
+ if (config.linkDir && isChildPath(dataDir, [config.linkDir])) {
272
+ return false;
273
+ }
274
+ }
275
+ return true;
276
+ }, ZodErrorMessages.dataDirsInOtherDirs)
277
+ .refine((config) => {
278
+ if (!config.torrentDir)
279
+ return true;
280
+ if (isChildPath(config.torrentDir, [config.outputDir]))
281
+ return false;
282
+ if (config.dataDirs &&
283
+ isChildPath(config.torrentDir, config.dataDirs)) {
284
+ return false;
285
+ }
286
+ if (config.linkDir &&
287
+ isChildPath(config.torrentDir, [config.linkDir])) {
288
+ return false;
289
+ }
290
+ return true;
291
+ }, ZodErrorMessages.torrentDirInOtherDirs)
292
+ .refine((config) => {
293
+ if (config.torrentDir &&
294
+ isChildPath(config.outputDir, [config.torrentDir])) {
295
+ return false;
296
+ }
297
+ if (config.dataDirs && isChildPath(config.outputDir, config.dataDirs)) {
298
+ return false;
299
+ }
300
+ if (config.linkDir && isChildPath(config.outputDir, [config.linkDir])) {
301
+ return false;
234
302
  }
235
303
  return true;
236
- }, ZodErrorMessages.linkDirInDataDir)
304
+ }, ZodErrorMessages.outputDirInOtherDirs)
237
305
  .refine((config) => {
238
- if (config.torrentDir) {
239
- return !isChildPath(config.outputDir, [
240
- config.torrentDir,
241
- ...(config.dataDirs ?? []),
242
- ]);
306
+ if (!isAbsolute(config.outputDir) ||
307
+ (config.torrentDir && !isAbsolute(config.torrentDir)) ||
308
+ (config.linkDir && !isAbsolute(config.linkDir)) ||
309
+ (config.dataDirs && !config.dataDirs.every(isAbsolute))) {
310
+ logger.warn(ZodErrorMessages.relativePaths);
243
311
  }
244
312
  return true;
245
- }, ZodErrorMessages.outputDirInInputDir);
313
+ });
246
314
  //# sourceMappingURL=configSchema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"configSchema.js","sourceRoot":"","sources":["../src/configSchema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"configSchema.js","sourceRoot":"","sources":["../src/configSchema.ts"],"names":[],"mappings":"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"}
package/dist/constants.js CHANGED
@@ -27,6 +27,7 @@ export const CALIBRE_INDEXNUM_REGEX = /\s?\(\d+\)$/;
27
27
  export const SAVED_TORRENTS_INFO_REGEX = /^\[(?<mediaType>.+?)\]\[(?<tracker>.+?)\](?<name>.+?)(?:\[[^\]]*?\])?\.torrent$/i;
28
28
  export const BAD_GROUP_PARSE_REGEX = /^(?<badmatch>(?:dl|DDP?|aac|eac3|atmos|dts|ma|hd|[heav.c]{3.5}|[xh.]{1,2}[2456]|[0-9]+[ip]?|dxva|full|blu|ray|s(?:eason)?\W\d+|\W){3,})$/i;
29
29
  export const JSON_VALUES_REGEX = /".+?"\s*:\s*"(?<value>.+?)"\s*(?:,|})/g;
30
+ export const ABS_WIN_PATH_REGEX = /^[a-z]:|^\\/i;
30
31
  // Needs to be handled through helper functions since there are variations
31
32
  const SOURCE_REGEXES = {
32
33
  AMZN: /\b(amzn|amazon(hd)?)\b[ ._-]web[ ._-]?(dl|rip)?\b/i,
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
package/dist/dataFiles.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { readdirSync, statSync } from "fs";
2
2
  import { basename, extname, join } from "path";
3
3
  import { IGNORED_FOLDERS_SUBSTRINGS, VIDEO_EXTENSIONS } from "./constants.js";
4
+ import { logger } from "./logger.js";
4
5
  import { getRuntimeConfig } from "./runtimeConfig.js";
5
6
  function shouldIgnorePathHeuristically(root, isDir) {
6
7
  const searchBasename = basename(root);
@@ -12,18 +13,25 @@ function shouldIgnorePathHeuristically(root, isDir) {
12
13
  }
13
14
  }
14
15
  export function findPotentialNestedRoots(root, depth, isDirHint) {
15
- const isDir = isDirHint !== undefined ? isDirHint : statSync(root).isDirectory();
16
- if (depth <= 0 || shouldIgnorePathHeuristically(root, isDir)) {
17
- return [];
18
- }
19
- // if depth is 0, don't look at children
20
- else if (depth > 0 && isDir) {
21
- const directChildren = readdirSync(root, { withFileTypes: true });
22
- const allDescendants = directChildren.flatMap((dirent) => findPotentialNestedRoots(join(root, dirent.name), depth - 1, dirent.isDirectory()));
23
- return [root, ...allDescendants];
16
+ try {
17
+ const isDir = isDirHint !== undefined ? isDirHint : statSync(root).isDirectory();
18
+ if (depth <= 0 || shouldIgnorePathHeuristically(root, isDir)) {
19
+ return [];
20
+ }
21
+ // if depth is 0, don't look at children
22
+ else if (depth > 0 && isDir) {
23
+ const directChildren = readdirSync(root, { withFileTypes: true });
24
+ const allDescendants = directChildren.flatMap((dirent) => findPotentialNestedRoots(join(root, dirent.name), depth - 1, dirent.isDirectory()));
25
+ return [root, ...allDescendants];
26
+ }
27
+ else {
28
+ return [root];
29
+ }
24
30
  }
25
- else {
26
- return [root];
31
+ catch (e) {
32
+ logger.verbose(`Failed to process path: ${root}`);
33
+ logger.debug(e);
34
+ return [];
27
35
  }
28
36
  }
29
37
  export function findSearcheesFromAllDataDirs() {
@@ -1 +1 @@
1
- {"version":3,"file":"dataFiles.js","sourceRoot":"","sources":["../src/dataFiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC/C,OAAO,EAAE,0BAA0B,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,SAAS,6BAA6B,CAAC,IAAY,EAAE,KAAc;IAClE,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,KAAK,EAAE,CAAC;QACX,OAAO,0BAA0B,CAAC,QAAQ,CACzC,cAAc,CAAC,WAAW,EAAE,CAC5B,CAAC;IACH,CAAC;SAAM,CAAC;QACP,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;IAC5D,CAAC;AACF,CAAC;AAED,MAAM,UAAU,wBAAwB,CACvC,IAAY,EACZ,KAAa,EACb,SAAmB;IAEnB,MAAM,KAAK,GACV,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;IACpE,IAAI,KAAK,IAAI,CAAC,IAAI,6BAA6B,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;QAC9D,OAAO,EAAE,CAAC;IACX,CAAC;IACD,wCAAwC;SACnC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC;QAC7B,MAAM,cAAc,GAAG,WAAW,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAClE,MAAM,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CACxD,wBAAwB,CACvB,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EACvB,KAAK,GAAG,CAAC,EACT,MAAM,CAAC,WAAW,EAAE,CACpB,CACD,CAAC;QACF,OAAO,CAAC,IAAI,EAAE,GAAG,cAAc,CAAC,CAAC;IAClC,CAAC;SAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;AACF,CAAC;AAED,MAAM,UAAU,4BAA4B;IAC3C,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,gBAAgB,EAAE,CAAC;IACtD,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CACnC,WAAW,CAAC,OAAO,CAAC;SAClB,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;SACtC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,wBAAwB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CACjE,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"dataFiles.js","sourceRoot":"","sources":["../src/dataFiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC/C,OAAO,EAAE,0BAA0B,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,SAAS,6BAA6B,CAAC,IAAY,EAAE,KAAc;IAClE,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,KAAK,EAAE,CAAC;QACX,OAAO,0BAA0B,CAAC,QAAQ,CACzC,cAAc,CAAC,WAAW,EAAE,CAC5B,CAAC;IACH,CAAC;SAAM,CAAC;QACP,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;IAC5D,CAAC;AACF,CAAC;AAED,MAAM,UAAU,wBAAwB,CACvC,IAAY,EACZ,KAAa,EACb,SAAmB;IAEnB,IAAI,CAAC;QACJ,MAAM,KAAK,GACV,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QACpE,IAAI,KAAK,IAAI,CAAC,IAAI,6BAA6B,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;YAC9D,OAAO,EAAE,CAAC;QACX,CAAC;QACD,wCAAwC;aACnC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC;YAC7B,MAAM,cAAc,GAAG,WAAW,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAClE,MAAM,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CACxD,wBAAwB,CACvB,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EACvB,KAAK,GAAG,CAAC,EACT,MAAM,CAAC,WAAW,EAAE,CACpB,CACD,CAAC;YACF,OAAO,CAAC,IAAI,EAAE,GAAG,cAAc,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACP,OAAO,CAAC,IAAI,CAAC,CAAC;QACf,CAAC;IACF,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACZ,MAAM,CAAC,OAAO,CAAC,2BAA2B,IAAI,EAAE,CAAC,CAAC;QAClD,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAChB,OAAO,EAAE,CAAC;IACX,CAAC;AACF,CAAC;AAED,MAAM,UAAU,4BAA4B;IAC3C,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,gBAAgB,EAAE,CAAC;IACtD,OAAO,QAAS,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CACpC,WAAW,CAAC,OAAO,CAAC;SAClB,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;SACtC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,wBAAwB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CACjE,CAAC;AACH,CAAC"}
package/dist/decide.js CHANGED
@@ -2,7 +2,7 @@ import { existsSync, statSync, unlinkSync, utimesSync, writeFileSync, } from "fs
2
2
  import ms from "ms";
3
3
  import path from "path";
4
4
  import { appDir } from "./configuration.js";
5
- import { ANIME_GROUP_REGEX, Decision, isAnyMatchedDecision, isStaticDecision, MatchMode, parseSource, REPACK_PROPER_REGEX, RES_STRICT_REGEX, SEASON_REGEX, TORRENT_CACHE_FOLDER, } from "./constants.js";
5
+ import { ANIME_GROUP_REGEX, Decision, isAnyMatchedDecision, MatchMode, parseSource, REPACK_PROPER_REGEX, RES_STRICT_REGEX, SEASON_REGEX, TORRENT_CACHE_FOLDER, } from "./constants.js";
6
6
  import { db } from "./db.js";
7
7
  import { Label, logger } from "./logger.js";
8
8
  import { Metafile } from "./parseTorrent.js";
@@ -189,14 +189,13 @@ function sourceDoesMatch(searcheeTitle, candidateName) {
189
189
  return true;
190
190
  return searcheeSource === candidateSource;
191
191
  }
192
- export async function assessCandidate(metaOrCandidate, searchee, hashesToExclude) {
192
+ export async function assessCandidate(metaOrCandidate, searchee, infoHashesToExclude) {
193
193
  const { blockList, includeSingleEpisodes, matchMode } = getRuntimeConfig();
194
194
  // When metaOrCandidate is a Metafile, skip straight to the
195
195
  // main matching algorithms as we don't need pre-download filtering.
196
196
  const isCandidate = !(metaOrCandidate instanceof Metafile);
197
- const name = metaOrCandidate.name;
198
- const size = isCandidate ? metaOrCandidate.size : metaOrCandidate.length;
199
197
  if (isCandidate) {
198
+ const name = metaOrCandidate.name;
200
199
  if (!releaseGroupDoesMatch(searchee.title, name)) {
201
200
  return { decision: Decision.RELEASE_GROUP_MISMATCH };
202
201
  }
@@ -206,6 +205,7 @@ export async function assessCandidate(metaOrCandidate, searchee, hashesToExclude
206
205
  if (!sourceDoesMatch(searchee.title, name)) {
207
206
  return { decision: Decision.SOURCE_MISMATCH };
208
207
  }
208
+ const size = metaOrCandidate.size;
209
209
  if (size && !fuzzySizeDoesMatch(size, searchee)) {
210
210
  return { decision: Decision.FUZZY_SIZE_MISMATCH };
211
211
  }
@@ -214,7 +214,10 @@ export async function assessCandidate(metaOrCandidate, searchee, hashesToExclude
214
214
  }
215
215
  }
216
216
  if (findBlockedStringInReleaseMaybe(searchee, blockList)) {
217
- return { decision: Decision.BLOCKED_RELEASE };
217
+ return {
218
+ decision: Decision.BLOCKED_RELEASE,
219
+ metafile: !isCandidate ? metaOrCandidate : undefined,
220
+ };
218
221
  }
219
222
  let metafile;
220
223
  if (isCandidate) {
@@ -245,7 +248,7 @@ export async function assessCandidate(metaOrCandidate, searchee, hashesToExclude
245
248
  if (searchee.infoHash === metafile.infoHash) {
246
249
  return { decision: Decision.SAME_INFO_HASH, metafile };
247
250
  }
248
- if (hashesToExclude.includes(metafile.infoHash)) {
251
+ if (infoHashesToExclude.has(metafile.infoHash)) {
249
252
  return { decision: Decision.INFO_HASH_ALREADY_EXISTS, metafile };
250
253
  }
251
254
  // Prevent candidate episodes from matching searchee season packs
@@ -307,47 +310,63 @@ function cacheTorrentFile(meta) {
307
310
  return;
308
311
  writeFileSync(torrentPath, meta.encode());
309
312
  }
310
- async function assessAndSaveResults(metaOrCandidate, searchee, guid, infoHashesToExclude, firstSeen) {
313
+ async function assessAndSaveResults(metaOrCandidate, searchee, guid, infoHashesToExclude, firstSeen, guidInfoHashMap) {
311
314
  const assessment = await assessCandidate(metaOrCandidate, searchee, infoHashesToExclude);
312
- await db.transaction(async (trx) => {
313
- const { id } = await trx("searchee")
314
- .select("id")
315
- .where({ name: searchee.title })
316
- .first();
317
- await trx("decision")
318
- .insert({
319
- searchee_id: id,
320
- guid: guid,
321
- info_hash: assessment.metafile?.infoHash ?? null,
322
- decision: assessment.decision,
323
- first_seen: firstSeen,
324
- last_seen: Date.now(),
325
- fuzzy_size_factor: getFuzzySizeFactor(),
326
- })
327
- .onConflict(["searchee_id", "guid"])
328
- .merge();
329
- });
315
+ if (assessment.metafile) {
316
+ guidInfoHashMap.set(guid, assessment.metafile.infoHash);
317
+ await db.transaction(async (trx) => {
318
+ const { id } = await trx("searchee")
319
+ .select("id")
320
+ .where({ name: searchee.title })
321
+ .first();
322
+ await trx("decision")
323
+ .insert({
324
+ searchee_id: id,
325
+ guid: guid,
326
+ info_hash: assessment.metafile.infoHash,
327
+ decision: assessment.decision,
328
+ first_seen: firstSeen,
329
+ last_seen: Date.now(),
330
+ fuzzy_size_factor: getFuzzySizeFactor(),
331
+ })
332
+ .onConflict(["searchee_id", "guid"])
333
+ .merge();
334
+ });
335
+ }
330
336
  return assessment;
331
337
  }
338
+ export async function getGuidInfoHashMap() {
339
+ return new Map((await db("decision")
340
+ .select("guid", "info_hash")
341
+ .whereNotNull("info_hash")).map(({ guid, info_hash }) => [guid, info_hash]));
342
+ }
332
343
  /**
333
344
  * Some trackers have alt titles which get their own guid but resolve to same torrent
334
345
  * @param guid The guid of the candidate
346
+ * @param link The link of the candidate
347
+ * @param guidInfoHashMap The map of guids to info hashes. Necessary for optimal fuzzy lookups.
335
348
  * @returns The info hash of the torrent if found
336
349
  */
337
- async function fuzzyGuidLookup(guid) {
338
- if (!guid.includes(".tv/torrent/"))
339
- return;
340
- const torrentIdStr = guid.match(/\.tv\/torrent\/(\d+)\/group/)?.[1];
341
- if (!torrentIdStr)
342
- return;
343
- return (await db("decision")
344
- .select({ infoHash: "info_hash" })
345
- .where("guid", "like", `%.tv/torrent/${torrentIdStr}/group%`)
346
- .whereNotNull("info_hash")
347
- .first())?.infoHash;
350
+ async function guidLookup(guid, link, guidInfoHashMap) {
351
+ const infoHash = guidInfoHashMap.get(guid) ?? guidInfoHashMap.get(link);
352
+ if (infoHash)
353
+ return infoHash;
354
+ for (const guidOrLink of [guid, link]) {
355
+ if (!guidOrLink.includes(".tv/torrent/"))
356
+ continue;
357
+ const torrentIdRegex = /\.tv\/torrent\/(\d+)\/group/;
358
+ const torrentIdStr = guidOrLink.match(torrentIdRegex)?.[1];
359
+ if (!torrentIdStr)
360
+ continue;
361
+ for (const [key, value] of guidInfoHashMap) {
362
+ if (key.match(torrentIdRegex)?.[1] === torrentIdStr) {
363
+ return value;
364
+ }
365
+ }
366
+ }
348
367
  }
349
- export async function assessCandidateCaching(candidate, searchee, infoHashesToExclude) {
350
- const { guid, name, tracker } = candidate;
368
+ export async function assessCandidateCaching(candidate, searchee, infoHashesToExclude, guidInfoHashMap) {
369
+ const { name, guid, link, tracker } = candidate;
351
370
  const cacheEntry = await db("decision")
352
371
  .select({
353
372
  id: "decision.id",
@@ -359,11 +378,7 @@ export async function assessCandidateCaching(candidate, searchee, infoHashesToEx
359
378
  .join("searchee", "decision.searchee_id", "searchee.id")
360
379
  .where({ name: searchee.title, guid })
361
380
  .first();
362
- const metaInfoHash = (await db("decision")
363
- .select({ infoHash: "info_hash" })
364
- .where({ guid })
365
- .whereNotNull("info_hash")
366
- .first())?.infoHash ?? (await fuzzyGuidLookup(guid));
381
+ const metaInfoHash = await guidLookup(guid, link, guidInfoHashMap);
367
382
  const metaOrCandidate = metaInfoHash
368
383
  ? existsInTorrentCache(metaInfoHash)
369
384
  ? (await getCachedTorrentFile(metaInfoHash)).orElse(candidate)
@@ -377,42 +392,22 @@ export async function assessCandidateCaching(candidate, searchee, infoHashesToEx
377
392
  candidate.size = metaOrCandidate.length; // Trackers can be wrong
378
393
  }
379
394
  let assessment;
380
- if (!cacheEntry?.decision) {
381
- // New candidate, could be metafile from cache
382
- assessment = await assessAndSaveResults(metaOrCandidate, searchee, guid, infoHashesToExclude, Date.now());
383
- }
384
- else if (isAnyMatchedDecision(cacheEntry.decision) &&
385
- infoHashesToExclude.includes(cacheEntry.infoHash)) {
395
+ if (infoHashesToExclude.has(cacheEntry?.infoHash)) {
386
396
  // Already injected fast path, preserve match decision
387
397
  assessment = { decision: Decision.INFO_HASH_ALREADY_EXISTS };
388
- await db("decision").where({ id: cacheEntry.id }).update({
389
- last_seen: Date.now(),
390
- });
391
- }
392
- else if (isStaticDecision(cacheEntry.decision)) {
393
- // These decisions will never change unless we update their logic
394
- assessment = { decision: cacheEntry.decision };
395
- await db("decision").where({ id: cacheEntry.id }).update({
398
+ await db("decision")
399
+ .where({ id: cacheEntry.id })
400
+ .update({
396
401
  last_seen: Date.now(),
402
+ decision: isAnyMatchedDecision(cacheEntry.decision)
403
+ ? cacheEntry.decision
404
+ : Decision.INFO_HASH_ALREADY_EXISTS,
397
405
  });
398
406
  }
399
407
  else {
400
- // Re-assess decisions using Metafile if cached
401
- if (cacheEntry.decision !== Decision.FUZZY_SIZE_MISMATCH ||
402
- cacheEntry.fuzzySizeFactor < getFuzzySizeFactor()) {
403
- assessment = await assessAndSaveResults(metaOrCandidate, searchee, guid, infoHashesToExclude, cacheEntry.firstSeen);
404
- }
405
- else {
406
- assessment = { decision: Decision.FUZZY_SIZE_MISMATCH };
407
- await db("decision").where({ id: cacheEntry.id }).update({
408
- last_seen: Date.now(),
409
- });
410
- }
411
- }
412
- const wasCached = cacheEntry?.decision === assessment.decision;
413
- if (!wasCached) {
414
- logDecision(searchee, candidate, assessment.decision, assessment.metafile, tracker);
408
+ assessment = await assessAndSaveResults(metaOrCandidate, searchee, guid, infoHashesToExclude, cacheEntry?.firstSeen ?? Date.now(), guidInfoHashMap);
415
409
  }
410
+ logDecision(searchee, candidate, assessment.decision, assessment.metafile, tracker);
416
411
  return assessment;
417
412
  }
418
413
  //# sourceMappingURL=decide.js.map