cross-seed 2.9.3 → 3.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 (86) hide show
  1. package/dist/{src/clients → clients}/QBittorrent.js +31 -37
  2. package/dist/clients/QBittorrent.js.map +1 -0
  3. package/dist/{src/clients → clients}/RTorrent.js +42 -48
  4. package/dist/clients/RTorrent.js.map +1 -0
  5. package/dist/clients/TorrentClient.js +20 -0
  6. package/dist/clients/TorrentClient.js.map +1 -0
  7. package/dist/{src/cmd.js → cmd.js} +54 -57
  8. package/dist/cmd.js.map +1 -0
  9. package/dist/{src/config.template.js → config.template.cjs} +1 -2
  10. package/dist/config.template.cjs.map +1 -0
  11. package/dist/{src/config.template.docker.js → config.template.docker.cjs} +1 -3
  12. package/dist/config.template.docker.cjs.map +1 -0
  13. package/dist/configuration.js +39 -0
  14. package/dist/configuration.js.map +1 -0
  15. package/dist/constants.js +33 -0
  16. package/dist/constants.js.map +1 -0
  17. package/dist/db.js +28 -0
  18. package/dist/db.js.map +1 -0
  19. package/dist/decide.js +132 -0
  20. package/dist/decide.js.map +1 -0
  21. package/dist/errors.js +11 -0
  22. package/dist/errors.js.map +1 -0
  23. package/dist/jackett.js +68 -0
  24. package/dist/jackett.js.map +1 -0
  25. package/dist/{src/logger.js → logger.js} +22 -25
  26. package/dist/logger.js.map +1 -0
  27. package/dist/pipeline.js +134 -0
  28. package/dist/pipeline.js.map +1 -0
  29. package/dist/preFilter.js +66 -0
  30. package/dist/preFilter.js.map +1 -0
  31. package/dist/pushNotifier.js +27 -0
  32. package/dist/pushNotifier.js.map +1 -0
  33. package/dist/runtimeConfig.js +12 -0
  34. package/dist/runtimeConfig.js.map +1 -0
  35. package/dist/searchee.js +49 -0
  36. package/dist/searchee.js.map +1 -0
  37. package/dist/{src/server.js → server.js} +23 -30
  38. package/dist/server.js.map +1 -0
  39. package/dist/{src/signalHandlers.js → signalHandlers.js} +0 -0
  40. package/dist/signalHandlers.js.map +1 -0
  41. package/dist/startup.js +24 -0
  42. package/dist/startup.js.map +1 -0
  43. package/dist/torrent.js +128 -0
  44. package/dist/torrent.js.map +1 -0
  45. package/dist/utils.js +28 -0
  46. package/dist/utils.js.map +1 -0
  47. package/package.json +21 -25
  48. package/dist/package.json +0 -68
  49. package/dist/src/clients/QBittorrent.js.map +0 -1
  50. package/dist/src/clients/RTorrent.js.map +0 -1
  51. package/dist/src/clients/TorrentClient.js +0 -27
  52. package/dist/src/clients/TorrentClient.js.map +0 -1
  53. package/dist/src/cmd.js.map +0 -1
  54. package/dist/src/config.template.docker.js.map +0 -1
  55. package/dist/src/config.template.js.map +0 -1
  56. package/dist/src/configuration.js +0 -66
  57. package/dist/src/configuration.js.map +0 -1
  58. package/dist/src/constants.js +0 -39
  59. package/dist/src/constants.js.map +0 -1
  60. package/dist/src/db.js +0 -34
  61. package/dist/src/db.js.map +0 -1
  62. package/dist/src/decide.js +0 -143
  63. package/dist/src/decide.js.map +0 -1
  64. package/dist/src/errors.js +0 -15
  65. package/dist/src/errors.js.map +0 -1
  66. package/dist/src/jackett.js +0 -76
  67. package/dist/src/jackett.js.map +0 -1
  68. package/dist/src/logger.js.map +0 -1
  69. package/dist/src/pipeline.js +0 -140
  70. package/dist/src/pipeline.js.map +0 -1
  71. package/dist/src/preFilter.js +0 -77
  72. package/dist/src/preFilter.js.map +0 -1
  73. package/dist/src/pushNotifier.js +0 -35
  74. package/dist/src/pushNotifier.js.map +0 -1
  75. package/dist/src/runtimeConfig.js +0 -17
  76. package/dist/src/runtimeConfig.js.map +0 -1
  77. package/dist/src/searchee.js +0 -72
  78. package/dist/src/searchee.js.map +0 -1
  79. package/dist/src/server.js.map +0 -1
  80. package/dist/src/signalHandlers.js.map +0 -1
  81. package/dist/src/startup.js +0 -28
  82. package/dist/src/startup.js.map +0 -1
  83. package/dist/src/torrent.js +0 -169
  84. package/dist/src/torrent.js.map +0 -1
  85. package/dist/src/utils.js +0 -39
  86. package/dist/src/utils.js.map +0 -1
@@ -0,0 +1,27 @@
1
+ import fetch from "node-fetch";
2
+ import { logger } from "./logger.js";
3
+ import { getRuntimeConfig } from "./runtimeConfig.js";
4
+ export let pushNotifier;
5
+ export class PushNotifier {
6
+ constructor(url) {
7
+ this.url = url;
8
+ }
9
+ notify({ title = "cross-seed", body, ...rest }) {
10
+ if (this.url) {
11
+ fetch(this.url, {
12
+ method: "POST",
13
+ headers: { "Content-Type": "application/json" },
14
+ body: JSON.stringify({ title, body, ...rest }),
15
+ });
16
+ }
17
+ }
18
+ }
19
+ export function initializePushNotifier() {
20
+ const { notificationWebhookUrl } = getRuntimeConfig();
21
+ pushNotifier = new PushNotifier(notificationWebhookUrl);
22
+ }
23
+ export function sendTestNotification() {
24
+ pushNotifier.notify({ body: "Test" });
25
+ logger.info("Sent test notification");
26
+ }
27
+ //# sourceMappingURL=pushNotifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pushNotifier.js","sourceRoot":"","sources":["../src/pushNotifier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,CAAC,IAAI,YAA0B,CAAC;AAQtC,MAAM,OAAO,YAAY;IAExB,YAAY,GAAW;QACtB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,EAAE,KAAK,GAAG,YAAY,EAAE,IAAI,EAAE,GAAG,IAAI,EAAoB;QAC/D,IAAI,IAAI,CAAC,GAAG,EAAE;YACb,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;gBACf,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC;aAC9C,CAAC,CAAC;SACH;IACF,CAAC;CACD;AAED,MAAM,UAAU,sBAAsB;IACrC,MAAM,EAAE,sBAAsB,EAAE,GAAG,gBAAgB,EAAE,CAAC;IACtD,YAAY,GAAG,IAAI,YAAY,CAAC,sBAAsB,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,oBAAoB;IACnC,YAAY,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACtC,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;AACvC,CAAC"}
@@ -0,0 +1,12 @@
1
+ export const EmptyNonceOptions = {
2
+ trackers: undefined,
3
+ outputDir: undefined,
4
+ };
5
+ let runtimeConfig;
6
+ export function setRuntimeConfig(configObj) {
7
+ runtimeConfig = configObj;
8
+ }
9
+ export function getRuntimeConfig() {
10
+ return runtimeConfig;
11
+ }
12
+ //# sourceMappingURL=runtimeConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtimeConfig.js","sourceRoot":"","sources":["../src/runtimeConfig.ts"],"names":[],"mappings":"AAyBA,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAChC,QAAQ,EAAE,SAAS;IACnB,SAAS,EAAE,SAAS;CACpB,CAAC;AAEF,IAAI,aAA4B,CAAC;AAEjC,MAAM,UAAU,gBAAgB,CAAC,SAAwB;IACxD,aAAa,GAAG,SAAS,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC/B,OAAO,aAAa,CAAC;AACtB,CAAC"}
@@ -0,0 +1,49 @@
1
+ import { sortBy } from "lodash-es";
2
+ import path, { join } from "path";
3
+ import { getRuntimeConfig } from "./runtimeConfig.js";
4
+ import { parseTorrentFromFilename } from "./torrent.js";
5
+ import { logger } from "./logger.js";
6
+ function getFilesFromTorrent(meta) {
7
+ if (!meta.info.files) {
8
+ return [
9
+ {
10
+ name: meta.name,
11
+ path: meta.name,
12
+ length: meta.length,
13
+ },
14
+ ];
15
+ }
16
+ const unsortedFiles = meta.info.files.map((file) => {
17
+ const rawPathSegments = file["path.utf-8"] || file.path;
18
+ const pathSegments = rawPathSegments.map((s) => s.toString());
19
+ return {
20
+ name: pathSegments[pathSegments.length - 1],
21
+ length: file.length,
22
+ // Note that we don't use path.join here because of
23
+ // https://github.com/mmgoodnow/cross-seed/issues/46.
24
+ // path.join ignores zero-length path segments,
25
+ // which we do not want.
26
+ path: [meta.name, ...pathSegments].join(path.sep),
27
+ };
28
+ });
29
+ return sortBy(unsortedFiles, "path");
30
+ }
31
+ export async function createSearcheeFromTorrentFile(filename) {
32
+ const { torrentDir } = getRuntimeConfig();
33
+ const fullPath = join(torrentDir, filename);
34
+ try {
35
+ const meta = await parseTorrentFromFilename(fullPath);
36
+ return {
37
+ files: getFilesFromTorrent(meta),
38
+ infoHash: meta.infoHash,
39
+ name: meta.name,
40
+ length: meta.length,
41
+ };
42
+ }
43
+ catch (e) {
44
+ logger.error(`Failed to parse ${filename}`);
45
+ logger.debug(e);
46
+ return e;
47
+ }
48
+ }
49
+ //# sourceMappingURL=searchee.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"searchee.js","sourceRoot":"","sources":["../src/searchee.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,OAAO,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAExD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAerC,SAAS,mBAAmB,CAAC,IAAc;IAC1C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;QACrB,OAAO;YACN;gBACC,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,MAAM,EAAE,IAAI,CAAC,MAAM;aACnB;SACD,CAAC;KACF;IAED,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAClD,MAAM,eAAe,GAAa,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC;QAClE,MAAM,YAAY,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC9D,OAAO;YACN,IAAI,EAAE,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;YAC3C,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,mDAAmD;YACnD,qDAAqD;YACrD,+CAA+C;YAC/C,wBAAwB;YACxB,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;SACjD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,6BAA6B,CAClD,QAAgB;IAEhB,MAAM,EAAE,UAAU,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC5C,IAAI;QACH,MAAM,IAAI,GAAG,MAAM,wBAAwB,CAAC,QAAQ,CAAC,CAAC;QACtD,OAAO;YACN,KAAK,EAAE,mBAAmB,CAAC,IAAI,CAAC;YAChC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;SACnB,CAAC;KACF;IAAC,OAAO,CAAC,EAAE;QACX,MAAM,CAAC,KAAK,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;QAC5C,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAChB,OAAO,CAAC,CAAC;KACT;AACF,CAAC"}
@@ -1,15 +1,9 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.serve = void 0;
7
- const http_1 = __importDefault(require("http"));
8
- const lodash_1 = require("lodash");
9
- const querystring_1 = require("querystring");
10
- const util_1 = require("util");
11
- const logger_1 = require("./logger");
12
- const pipeline_1 = require("./pipeline");
1
+ import http from "http";
2
+ import { pick } from "lodash-es";
3
+ import { parse as qsParse } from "querystring";
4
+ import { inspect } from "util";
5
+ import { Label, logger } from "./logger.js";
6
+ import { searchForLocalTorrentByCriteria } from "./pipeline.js";
13
7
  function getData(req) {
14
8
  return new Promise((resolve) => {
15
9
  const chunks = [];
@@ -27,7 +21,7 @@ function parseData(data) {
27
21
  parsed = JSON.parse(data);
28
22
  }
29
23
  catch (_) {
30
- parsed = querystring_1.parse(data);
24
+ parsed = qsParse(data);
31
25
  }
32
26
  // transformations
33
27
  {
@@ -56,49 +50,48 @@ async function handleRequest(req, res) {
56
50
  }
57
51
  const dataStr = await getData(req);
58
52
  const data = parseData(dataStr);
59
- const criteria = lodash_1.pick(data, ["infoHash", "name"]);
60
- const nonceOptions = lodash_1.pick(data, ["trackers", "outputDir"]);
53
+ const criteria = pick(data, ["infoHash", "name"]);
54
+ const nonceOptions = pick(data, ["trackers", "outputDir"]);
61
55
  if (!criteria) {
62
- logger_1.logger.error({
63
- label: logger_1.Label.SERVER,
56
+ logger.error({
57
+ label: Label.SERVER,
64
58
  message: "A name or info hash must be provided",
65
59
  });
66
60
  res.writeHead(400);
67
61
  res.end();
68
62
  }
69
- const criteriaStr = util_1.inspect(criteria);
63
+ const criteriaStr = inspect(criteria);
70
64
  res.writeHead(204);
71
65
  res.end();
72
- logger_1.logger.info({ label: logger_1.Label.SERVER, message: `Received ${criteriaStr}` });
66
+ logger.info({ label: Label.SERVER, message: `Received ${criteriaStr}` });
73
67
  try {
74
68
  let numFound = null;
75
69
  if (criteria) {
76
- numFound = await pipeline_1.searchForLocalTorrentByCriteria(criteria, nonceOptions);
70
+ numFound = await searchForLocalTorrentByCriteria(criteria, nonceOptions);
77
71
  }
78
72
  if (numFound === null) {
79
- logger_1.logger.info({
80
- label: logger_1.Label.SERVER,
73
+ logger.info({
74
+ label: Label.SERVER,
81
75
  message: `Did not search for ${criteriaStr}`,
82
76
  });
83
77
  }
84
78
  else {
85
- logger_1.logger.info({
86
- label: logger_1.Label.SERVER,
79
+ logger.info({
80
+ label: Label.SERVER,
87
81
  message: `Found ${numFound} torrents for ${criteriaStr}`,
88
82
  });
89
83
  }
90
84
  }
91
85
  catch (e) {
92
- logger_1.logger.error(e);
86
+ logger.error(e);
93
87
  }
94
88
  }
95
- async function serve() {
96
- const server = http_1.default.createServer(handleRequest);
89
+ export async function serve() {
90
+ const server = http.createServer(handleRequest);
97
91
  server.listen(2468);
98
- logger_1.logger.info({
99
- label: logger_1.Label.SERVER,
92
+ logger.info({
93
+ label: Label.SERVER,
100
94
  message: "Server is running on port 2468, ^C to stop.",
101
95
  });
102
96
  }
103
- exports.serve = serve;
104
97
  //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signalHandlers.js","sourceRoot":"","sources":["../src/signalHandlers.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;AACnC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { getClient } from "./clients/TorrentClient.js";
2
+ import { CrossSeedError } from "./errors.js";
3
+ import { validateJackettApi } from "./jackett.js";
4
+ import { logger } from "./logger.js";
5
+ import { getRuntimeConfig } from "./runtimeConfig.js";
6
+ import { validateTorrentDir } from "./torrent.js";
7
+ function validateOptions() {
8
+ const { action, rtorrentRpcUrl, qbittorrentUrl } = getRuntimeConfig();
9
+ if (action === "inject" && !(rtorrentRpcUrl || qbittorrentUrl)) {
10
+ throw new CrossSeedError("You need to specify --rtorrent-rpc-url or --qbittorrent-url when using '-A inject'.");
11
+ }
12
+ }
13
+ export async function doStartupValidation() {
14
+ logger.info("Validating your configuration...");
15
+ validateOptions();
16
+ const downloadClient = getClient();
17
+ await Promise.all([
18
+ validateJackettApi(),
19
+ downloadClient === null || downloadClient === void 0 ? void 0 : downloadClient.validateConfig(),
20
+ validateTorrentDir(),
21
+ ].filter(Boolean));
22
+ logger.info("Your configuration is valid!");
23
+ }
24
+ //# sourceMappingURL=startup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"startup.js","sourceRoot":"","sources":["../src/startup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElD,SAAS,eAAe;IACvB,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,gBAAgB,EAAE,CAAC;IACtE,IAAI,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,cAAc,IAAI,cAAc,CAAC,EAAE;QAC/D,MAAM,IAAI,cAAc,CACvB,qFAAqF,CACrF,CAAC;KACF;AACF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACxC,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;IAChD,eAAe,EAAE,CAAC;IAClB,MAAM,cAAc,GAAG,SAAS,EAAE,CAAC;IACnC,MAAM,OAAO,CAAC,GAAG,CAChB;QACC,kBAAkB,EAAE;QACpB,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,cAAc,EAAE;QAChC,kBAAkB,EAAE;KACpB,CAAC,MAAM,CAAC,OAAO,CAAC,CACjB,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;AAC7C,CAAC"}
@@ -0,0 +1,128 @@
1
+ import fs, { promises as fsPromises } from "fs";
2
+ import parseTorrent from "parse-torrent";
3
+ import path from "path";
4
+ import simpleGet from "simple-get";
5
+ import { inspect } from "util";
6
+ import db from "./db.js";
7
+ import { CrossSeedError } from "./errors.js";
8
+ import { logger } from "./logger.js";
9
+ import { getRuntimeConfig } from "./runtimeConfig.js";
10
+ import { createSearcheeFromTorrentFile } from "./searchee.js";
11
+ import { ok, stripExtension } from "./utils.js";
12
+ export async function parseTorrentFromFilename(filename) {
13
+ const data = await fsPromises.readFile(filename);
14
+ return parseTorrent(data);
15
+ }
16
+ export async function parseTorrentFromURL(url) {
17
+ var _a;
18
+ let response;
19
+ try {
20
+ response = await new Promise((resolve, reject) => {
21
+ simpleGet.concat({ url, followRedirects: false }, (err, res, data) => {
22
+ if (err)
23
+ return reject(err);
24
+ res.data = data;
25
+ return resolve(res);
26
+ });
27
+ });
28
+ }
29
+ catch (e) {
30
+ logger.error(`failed to access ${url}`);
31
+ logger.debug(e);
32
+ return null;
33
+ }
34
+ if (response.statusCode < 200 || response.statusCode >= 300) {
35
+ if (response.statusCode >= 300 &&
36
+ response.statusCode < 400 &&
37
+ ((_a = response.headers.location) === null || _a === void 0 ? void 0 : _a.startsWith("magnet:"))) {
38
+ logger.error(`Unsupported: magnet link detected at ${url}`);
39
+ return null;
40
+ }
41
+ else {
42
+ logger.error(`error downloading torrent at ${url}: ${response.statusCode} ${response.statusMessage}`);
43
+ logger.debug("response: %s", response.data);
44
+ logger.debug("headers: %s", response.headers);
45
+ return null;
46
+ }
47
+ }
48
+ try {
49
+ return parseTorrent(response.data);
50
+ }
51
+ catch (e) {
52
+ logger.error(`invalid torrent contents at ${url}`);
53
+ logger.debug(e);
54
+ return null;
55
+ }
56
+ }
57
+ export function saveTorrentFile(tracker, tag = "", info, nonceOptions) {
58
+ const { outputDir: runtimeConfigOutputDir } = getRuntimeConfig();
59
+ const { outputDir = runtimeConfigOutputDir } = nonceOptions;
60
+ const buf = parseTorrent.toTorrentFile(info);
61
+ const name = stripExtension(info.name);
62
+ const filename = `[${tag}][${tracker}]${name}.torrent`;
63
+ fs.writeFileSync(path.join(outputDir, filename), buf, { mode: 0o644 });
64
+ }
65
+ export async function findAllTorrentFilesInDir(torrentDir) {
66
+ return (await fsPromises.readdir(torrentDir))
67
+ .filter((fn) => path.extname(fn) === ".torrent")
68
+ .sort()
69
+ .map((fn) => path.resolve(path.join(torrentDir, fn)));
70
+ }
71
+ export async function indexNewTorrents() {
72
+ const { torrentDir } = getRuntimeConfig();
73
+ const dirContents = await findAllTorrentFilesInDir(torrentDir);
74
+ // index new torrents in the torrentDir
75
+ for (const filepath of dirContents) {
76
+ const doesAlreadyExist = db.data.indexedTorrents.find((e) => e.filepath === filepath);
77
+ if (!doesAlreadyExist) {
78
+ let meta;
79
+ try {
80
+ meta = await parseTorrentFromFilename(filepath);
81
+ }
82
+ catch (e) {
83
+ logger.error(`Failed to parse ${filepath}`);
84
+ logger.debug(e);
85
+ continue;
86
+ }
87
+ db.data.indexedTorrents.push({
88
+ filepath,
89
+ infoHash: meta.infoHash,
90
+ name: meta.name,
91
+ });
92
+ }
93
+ }
94
+ // clean up torrents that no longer exist in the torrentDir
95
+ db.data.indexedTorrents = db.data.indexedTorrents.filter((e) => dirContents.includes(e.filepath));
96
+ db.write();
97
+ }
98
+ export function getInfoHashesToExclude() {
99
+ return db.data.indexedTorrents.map((t) => t.infoHash);
100
+ }
101
+ export async function validateTorrentDir() {
102
+ const { torrentDir } = getRuntimeConfig();
103
+ try {
104
+ await fsPromises.readdir(torrentDir);
105
+ }
106
+ catch (e) {
107
+ throw new CrossSeedError(`Torrent dir ${torrentDir} is invalid`);
108
+ }
109
+ }
110
+ export async function loadTorrentDirLight() {
111
+ const { torrentDir } = getRuntimeConfig();
112
+ return Promise.all(fs
113
+ .readdirSync(torrentDir)
114
+ .filter((fn) => path.extname(fn) === ".torrent")
115
+ .sort()
116
+ .map(createSearcheeFromTorrentFile)).then((searcheeResults) => searcheeResults.filter(ok));
117
+ }
118
+ export async function getTorrentByCriteria(criteria) {
119
+ await indexNewTorrents();
120
+ const findResult = db.data.indexedTorrents.find((e) => (!criteria.infoHash || criteria.infoHash === e.infoHash) &&
121
+ (!criteria.name || criteria.name === e.name));
122
+ if (findResult === undefined) {
123
+ const message = `could not find a torrent with the criteria ${inspect(criteria)}`;
124
+ throw new Error(message);
125
+ }
126
+ return parseTorrentFromFilename(findResult.filepath);
127
+ }
128
+ //# sourceMappingURL=torrent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"torrent.js","sourceRoot":"","sources":["../src/torrent.ts"],"names":[],"mappings":"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"}
package/dist/utils.js ADDED
@@ -0,0 +1,28 @@
1
+ import { EP_REGEX, EXTENSIONS, MOVIE_REGEX, SEASON_REGEX, } from "./constants.js";
2
+ export function stripExtension(filename) {
3
+ for (const ext of EXTENSIONS) {
4
+ const re = new RegExp(`\\.${ext}$`);
5
+ if (re.test(filename))
6
+ return filename.replace(re, "");
7
+ }
8
+ return filename;
9
+ }
10
+ export function nMinutesAgo(n) {
11
+ const date = new Date();
12
+ date.setMinutes(date.getMinutes() - n);
13
+ return date.getTime();
14
+ }
15
+ export function wait(n) {
16
+ return new Promise((resolve) => setTimeout(resolve, n));
17
+ }
18
+ export function getTag(name) {
19
+ return EP_REGEX.test(name)
20
+ ? "episode"
21
+ : SEASON_REGEX.test(name)
22
+ ? "pack"
23
+ : MOVIE_REGEX.test(name)
24
+ ? "movie"
25
+ : "unknown";
26
+ }
27
+ export const ok = (r) => !(r instanceof Error);
28
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,QAAQ,EACR,UAAU,EACV,WAAW,EACX,YAAY,GACZ,MAAM,gBAAgB,CAAC;AAExB,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC9C,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE;QAC7B,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;QACpC,IAAI,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;YAAE,OAAO,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;KACvD;IACD,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAAS;IACpC,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IACxB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;IACvC,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,CAAS;IAC7B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,IAAY;IAClC,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;QACzB,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;YACzB,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;gBACxB,CAAC,CAAC,OAAO;gBACT,CAAC,CAAC,SAAS,CAAC;AACd,CAAC;AAID,MAAM,CAAC,MAAM,EAAE,GAAG,CAAI,CAAY,EAAU,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,19 +1,22 @@
1
1
  {
2
2
  "name": "cross-seed",
3
- "version": "2.9.3",
3
+ "version": "3.0.0",
4
4
  "description": "Query Jackett for cross-seedable torrents",
5
5
  "scripts": {
6
6
  "test": "true",
7
7
  "build": "tsc",
8
- "release": "np",
9
- "prepare": "rimraf dist && npm run build"
8
+ "prepare": "rimraf dist && npm run build && husky install"
10
9
  },
11
10
  "bin": {
12
- "cross-seed": "dist/src/cmd.js"
11
+ "cross-seed": "dist/cmd.js"
12
+ },
13
+ "engines": {
14
+ "node": ">=14"
13
15
  },
14
16
  "files": [
15
17
  "dist/"
16
18
  ],
19
+ "type": "module",
17
20
  "repository": {
18
21
  "type": "git",
19
22
  "url": "git://github.com/mmgoodnow/cross-seed.git"
@@ -22,42 +25,35 @@
22
25
  "license": "Apache-2.0",
23
26
  "dependencies": {
24
27
  "bencode": "^2.0.1",
25
- "chalk": "^4.1.0",
26
- "commander": "^7.0.0",
27
- "form-data": "^3.0.1",
28
- "lodash": "^4.17.21",
29
- "lowdb": "^1.0.0",
30
- "node-fetch": "^2.6.1",
28
+ "chalk": "^5.0.0",
29
+ "commander": "^8.3.0",
30
+ "form-data": "^4.0.0",
31
+ "lodash-es": "^4.17.21",
32
+ "lowdb": "^3.0.0",
33
+ "node-fetch": "^3.1.0",
31
34
  "parse-torrent": "^9.1.3",
32
- "rimraf": "^2.6.3",
35
+ "rimraf": "^3.0.2",
33
36
  "simple-get": "^4.0.0",
34
37
  "winston": "^3.3.3",
35
38
  "xmlrpc": "^1.3.2"
36
39
  },
37
40
  "devDependencies": {
38
- "@types/bencode": "^2.0.0",
41
+ "@types/bencode": "^2.0.1",
39
42
  "@types/lowdb": "^1.0.9",
40
- "@types/node-fetch": "^2.5.8",
41
43
  "@types/xmlrpc": "^1.3.6",
42
- "@typescript-eslint/eslint-plugin": "^4.16.1",
43
- "@typescript-eslint/parser": "^4.16.1",
44
- "eslint": "^7.11.0",
45
- "husky": "^4.3.0",
46
- "lint-staged": "^10.4.0",
47
- "np": "*",
44
+ "@typescript-eslint/eslint-plugin": "^5.8.1",
45
+ "@typescript-eslint/parser": "^5.8.1",
46
+ "eslint": "^8.5.0",
47
+ "husky": "^7.0.0",
48
+ "lint-staged": "^12.1.4",
48
49
  "prettier": "^2.0.5",
49
- "typescript": "^4.2.3"
50
+ "typescript": "^4.6.0-dev.20211227"
50
51
  },
51
52
  "prettier": {
52
53
  "tabWidth": 4,
53
54
  "useTabs": true,
54
55
  "proseWrap": "always"
55
56
  },
56
- "husky": {
57
- "hooks": {
58
- "pre-commit": "npm run build && lint-staged"
59
- }
60
- },
61
57
  "lint-staged": {
62
58
  "*.{js,ts}": "eslint --cache",
63
59
  "*.{js,json,ts,css,md}": "prettier --write"
package/dist/package.json DELETED
@@ -1,68 +0,0 @@
1
- {
2
- "name": "cross-seed",
3
- "version": "2.9.3",
4
- "description": "Query Jackett for cross-seedable torrents",
5
- "scripts": {
6
- "test": "true",
7
- "build": "tsc",
8
- "release": "np",
9
- "prepare": "rimraf dist && npm run build"
10
- },
11
- "bin": {
12
- "cross-seed": "dist/src/cmd.js"
13
- },
14
- "files": [
15
- "dist/"
16
- ],
17
- "repository": {
18
- "type": "git",
19
- "url": "git://github.com/mmgoodnow/cross-seed.git"
20
- },
21
- "author": "Michael Goodnow",
22
- "license": "Apache-2.0",
23
- "dependencies": {
24
- "bencode": "^2.0.1",
25
- "chalk": "^4.1.0",
26
- "commander": "^7.0.0",
27
- "form-data": "^3.0.1",
28
- "lodash": "^4.17.21",
29
- "lowdb": "^1.0.0",
30
- "node-fetch": "^2.6.1",
31
- "parse-torrent": "^9.1.3",
32
- "rimraf": "^2.6.3",
33
- "simple-get": "^4.0.0",
34
- "winston": "^3.3.3",
35
- "xmlrpc": "^1.3.2"
36
- },
37
- "devDependencies": {
38
- "@types/bencode": "^2.0.0",
39
- "@types/lowdb": "^1.0.9",
40
- "@types/node-fetch": "^2.5.8",
41
- "@types/xmlrpc": "^1.3.6",
42
- "@typescript-eslint/eslint-plugin": "^4.16.1",
43
- "@typescript-eslint/parser": "^4.16.1",
44
- "eslint": "^7.11.0",
45
- "husky": "^4.3.0",
46
- "lint-staged": "^10.4.0",
47
- "np": "*",
48
- "prettier": "^2.0.5",
49
- "typescript": "^4.2.3"
50
- },
51
- "prettier": {
52
- "tabWidth": 4,
53
- "useTabs": true,
54
- "proseWrap": "always"
55
- },
56
- "husky": {
57
- "hooks": {
58
- "pre-commit": "npm run build && lint-staged"
59
- }
60
- },
61
- "lint-staged": {
62
- "*.{js,ts}": "eslint --cache",
63
- "*.{js,json,ts,css,md}": "prettier --write"
64
- },
65
- "np": {
66
- "yarn": false
67
- }
68
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"QBittorrent.js","sourceRoot":"","sources":["../../../src/clients/QBittorrent.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"RTorrent.js","sourceRoot":"","sources":["../../../src/clients/RTorrent.ts"],"names":[],"mappings":"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"}
@@ -1,27 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getClient = void 0;
7
- const runtimeConfig_1 = require("../runtimeConfig");
8
- const QBittorrent_1 = __importDefault(require("./QBittorrent"));
9
- const RTorrent_1 = __importDefault(require("./RTorrent"));
10
- let activeClient;
11
- function instantiateDownloadClient() {
12
- const { rtorrentRpcUrl, qbittorrentUrl } = runtimeConfig_1.getRuntimeConfig();
13
- if (rtorrentRpcUrl) {
14
- activeClient = new RTorrent_1.default();
15
- }
16
- else if (qbittorrentUrl) {
17
- activeClient = new QBittorrent_1.default();
18
- }
19
- }
20
- function getClient() {
21
- if (!activeClient) {
22
- instantiateDownloadClient();
23
- }
24
- return activeClient;
25
- }
26
- exports.getClient = getClient;
27
- //# sourceMappingURL=TorrentClient.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TorrentClient.js","sourceRoot":"","sources":["../../../src/clients/TorrentClient.ts"],"names":[],"mappings":";;;;;;AAEA,oDAAkE;AAElE,gEAAwC;AACxC,0DAAkC;AAElC,IAAI,YAA2B,CAAC;AAWhC,SAAS,yBAAyB;IACjC,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,gCAAgB,EAAE,CAAC;IAC9D,IAAI,cAAc,EAAE;QACnB,YAAY,GAAG,IAAI,kBAAQ,EAAE,CAAC;KAC9B;SAAM,IAAI,cAAc,EAAE;QAC1B,YAAY,GAAG,IAAI,qBAAW,EAAE,CAAC;KACjC;AACF,CAAC;AAED,SAAgB,SAAS;IACxB,IAAI,CAAC,YAAY,EAAE;QAClB,yBAAyB,EAAE,CAAC;KAC5B;IACD,OAAO,YAAY,CAAC;AACrB,CAAC;AALD,8BAKC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"cmd.js","sourceRoot":"","sources":["../../src/cmd.ts"],"names":[],"mappings":"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"}