cross-seed 2.9.0 → 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 +52 -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} +58 -60
  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 -140
  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 -139
  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
@@ -1 +0,0 @@
1
- {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/pipeline.ts"],"names":[],"mappings":"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"}
@@ -1,77 +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.filterTimestamps = exports.filterDupes = exports.filterByContent = void 0;
7
- const lodash_1 = require("lodash");
8
- const path_1 = __importDefault(require("path"));
9
- const constants_1 = require("./constants");
10
- const db_1 = __importDefault(require("./db"));
11
- const logger_1 = require("./logger");
12
- const runtimeConfig_1 = require("./runtimeConfig");
13
- const utils_1 = require("./utils");
14
- const extensionsWithDots = constants_1.EXTENSIONS.map((e) => `.${e}`);
15
- function filterByContent(searchee) {
16
- const { includeEpisodes, searchAll } = runtimeConfig_1.getRuntimeConfig();
17
- if (searchAll)
18
- return true;
19
- function logReason(reason) {
20
- logger_1.logger.verbose({
21
- label: logger_1.Label.PREFILTER,
22
- message: `Torrent ${searchee.name} was not selected for searching because ${reason}`,
23
- });
24
- }
25
- if (!includeEpisodes &&
26
- searchee.files.length === 1 &&
27
- constants_1.EP_REGEX.test(searchee.files[0].name)) {
28
- logReason("it is a single episode");
29
- return false;
30
- }
31
- const allVideos = searchee.files.every((file) => extensionsWithDots.includes(path_1.default.extname(file.name)));
32
- if (!allVideos) {
33
- logReason("not all files are videos");
34
- return false;
35
- }
36
- return true;
37
- }
38
- exports.filterByContent = filterByContent;
39
- function filterDupes(searchees) {
40
- const filtered = lodash_1.uniqBy(searchees, "name");
41
- const numDupes = searchees.length - filtered.length;
42
- if (numDupes > 0) {
43
- logger_1.logger.verbose({
44
- label: logger_1.Label.PREFILTER,
45
- message: `${numDupes} duplicates not selected for searching`,
46
- });
47
- }
48
- return filtered;
49
- }
50
- exports.filterDupes = filterDupes;
51
- function filterTimestamps(searchee) {
52
- const { excludeOlder, excludeRecentSearch } = runtimeConfig_1.getRuntimeConfig();
53
- const timestampData = db_1.default
54
- .get([constants_1.SEARCHEES, searchee.name])
55
- .value();
56
- if (!timestampData)
57
- return true;
58
- const { firstSearched, lastSearched } = timestampData;
59
- function logReason(reason) {
60
- logger_1.logger.verbose({
61
- label: logger_1.Label.PREFILTER,
62
- message: `Torrent ${searchee.name} was not selected for searching because ${reason}`,
63
- });
64
- }
65
- if (excludeOlder && firstSearched < utils_1.nMinutesAgo(excludeOlder)) {
66
- logReason(`its first search timestamp ${firstSearched} is older than ${excludeOlder} minutes ago`);
67
- return false;
68
- }
69
- if (excludeRecentSearch &&
70
- lastSearched > utils_1.nMinutesAgo(excludeRecentSearch)) {
71
- logReason(`its last search timestamp ${lastSearched} is newer than ${excludeRecentSearch} minutes ago`);
72
- return false;
73
- }
74
- return true;
75
- }
76
- exports.filterTimestamps = filterTimestamps;
77
- //# sourceMappingURL=preFilter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"preFilter.js","sourceRoot":"","sources":["../../src/preFilter.ts"],"names":[],"mappings":"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"}
@@ -1,35 +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.sendTestNotification = exports.initializePushNotifier = exports.PushNotifier = exports.pushNotifier = void 0;
7
- const node_fetch_1 = __importDefault(require("node-fetch"));
8
- const logger_1 = require("./logger");
9
- const runtimeConfig_1 = require("./runtimeConfig");
10
- class PushNotifier {
11
- constructor(url) {
12
- this.url = url;
13
- }
14
- notify({ title = "cross-seed", body, ...rest }) {
15
- if (this.url) {
16
- node_fetch_1.default(this.url, {
17
- method: "POST",
18
- headers: { "Content-Type": "application/json" },
19
- body: JSON.stringify({ title, body, ...rest }),
20
- });
21
- }
22
- }
23
- }
24
- exports.PushNotifier = PushNotifier;
25
- function initializePushNotifier() {
26
- const { notificationWebhookUrl } = runtimeConfig_1.getRuntimeConfig();
27
- exports.pushNotifier = new PushNotifier(notificationWebhookUrl);
28
- }
29
- exports.initializePushNotifier = initializePushNotifier;
30
- function sendTestNotification() {
31
- exports.pushNotifier.notify({ body: "Test" });
32
- logger_1.logger.info("Sent test notification");
33
- }
34
- exports.sendTestNotification = sendTestNotification;
35
- //# sourceMappingURL=pushNotifier.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pushNotifier.js","sourceRoot":"","sources":["../../src/pushNotifier.ts"],"names":[],"mappings":";;;;;;AAAA,4DAA+B;AAC/B,qCAAkC;AAClC,mDAAmD;AAUnD,MAAa,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,oBAAK,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;AAfD,oCAeC;AAED,SAAgB,sBAAsB;IACrC,MAAM,EAAE,sBAAsB,EAAE,GAAG,gCAAgB,EAAE,CAAC;IACtD,oBAAY,GAAG,IAAI,YAAY,CAAC,sBAAsB,CAAC,CAAC;AACzD,CAAC;AAHD,wDAGC;AAED,SAAgB,oBAAoB;IACnC,oBAAY,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACtC,eAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;AACvC,CAAC;AAHD,oDAGC"}
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getRuntimeConfig = exports.setRuntimeConfig = exports.EmptyNonceOptions = void 0;
4
- exports.EmptyNonceOptions = {
5
- trackers: undefined,
6
- outputDir: undefined,
7
- };
8
- let runtimeConfig;
9
- function setRuntimeConfig(configObj) {
10
- runtimeConfig = configObj;
11
- }
12
- exports.setRuntimeConfig = setRuntimeConfig;
13
- function getRuntimeConfig() {
14
- return runtimeConfig;
15
- }
16
- exports.getRuntimeConfig = getRuntimeConfig;
17
- //# sourceMappingURL=runtimeConfig.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtimeConfig.js","sourceRoot":"","sources":["../../src/runtimeConfig.ts"],"names":[],"mappings":";;;AAyBa,QAAA,iBAAiB,GAAG;IAChC,QAAQ,EAAE,SAAS;IACnB,SAAS,EAAE,SAAS;CACpB,CAAC;AAEF,IAAI,aAA4B,CAAC;AAEjC,SAAgB,gBAAgB,CAAC,SAAwB;IACxD,aAAa,GAAG,SAAS,CAAC;AAC3B,CAAC;AAFD,4CAEC;AAED,SAAgB,gBAAgB;IAC/B,OAAO,aAAa,CAAC;AACtB,CAAC;AAFD,4CAEC"}
@@ -1,72 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
- Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.createSearcheeFromTorrentFile = void 0;
23
- const lodash_1 = require("lodash");
24
- const path_1 = __importStar(require("path"));
25
- const runtimeConfig_1 = require("./runtimeConfig");
26
- const torrent_1 = require("./torrent");
27
- const logger_1 = require("./logger");
28
- function getFilesFromTorrent(meta) {
29
- if (!meta.info.files) {
30
- return [
31
- {
32
- name: meta.name,
33
- path: meta.name,
34
- length: meta.length,
35
- },
36
- ];
37
- }
38
- const unsortedFiles = meta.info.files.map((file) => {
39
- const rawPathSegments = file["path.utf-8"] || file.path;
40
- const pathSegments = rawPathSegments.map((s) => s.toString());
41
- return {
42
- name: pathSegments[pathSegments.length - 1],
43
- length: file.length,
44
- // Note that we don't use path.join here because of
45
- // https://github.com/mmgoodnow/cross-seed/issues/46.
46
- // path.join ignores zero-length path segments,
47
- // which we do not want.
48
- path: [meta.name, ...pathSegments].join(path_1.default.sep),
49
- };
50
- });
51
- return lodash_1.sortBy(unsortedFiles, "path");
52
- }
53
- async function createSearcheeFromTorrentFile(filename) {
54
- const { torrentDir } = runtimeConfig_1.getRuntimeConfig();
55
- const fullPath = path_1.join(torrentDir, filename);
56
- try {
57
- const meta = await torrent_1.parseTorrentFromFilename(fullPath);
58
- return {
59
- files: getFilesFromTorrent(meta),
60
- infoHash: meta.infoHash,
61
- name: meta.name,
62
- length: meta.length,
63
- };
64
- }
65
- catch (e) {
66
- logger_1.logger.error(`Failed to parse ${filename}`);
67
- logger_1.logger.debug(e);
68
- return e;
69
- }
70
- }
71
- exports.createSearcheeFromTorrentFile = createSearcheeFromTorrentFile;
72
- //# sourceMappingURL=searchee.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"searchee.js","sourceRoot":"","sources":["../../src/searchee.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,mCAAgC;AAEhC,6CAAkC;AAClC,mDAAmD;AACnD,uCAAqD;AAErD,qCAAkC;AAelC,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,cAAI,CAAC,GAAG,CAAC;SACjD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,eAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AACtC,CAAC;AAEM,KAAK,UAAU,6BAA6B,CAClD,QAAgB;IAEhB,MAAM,EAAE,UAAU,EAAE,GAAG,gCAAgB,EAAE,CAAC;IAC1C,MAAM,QAAQ,GAAG,WAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC5C,IAAI;QACH,MAAM,IAAI,GAAG,MAAM,kCAAwB,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,eAAM,CAAC,KAAK,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;QAC5C,eAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAChB,OAAO,CAAC,CAAC;KACT;AACF,CAAC;AAlBD,sEAkBC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
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"}
@@ -1,28 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.doStartupValidation = void 0;
4
- const TorrentClient_1 = require("./clients/TorrentClient");
5
- const errors_1 = require("./errors");
6
- const jackett_1 = require("./jackett");
7
- const logger_1 = require("./logger");
8
- const runtimeConfig_1 = require("./runtimeConfig");
9
- const torrent_1 = require("./torrent");
10
- function validateOptions() {
11
- const { action, rtorrentRpcUrl, qbittorrentUrl } = runtimeConfig_1.getRuntimeConfig();
12
- if (action === "inject" && !(rtorrentRpcUrl || qbittorrentUrl)) {
13
- throw new errors_1.CrossSeedError("You need to specify --rtorrent-rpc-url or --qbittorrent-url when using '-A inject'.");
14
- }
15
- }
16
- async function doStartupValidation() {
17
- logger_1.logger.info("Validating your configuration...");
18
- validateOptions();
19
- const downloadClient = TorrentClient_1.getClient();
20
- await Promise.all([
21
- jackett_1.validateJackettApi(),
22
- downloadClient && downloadClient.validateConfig(),
23
- torrent_1.validateTorrentDir(),
24
- ].filter(Boolean));
25
- logger_1.logger.info("Your configuration is valid!");
26
- }
27
- exports.doStartupValidation = doStartupValidation;
28
- //# sourceMappingURL=startup.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"startup.js","sourceRoot":"","sources":["../../src/startup.ts"],"names":[],"mappings":";;;AAAA,2DAAoD;AACpD,qCAA0C;AAC1C,uCAA+C;AAC/C,qCAAkC;AAClC,mDAAmD;AACnD,uCAA+C;AAE/C,SAAS,eAAe;IACvB,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,gCAAgB,EAAE,CAAC;IACtE,IAAI,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,cAAc,IAAI,cAAc,CAAC,EAAE;QAC/D,MAAM,IAAI,uBAAc,CACvB,qFAAqF,CACrF,CAAC;KACF;AACF,CAAC;AAEM,KAAK,UAAU,mBAAmB;IACxC,eAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;IAChD,eAAe,EAAE,CAAC;IAClB,MAAM,cAAc,GAAG,yBAAS,EAAE,CAAC;IACnC,MAAM,OAAO,CAAC,GAAG,CAChB;QACC,4BAAkB,EAAE;QACpB,cAAc,IAAI,cAAc,CAAC,cAAc,EAAE;QACjD,4BAAkB,EAAE;KACpB,CAAC,MAAM,CAAC,OAAO,CAAC,CACjB,CAAC;IACF,eAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;AAC7C,CAAC;AAZD,kDAYC"}
@@ -1,169 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
- var __importDefault = (this && this.__importDefault) || function (mod) {
22
- return (mod && mod.__esModule) ? mod : { "default": mod };
23
- };
24
- Object.defineProperty(exports, "__esModule", { value: true });
25
- exports.getTorrentByCriteria = exports.loadTorrentDirLight = exports.validateTorrentDir = exports.getInfoHashesToExclude = exports.indexNewTorrents = exports.findAllTorrentFilesInDir = exports.saveTorrentFile = exports.parseTorrentFromURL = exports.parseTorrentFromFilename = void 0;
26
- const fs_1 = __importStar(require("fs"));
27
- const parse_torrent_1 = __importDefault(require("parse-torrent"));
28
- const path_1 = __importDefault(require("path"));
29
- const simple_get_1 = require("simple-get");
30
- const util_1 = require("util");
31
- const constants_1 = require("./constants");
32
- const db_1 = __importDefault(require("./db"));
33
- const errors_1 = require("./errors");
34
- const logger_1 = require("./logger");
35
- const runtimeConfig_1 = require("./runtimeConfig");
36
- const searchee_1 = require("./searchee");
37
- const utils_1 = require("./utils");
38
- async function parseTorrentFromFilename(filename) {
39
- const data = await fs_1.promises.readFile(filename);
40
- return parse_torrent_1.default(data);
41
- }
42
- exports.parseTorrentFromFilename = parseTorrentFromFilename;
43
- async function parseTorrentFromURL(url) {
44
- let response;
45
- try {
46
- response = await new Promise((resolve, reject) => {
47
- simple_get_1.concat({ url, followRedirects: false }, (err, res, data) => {
48
- if (err)
49
- return reject(err);
50
- res.data = data;
51
- return resolve(res);
52
- });
53
- });
54
- }
55
- catch (e) {
56
- logger_1.logger.error(`failed to access ${url}`);
57
- logger_1.logger.debug(e);
58
- return null;
59
- }
60
- if (response.statusCode < 200 || response.statusCode >= 300) {
61
- if (response.statusCode >= 300 &&
62
- response.statusCode < 400 &&
63
- response.headers.location &&
64
- response.headers.location.startsWith("magnet:")) {
65
- logger_1.logger.error(`Unsupported: magnet link detected at ${url}`);
66
- return null;
67
- }
68
- else {
69
- logger_1.logger.error(`error downloading torrent at ${url}: ${response.statusCode} ${response.statusMessage}`);
70
- logger_1.logger.debug("response: %s", response.data);
71
- logger_1.logger.debug("headers: %s", response.headers);
72
- return null;
73
- }
74
- }
75
- try {
76
- return parse_torrent_1.default(response.data);
77
- }
78
- catch (e) {
79
- logger_1.logger.error(`invalid torrent contents at ${url}`);
80
- logger_1.logger.debug(e);
81
- return null;
82
- }
83
- }
84
- exports.parseTorrentFromURL = parseTorrentFromURL;
85
- function saveTorrentFile(tracker, tag = "", info, nonceOptions) {
86
- const { outputDir: runtimeConfigOutputDir } = runtimeConfig_1.getRuntimeConfig();
87
- const { outputDir = runtimeConfigOutputDir } = nonceOptions;
88
- const buf = parse_torrent_1.default.toTorrentFile(info);
89
- const name = utils_1.stripExtension(info.name);
90
- const filename = `[${tag}][${tracker}]${name}.torrent`;
91
- fs_1.default.writeFileSync(path_1.default.join(outputDir, filename), buf, { mode: 0o644 });
92
- }
93
- exports.saveTorrentFile = saveTorrentFile;
94
- async function findAllTorrentFilesInDir(torrentDir) {
95
- return (await fs_1.promises.readdir(torrentDir))
96
- .filter((fn) => path_1.default.extname(fn) === ".torrent")
97
- .sort()
98
- .map((fn) => path_1.default.resolve(path_1.default.join(torrentDir, fn)));
99
- }
100
- exports.findAllTorrentFilesInDir = findAllTorrentFilesInDir;
101
- async function indexNewTorrents() {
102
- const { torrentDir } = runtimeConfig_1.getRuntimeConfig();
103
- const dirContents = await findAllTorrentFilesInDir(torrentDir);
104
- for (const filepath of dirContents) {
105
- const doesAlreadyExist = db_1.default
106
- .get(constants_1.INDEXED_TORRENTS)
107
- .find((indexEntry) => indexEntry.filepath === filepath)
108
- .value();
109
- if (!doesAlreadyExist) {
110
- let meta;
111
- try {
112
- meta = await parseTorrentFromFilename(filepath);
113
- }
114
- catch (e) {
115
- logger_1.logger.error(`Failed to parse ${filepath}`);
116
- logger_1.logger.debug(e);
117
- continue;
118
- }
119
- db_1.default.get(constants_1.INDEXED_TORRENTS).value().push({
120
- filepath,
121
- infoHash: meta.infoHash,
122
- name: meta.name,
123
- });
124
- }
125
- }
126
- db_1.default.set(constants_1.INDEXED_TORRENTS, db_1.default
127
- .get(constants_1.INDEXED_TORRENTS)
128
- .value()
129
- .filter((e) => dirContents.includes(e.filepath))).value();
130
- db_1.default.write();
131
- }
132
- exports.indexNewTorrents = indexNewTorrents;
133
- function getInfoHashesToExclude() {
134
- return db_1.default
135
- .get(constants_1.INDEXED_TORRENTS)
136
- .value()
137
- .map((t) => t.infoHash);
138
- }
139
- exports.getInfoHashesToExclude = getInfoHashesToExclude;
140
- async function validateTorrentDir() {
141
- const { torrentDir } = runtimeConfig_1.getRuntimeConfig();
142
- try {
143
- await fs_1.promises.readdir(torrentDir);
144
- }
145
- catch (e) {
146
- throw new errors_1.CrossSeedError(`Torrent dir ${torrentDir} is invalid`);
147
- }
148
- }
149
- exports.validateTorrentDir = validateTorrentDir;
150
- async function loadTorrentDirLight() {
151
- const { torrentDir } = runtimeConfig_1.getRuntimeConfig();
152
- return Promise.all(fs_1.default
153
- .readdirSync(torrentDir)
154
- .filter((fn) => path_1.default.extname(fn) === ".torrent")
155
- .sort()
156
- .map(searchee_1.createSearcheeFromTorrentFile)).then((searcheeResults) => searcheeResults.filter(utils_1.ok));
157
- }
158
- exports.loadTorrentDirLight = loadTorrentDirLight;
159
- async function getTorrentByCriteria(criteria) {
160
- await indexNewTorrents();
161
- const findResult = db_1.default.get(constants_1.INDEXED_TORRENTS).find(criteria).value();
162
- if (findResult === undefined) {
163
- const message = `could not find a torrent with the criteria ${util_1.inspect(criteria)}`;
164
- throw new Error(message);
165
- }
166
- return parseTorrentFromFilename(findResult.filepath);
167
- }
168
- exports.getTorrentByCriteria = getTorrentByCriteria;
169
- //# sourceMappingURL=torrent.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"torrent.js","sourceRoot":"","sources":["../../src/torrent.ts"],"names":[],"mappings":"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"}
package/dist/src/utils.js DELETED
@@ -1,39 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ok = exports.getTag = exports.wait = exports.nMinutesAgo = exports.partial = exports.stripExtension = void 0;
4
- const constants_1 = require("./constants");
5
- function stripExtension(filename) {
6
- for (const ext of constants_1.EXTENSIONS) {
7
- const re = new RegExp(`\\.${ext}$`);
8
- if (re.test(filename))
9
- return filename.replace(re, "");
10
- }
11
- return filename;
12
- }
13
- exports.stripExtension = stripExtension;
14
- // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
15
- const partial = (func, ...presets) => (...args) => func(...presets, ...args);
16
- exports.partial = partial;
17
- function nMinutesAgo(n) {
18
- const date = new Date();
19
- date.setMinutes(date.getMinutes() - n);
20
- return date.getTime();
21
- }
22
- exports.nMinutesAgo = nMinutesAgo;
23
- function wait(n) {
24
- return new Promise((resolve) => setTimeout(resolve, n));
25
- }
26
- exports.wait = wait;
27
- function getTag(name) {
28
- return constants_1.EP_REGEX.test(name)
29
- ? "episode"
30
- : constants_1.SEASON_REGEX.test(name)
31
- ? "pack"
32
- : constants_1.MOVIE_REGEX.test(name)
33
- ? "movie"
34
- : "unknown";
35
- }
36
- exports.getTag = getTag;
37
- const ok = (r) => !(r instanceof Error);
38
- exports.ok = ok;
39
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";;;AAAA,2CAA8E;AAE9E,SAAgB,cAAc,CAAC,QAAgB;IAC9C,KAAK,MAAM,GAAG,IAAI,sBAAU,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;AAND,wCAMC;AAED,6EAA6E;AACtE,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,GAAG,OAAO,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,CACxD,IAAI,CAAC,GAAG,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;AADd,QAAA,OAAO,WACO;AAE3B,SAAgB,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;AAJD,kCAIC;AAED,SAAgB,IAAI,CAAC,CAAS;IAC7B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC;AAFD,oBAEC;AAED,SAAgB,MAAM,CAAC,IAAY;IAClC,OAAO,oBAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;QACzB,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,wBAAY,CAAC,IAAI,CAAC,IAAI,CAAC;YACzB,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,uBAAW,CAAC,IAAI,CAAC,IAAI,CAAC;gBACxB,CAAC,CAAC,OAAO;gBACT,CAAC,CAAC,SAAS,CAAC;AACd,CAAC;AARD,wBAQC;AAIM,MAAM,EAAE,GAAG,CAAI,CAAY,EAAU,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC;AAAxD,QAAA,EAAE,MAAsD"}