cross-seed 6.11.2 → 6.12.0-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.
Files changed (51) hide show
  1. package/dist/action.js +339 -222
  2. package/dist/action.js.map +1 -1
  3. package/dist/clients/Deluge.js +100 -55
  4. package/dist/clients/Deluge.js.map +1 -1
  5. package/dist/clients/QBittorrent.js +147 -50
  6. package/dist/clients/QBittorrent.js.map +1 -1
  7. package/dist/clients/RTorrent.js +86 -56
  8. package/dist/clients/RTorrent.js.map +1 -1
  9. package/dist/clients/TorrentClient.js +60 -28
  10. package/dist/clients/TorrentClient.js.map +1 -1
  11. package/dist/clients/Transmission.js +67 -33
  12. package/dist/clients/Transmission.js.map +1 -1
  13. package/dist/cmd.js +10 -13
  14. package/dist/cmd.js.map +1 -1
  15. package/dist/config.template.cjs +17 -29
  16. package/dist/config.template.cjs.map +1 -1
  17. package/dist/configSchema.js +104 -30
  18. package/dist/configSchema.js.map +1 -1
  19. package/dist/configuration.js.map +1 -1
  20. package/dist/constants.js +2 -1
  21. package/dist/constants.js.map +1 -1
  22. package/dist/dataFiles.js +14 -11
  23. package/dist/dataFiles.js.map +1 -1
  24. package/dist/db.js +10 -7
  25. package/dist/db.js.map +1 -1
  26. package/dist/decide.js +13 -16
  27. package/dist/decide.js.map +1 -1
  28. package/dist/diff.js +5 -26
  29. package/dist/diff.js.map +1 -1
  30. package/dist/inject.js +99 -98
  31. package/dist/inject.js.map +1 -1
  32. package/dist/logger.js +26 -15
  33. package/dist/logger.js.map +1 -1
  34. package/dist/pipeline.js +127 -75
  35. package/dist/pipeline.js.map +1 -1
  36. package/dist/preFilter.js +2 -35
  37. package/dist/preFilter.js.map +1 -1
  38. package/dist/pushNotifier.js +3 -0
  39. package/dist/pushNotifier.js.map +1 -1
  40. package/dist/runtimeConfig.js.map +1 -1
  41. package/dist/searchee.js +136 -91
  42. package/dist/searchee.js.map +1 -1
  43. package/dist/startup.js +3 -2
  44. package/dist/startup.js.map +1 -1
  45. package/dist/torrent.js +132 -98
  46. package/dist/torrent.js.map +1 -1
  47. package/dist/torznab.js +5 -5
  48. package/dist/torznab.js.map +1 -1
  49. package/dist/utils.js +26 -6
  50. package/dist/utils.js.map +1 -1
  51. package/package.json +1 -1
@@ -39,11 +39,18 @@ async function createLibTorrentResumeTree(meta, basePath) {
39
39
  }
40
40
  export default class RTorrent {
41
41
  client;
42
- type = Label.RTORRENT;
42
+ clientHost;
43
+ clientPriority;
44
+ clientType = Label.RTORRENT;
45
+ readonly;
46
+ label;
43
47
  batchSize = 500;
44
- constructor() {
45
- const { rtorrentRpcUrl } = getRuntimeConfig();
46
- const { href, username, password } = extractCredentialsFromUrl(rtorrentRpcUrl).unwrapOrThrow(new CrossSeedError("rTorrent url must be percent-encoded"));
48
+ constructor(url, priority, readonly) {
49
+ this.clientHost = new URL(url).host;
50
+ this.clientPriority = priority;
51
+ this.readonly = readonly;
52
+ this.label = `${this.clientType}@${this.clientHost}`;
53
+ const { href, username, password } = extractCredentialsFromUrl(url).unwrapOrThrow(new CrossSeedError(`[${this.label}] rTorrent url must be percent-encoded`));
47
54
  const clientCreator = new URL(href).protocol === "https:"
48
55
  ? xmlrpc.createSecureClient
49
56
  : xmlrpc.createClient;
@@ -56,13 +63,9 @@ export default class RTorrent {
56
63
  });
57
64
  }
58
65
  async methodCallP(method, args) {
59
- logger.verbose({
60
- label: Label.RTORRENT,
61
- message: `Calling method ${method} with params ${inspect(args, {
62
- depth: null,
63
- compact: true,
64
- })}`,
65
- });
66
+ const msg = `Calling method ${method} with params ${inspect(args, { depth: null, compact: true })}`;
67
+ const message = msg.length > 1000 ? `${msg.slice(0, 1000)}...` : msg;
68
+ logger.verbose({ label: this.label, message });
66
69
  return new Promise((resolve, reject) => {
67
70
  this.client.methodCall(method, args, (err, data) => {
68
71
  if (err)
@@ -75,7 +78,7 @@ export default class RTorrent {
75
78
  const downloadList = await this.methodCallP("download_list", []);
76
79
  return downloadList.includes(infoHash.toUpperCase());
77
80
  }
78
- async checkOriginalTorrent(infoHash, onlyCompleted) {
81
+ async checkOriginalTorrent(infoHash, options) {
79
82
  const hash = infoHash.toUpperCase();
80
83
  let response;
81
84
  const args = [
@@ -114,7 +117,7 @@ export default class RTorrent {
114
117
  response = await this.methodCallP("system.multicall", args);
115
118
  }
116
119
  catch (e) {
117
- logger.debug(e);
120
+ logger.debug({ label: this.label, message: e });
118
121
  return resultOfErr("FAILURE");
119
122
  }
120
123
  function isFault(response) {
@@ -129,36 +132,44 @@ export default class RTorrent {
129
132
  throw new Error("Unknown rTorrent fault while checking original torrent");
130
133
  }
131
134
  }
132
- const [[name], [directoryBase], [bytesLeft], [hashing], [isCompleteStr], [isMultiFileStr], [isActive],] = response;
135
+ const [[name], [directoryBase], [bytesLeftStr], [hashingStr], [isCompleteStr], [isMultiFileStr], [isActiveStr],] = response;
133
136
  const isComplete = Boolean(Number(isCompleteStr));
134
- if (onlyCompleted && !isComplete) {
137
+ if (options.onlyCompleted && !isComplete) {
135
138
  return resultOfErr("TORRENT_NOT_COMPLETE");
136
139
  }
137
140
  return resultOf({
138
141
  name,
139
142
  directoryBase,
140
- bytesLeft,
141
- hashing,
143
+ bytesLeft: Number(bytesLeftStr),
144
+ hashing: Number(hashingStr),
142
145
  isMultiFile: Boolean(Number(isMultiFileStr)),
143
- isActive: Boolean(Number(isActive)),
146
+ isActive: Boolean(Number(isActiveStr)),
144
147
  });
145
148
  }
146
149
  catch (e) {
147
- logger.error(e);
150
+ logger.error({ label: this.label, message: e });
148
151
  logger.debug("Failure caused by server response below:");
149
152
  logger.debug(inspect(response));
150
153
  return resultOfErr("FAILURE");
151
154
  }
152
155
  }
153
- async getDownloadLocation(meta, searchee, path) {
154
- if (path) {
156
+ async getDownloadLocation(meta, searchee, options) {
157
+ if (options.destinationDir) {
155
158
  // resolve to absolute because we send the path to rTorrent
156
- const basePath = resolve(path, meta.name);
157
- const directoryBase = meta.isSingleFileTorrent ? path : basePath;
158
- return resultOf({ downloadDir: path, basePath, directoryBase });
159
+ const basePath = resolve(options.destinationDir, meta.name);
160
+ const directoryBase = meta.isSingleFileTorrent
161
+ ? options.destinationDir
162
+ : basePath;
163
+ return resultOf({
164
+ downloadDir: options.destinationDir,
165
+ basePath,
166
+ directoryBase,
167
+ });
159
168
  }
160
169
  else {
161
- const result = await this.checkOriginalTorrent(searchee.infoHash, true);
170
+ const result = await this.checkOriginalTorrent(searchee.infoHash, {
171
+ onlyCompleted: options.onlyCompleted,
172
+ });
162
173
  return result.mapOk(({ directoryBase }) => ({
163
174
  directoryBase,
164
175
  downloadDir: meta.isSingleFileTorrent
@@ -171,25 +182,29 @@ export default class RTorrent {
171
182
  }
172
183
  }
173
184
  async validateConfig() {
174
- const { rtorrentRpcUrl, torrentDir } = getRuntimeConfig();
185
+ const { torrentDir } = getRuntimeConfig();
175
186
  try {
176
187
  await this.methodCallP("download_list", []);
177
188
  }
178
189
  catch (e) {
179
- logger.debug(e);
180
- throw new CrossSeedError(`Failed to reach rTorrent at ${rtorrentRpcUrl}: ${e.message}`);
190
+ logger.debug({ label: this.label, message: e });
191
+ throw new CrossSeedError(`[${this.label}] Failed to reach rTorrent at ${this.clientHost}: ${e.message}`);
181
192
  }
193
+ logger.info({
194
+ label: this.label,
195
+ message: `Logged in successfully${this.readonly ? " (readonly)" : ""}`,
196
+ });
182
197
  if (!torrentDir)
183
198
  return;
184
199
  if (!readdirSync(torrentDir).some((f) => f.endsWith("_resume"))) {
185
- throw new CrossSeedError("Invalid torrentDir, if no torrents are in client set to null for now: https://www.cross-seed.org/docs/basics/options#torrentdir");
200
+ throw new CrossSeedError(`[${this.label}] Invalid torrentDir, if no torrents are in client set to null for now: https://www.cross-seed.org/docs/basics/options#torrentdir`);
186
201
  }
187
202
  }
188
203
  async getDownloadDir(meta, options) {
189
204
  if (!(await this.checkForInfoHashInClient(meta.infoHash))) {
190
205
  return resultOfErr("NOT_FOUND");
191
206
  }
192
- const result = await this.checkOriginalTorrent(meta.infoHash, options.onlyCompleted);
207
+ const result = await this.checkOriginalTorrent(meta.infoHash, options);
193
208
  return result
194
209
  .mapOk(({ directoryBase, isMultiFile }) => {
195
210
  return isMultiFile ? dirname(directoryBase) : directoryBase;
@@ -229,7 +244,7 @@ export default class RTorrent {
229
244
  const res = await this.methodCallP("system.multicall", args);
230
245
  if (isFault(res)) {
231
246
  logger.error({
232
- Label: Label.RTORRENT,
247
+ label: this.label,
233
248
  message: "Fault while getting download directories for all torrents",
234
249
  });
235
250
  logger.debug(inspect(res));
@@ -239,7 +254,7 @@ export default class RTorrent {
239
254
  }
240
255
  catch (e) {
241
256
  logger.error({
242
- Label: Label.RTORRENT,
257
+ label: this.label,
243
258
  message: `Failed to get download directories for all torrents: ${e.message}`,
244
259
  });
245
260
  logger.debug(e);
@@ -248,7 +263,7 @@ export default class RTorrent {
248
263
  }, { batchSize: this.batchSize });
249
264
  if (!results.length || results.length !== hashes.length * numMethods) {
250
265
  logger.error({
251
- Label: Label.RTORRENT,
266
+ label: this.label,
252
267
  message: `Unexpected number of results: ${results.length} for ${hashes.length} hashes`,
253
268
  });
254
269
  return new Map();
@@ -266,7 +281,7 @@ export default class RTorrent {
266
281
  }
267
282
  catch (e) {
268
283
  logger.error({
269
- Label: Label.RTORRENT,
284
+ label: this.label,
270
285
  message: `Error parsing response for all torrents: ${e.message}`,
271
286
  });
272
287
  logger.debug(e);
@@ -281,7 +296,21 @@ export default class RTorrent {
281
296
  if (response.length === 0) {
282
297
  return resultOfErr("NOT_FOUND");
283
298
  }
284
- return resultOf(response[0] === "1");
299
+ return resultOf(Boolean(Number(response[0])));
300
+ }
301
+ catch (e) {
302
+ return resultOfErr("NOT_FOUND");
303
+ }
304
+ }
305
+ async isTorrentChecking(infoHash) {
306
+ try {
307
+ const response = await this.methodCallP("d.hashing", [
308
+ infoHash,
309
+ ]);
310
+ if (response.length === 0) {
311
+ return resultOfErr("NOT_FOUND");
312
+ }
313
+ return resultOf(Boolean(Number(response[0])));
285
314
  }
286
315
  catch (e) {
287
316
  return resultOfErr("NOT_FOUND");
@@ -305,7 +334,7 @@ export default class RTorrent {
305
334
  const res = await this.methodCallP("system.multicall", args);
306
335
  if (isFault(res)) {
307
336
  logger.error({
308
- Label: Label.RTORRENT,
337
+ label: this.label,
309
338
  message: "Fault while getting torrent info for all torrents",
310
339
  });
311
340
  logger.debug(inspect(res));
@@ -315,7 +344,7 @@ export default class RTorrent {
315
344
  }
316
345
  catch (e) {
317
346
  logger.error({
318
- Label: Label.RTORRENT,
347
+ label: this.label,
319
348
  message: `Failed to get torrent info for all torrents: ${e.message}`,
320
349
  });
321
350
  logger.debug(e);
@@ -324,7 +353,7 @@ export default class RTorrent {
324
353
  }, { batchSize: this.batchSize });
325
354
  if (results.length !== hashes.length) {
326
355
  logger.error({
327
- Label: Label.RTORRENT,
356
+ label: this.label,
328
357
  message: `Unexpected number of results: ${results.length} for ${hashes.length} hashes`,
329
358
  });
330
359
  return [];
@@ -333,7 +362,6 @@ export default class RTorrent {
333
362
  // response: [ [tag1], [tag2], ... ], assuming infoHash order is preserved
334
363
  return hashes.map((hash, index) => ({
335
364
  infoHash: hash.toLowerCase(),
336
- category: "",
337
365
  tags: results[index].length !== 1
338
366
  ? results[index]
339
367
  : results[index][0].length
@@ -345,7 +373,7 @@ export default class RTorrent {
345
373
  }
346
374
  catch (e) {
347
375
  logger.error({
348
- Label: Label.RTORRENT,
376
+ label: this.label,
349
377
  message: `Error parsing response for all torrents: ${e.message}`,
350
378
  });
351
379
  logger.debug(e);
@@ -408,7 +436,7 @@ export default class RTorrent {
408
436
  const res = await this.methodCallP("system.multicall", args);
409
437
  if (isFault(res)) {
410
438
  logger.error({
411
- Label: Label.RTORRENT,
439
+ label: this.label,
412
440
  message: "Fault while getting client torrents",
413
441
  });
414
442
  logger.debug(inspect(res));
@@ -418,7 +446,7 @@ export default class RTorrent {
418
446
  }
419
447
  catch (e) {
420
448
  logger.error({
421
- Label: Label.RTORRENT,
449
+ label: this.label,
422
450
  message: `Failed to get client torrents: ${e.message}`,
423
451
  });
424
452
  logger.debug(e);
@@ -427,7 +455,7 @@ export default class RTorrent {
427
455
  }, { batchSize: this.batchSize });
428
456
  if (!results.length || results.length !== hashes.length * numMethods) {
429
457
  logger.error({
430
- Label: Label.RTORRENT,
458
+ label: this.label,
431
459
  message: `Unexpected number of results: ${results.length} for ${hashes.length} hashes`,
432
460
  });
433
461
  return { searchees, newSearchees };
@@ -438,6 +466,7 @@ export default class RTorrent {
438
466
  infoHashes.add(infoHash);
439
467
  const dbTorrent = await memDB("torrent")
440
468
  .where("info_hash", infoHash)
469
+ .where("client_host", this.clientHost)
441
470
  .first();
442
471
  const refresh = options?.refresh === undefined
443
472
  ? false
@@ -462,18 +491,17 @@ export default class RTorrent {
462
491
  }));
463
492
  if (!files.length) {
464
493
  logger.verbose({
465
- label: Label.RTORRENT,
494
+ label: this.label,
466
495
  message: `No files found for ${name} [${sanitizeInfoHash(infoHash)}]: skipping`,
467
496
  });
468
497
  continue;
469
498
  }
470
499
  const trackers = organizeTrackers(results[i * numMethods + 6][0].map((arr) => ({
471
500
  url: arr[0],
472
- tier: arr[1],
501
+ tier: Number(arr[1]),
473
502
  })));
474
503
  const title = parseTitle(name, files) ?? name;
475
504
  const savePath = isMultiFile ? dirname(directory) : directory;
476
- const category = "";
477
505
  const tags = labels.length
478
506
  ? decodeURIComponent(labels)
479
507
  .split(",")
@@ -485,15 +513,15 @@ export default class RTorrent {
485
513
  title,
486
514
  files,
487
515
  length,
516
+ clientHost: this.clientHost,
488
517
  savePath,
489
- category,
490
518
  tags,
491
519
  trackers,
492
520
  };
493
521
  newSearchees.push(searchee);
494
522
  searchees.push(searchee);
495
523
  }
496
- await updateSearcheeClientDB(newSearchees, infoHashes);
524
+ await updateSearcheeClientDB(this.clientHost, newSearchees, infoHashes);
497
525
  return { searchees, newSearchees };
498
526
  }
499
527
  async recheckTorrent(infoHash) {
@@ -513,7 +541,9 @@ export default class RTorrent {
513
541
  stop = true;
514
542
  }
515
543
  await wait(sleepTime);
516
- const torrentInfoRes = await this.checkOriginalTorrent(infoHash, false);
544
+ const torrentInfoRes = await this.checkOriginalTorrent(infoHash, {
545
+ onlyCompleted: false,
546
+ });
517
547
  if (torrentInfoRes.isErr()) {
518
548
  sleepTime = resumeErrSleepTime; // Dropping connections or restart
519
549
  continue;
@@ -525,34 +555,34 @@ export default class RTorrent {
525
555
  const torrentLog = `${torrentInfo.name} [${sanitizeInfoHash(infoHash)}]`;
526
556
  if (torrentInfo.isActive) {
527
557
  logger.warn({
528
- label: Label.RTORRENT,
558
+ label: this.label,
529
559
  message: `Will not resume torrent ${torrentLog}: active`,
530
560
  });
531
561
  return;
532
562
  }
533
563
  if (torrentInfo.bytesLeft > maxRemainingBytes) {
534
564
  logger.warn({
535
- label: Label.RTORRENT,
565
+ label: this.label,
536
566
  message: `Will not resume torrent ${torrentLog}: ${humanReadableSize(torrentInfo.bytesLeft, { binary: true })} remaining > ${humanReadableSize(maxRemainingBytes, { binary: true })}`,
537
567
  });
538
568
  return;
539
569
  }
540
570
  logger.info({
541
- label: Label.RTORRENT,
571
+ label: this.label,
542
572
  message: `Resuming torrent ${torrentLog}`,
543
573
  });
544
574
  await this.methodCallP("d.resume", [infoHash]);
545
575
  }
546
576
  logger.warn({
547
- label: Label.RTORRENT,
577
+ label: this.label,
548
578
  message: `Will not resume torrent ${infoHash}: timeout`,
549
579
  });
550
580
  }
551
- async inject(meta, searchee, decision, path) {
581
+ async inject(meta, searchee, decision, options) {
552
582
  if (await this.checkForInfoHashInClient(meta.infoHash)) {
553
583
  return InjectionResult.ALREADY_EXISTS;
554
584
  }
555
- const result = await this.getDownloadLocation(meta, searchee, path);
585
+ const result = await this.getDownloadLocation(meta, searchee, options);
556
586
  if (result.isErr()) {
557
587
  switch (result.unwrapErr()) {
558
588
  case "NOT_FOUND":
@@ -592,7 +622,7 @@ export default class RTorrent {
592
622
  }
593
623
  catch (e) {
594
624
  logger.verbose({
595
- label: Label.RTORRENT,
625
+ label: this.label,
596
626
  message: `Failed to inject torrent ${meta.name} on attempt ${i + 1}/${retries}: ${e.message}`,
597
627
  });
598
628
  logger.debug(e);
@@ -1 +1 @@
1
- {"version":3,"file":"RTorrent.js","sourceRoot":"","sources":["../../src/clients/RTorrent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RTorrent.js","sourceRoot":"","sources":["../../src/clients/RTorrent.ts"],"names":[],"mappings":"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"}
@@ -13,40 +13,69 @@ import QBittorrent from "./QBittorrent.js";
13
13
  import RTorrent from "./RTorrent.js";
14
14
  import Transmission from "./Transmission.js";
15
15
  import { hasExt } from "../utils.js";
16
- let activeClient = null;
17
- function instantiateDownloadClient() {
18
- const { rtorrentRpcUrl, qbittorrentUrl, transmissionRpcUrl, delugeRpcUrl } = getRuntimeConfig();
19
- if (rtorrentRpcUrl) {
20
- activeClient = new RTorrent();
21
- }
22
- else if (qbittorrentUrl) {
23
- activeClient = new QBittorrent();
24
- }
25
- else if (transmissionRpcUrl) {
26
- activeClient = new Transmission();
27
- }
28
- else if (delugeRpcUrl) {
29
- activeClient = new Deluge();
30
- }
16
+ const activeClients = [];
17
+ const PARSE_CLIENT_REGEX = /^(?<clientType>.+?):(?:(?<readonly>readonly):)?(?<url>.*)$/;
18
+ export function parseClientEntry(clientEntry) {
19
+ const match = clientEntry.match(PARSE_CLIENT_REGEX);
20
+ if (!match?.groups)
21
+ return null;
22
+ return {
23
+ clientType: match.groups.clientType,
24
+ readonly: isTruthy(match.groups.readonly),
25
+ url: match.groups.url,
26
+ };
31
27
  }
32
- export function getClient() {
33
- if (!activeClient) {
34
- instantiateDownloadClient();
28
+ export function instantiateDownloadClients() {
29
+ const { torrentClients } = getRuntimeConfig();
30
+ for (const [priority, clientEntryRaw] of torrentClients.entries()) {
31
+ const { clientType, readonly, url } = parseClientEntry(clientEntryRaw);
32
+ switch (clientType) {
33
+ case Label.QBITTORRENT:
34
+ activeClients.push(new QBittorrent(url, priority, readonly));
35
+ break;
36
+ case Label.RTORRENT:
37
+ activeClients.push(new RTorrent(url, priority, readonly));
38
+ break;
39
+ case Label.TRANSMISSION:
40
+ activeClients.push(new Transmission(url, priority, readonly));
41
+ break;
42
+ case Label.DELUGE:
43
+ activeClients.push(new Deluge(url, priority, readonly));
44
+ break;
45
+ default:
46
+ throw new Error(`Invalid client type: ${clientType}`);
47
+ }
35
48
  }
36
- return activeClient;
37
49
  }
38
- export async function validateClientSavePaths(searchees, infoHashPathMapOrig) {
50
+ export function getClients() {
51
+ return activeClients;
52
+ }
53
+ export function byClientHostPriority(clientHost) {
54
+ const clients = getClients();
55
+ return (clients.find((c) => c.clientHost === clientHost)?.clientPriority ??
56
+ clients.length);
57
+ }
58
+ export async function validateClientSavePaths(searchees, infoHashPathMapOrig, label) {
39
59
  const { linkDirs } = getRuntimeConfig();
40
- logger.info(`Validating all existing torrent save paths...`);
60
+ logger.info({
61
+ label,
62
+ message: `Validating all existing torrent save paths...`,
63
+ });
41
64
  const infoHashPathMap = new Map(infoHashPathMapOrig);
42
65
  const entryDir = searchees.find((s) => !infoHashPathMap.has(s.infoHash));
43
66
  if (entryDir) {
44
- logger.warn(`Not all torrents from torrentDir are in the torrent client (missing ${entryDir.name} [${entryDir.infoHash}]): https://www.cross-seed.org/docs/basics/options#torrentdir`);
67
+ logger.warn({
68
+ label,
69
+ message: `Not all torrents from torrentDir are in the torrent client (missing ${entryDir.name} [${entryDir.infoHash}]): https://www.cross-seed.org/docs/basics/options#torrentdir`,
70
+ });
45
71
  }
46
72
  const searcheeInfoHashes = new Set(searchees.map((s) => s.infoHash));
47
73
  const entryClient = Array.from(infoHashPathMap.keys()).find((infoHash) => !searcheeInfoHashes.has(infoHash));
48
74
  if (entryClient) {
49
- logger.warn(`Could not ensure all torrents from the torrent client are in torrentDir (missing ${entryClient} with savePath ${infoHashPathMap.get(entryClient)}): https://www.cross-seed.org/docs/basics/options#torrentdir`);
75
+ logger.warn({
76
+ label,
77
+ message: `Could not ensure all torrents from the torrent client are in torrentDir (missing ${entryClient} with savePath ${infoHashPathMap.get(entryClient)}): https://www.cross-seed.org/docs/basics/options#torrentdir`,
78
+ });
50
79
  }
51
80
  if (!linkDirs.length)
52
81
  return;
@@ -61,27 +90,30 @@ export async function validateClientSavePaths(searchees, infoHashPathMapOrig) {
61
90
  }
62
91
  const uniqueSavePaths = new Set(infoHashPathMap.values());
63
92
  const ignoredSavePaths = Array.from(removedSavePaths).filter((savePath) => !uniqueSavePaths.has(savePath));
64
- logger.verbose(`Excluded save paths from linking test due to filters: ${formatAsList(ignoredSavePaths, { sort: true, type: "unit" })}`);
93
+ logger.verbose({
94
+ label,
95
+ message: `Excluded save paths from linking test due to filters: ${formatAsList(ignoredSavePaths, { sort: true, type: "unit" })}`,
96
+ });
65
97
  for (const savePath of uniqueSavePaths) {
66
98
  if (ABS_WIN_PATH_REGEX.test(savePath) === (path.sep === "/")) {
67
- throw new CrossSeedError(`Cannot use linkDirs with cross platform cross-seed and torrent client, please run cross-seed in docker or natively to match your torrent client (https://www.cross-seed.org/docs/basics/managing-the-daemon): ${savePath}`);
99
+ throw new CrossSeedError(`Cannot use linkDirs with cross platform cross-seed and ${label}, please run cross-seed in docker or natively to match your torrent client (https://www.cross-seed.org/docs/basics/managing-the-daemon): ${savePath}`);
68
100
  }
69
101
  try {
70
102
  testLinking(savePath);
71
103
  }
72
104
  catch (e) {
73
105
  logger.error(e);
74
- throw new CrossSeedError(`Failed to link from torrent client save paths to a linkDir. If you have multiple drives, you will need to add extra linkDirs or blocklist the category, tag, or trackers that correspond to the drives (https://www.cross-seed.org/docs/tutorials/linking#setting-up-linking)`);
106
+ throw new CrossSeedError(`Failed to link from ${label} save paths to a linkDir. If you have multiple drives, you will need to add extra linkDirs or blocklist the category, tag, or trackers that correspond to the drives (https://www.cross-seed.org/docs/tutorials/linking#setting-up-linking)`);
75
107
  }
76
108
  }
77
109
  }
78
110
  export function organizeTrackers(trackers) {
79
111
  return trackers.map((t) => sanitizeTrackerUrl(t.url)).filter(isTruthy);
80
112
  }
81
- export async function waitForTorrentToComplete(infoHash, options = { retries: 6 }) {
113
+ export async function waitForTorrentToComplete(client, infoHash, options = { retries: 6 }) {
82
114
  const retries = Math.max(options.retries, 0);
83
115
  for (let i = 0; i <= retries; i++) {
84
- if ((await getClient().isTorrentComplete(infoHash)).orElse(false)) {
116
+ if ((await client.isTorrentComplete(infoHash)).orElse(false)) {
85
117
  return true;
86
118
  }
87
119
  if (i < retries) {
@@ -1 +1 @@
1
- {"version":3,"file":"TorrentClient.js","sourceRoot":"","sources":["../../src/clients/TorrentClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TorrentClient.js","sourceRoot":"","sources":["../../src/clients/TorrentClient.ts"],"names":[],"mappings":"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"}