cross-seed 2.9.1 → 3.0.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.
- package/README.md +2 -1
- package/dist/{src/clients → clients}/QBittorrent.js +31 -37
- package/dist/clients/QBittorrent.js.map +1 -0
- package/dist/{src/clients → clients}/RTorrent.js +52 -48
- package/dist/clients/RTorrent.js.map +1 -0
- package/dist/clients/TorrentClient.js +20 -0
- package/dist/clients/TorrentClient.js.map +1 -0
- package/dist/cmd.js +148 -0
- package/dist/cmd.js.map +1 -0
- package/dist/{src/config.template.js → config.template.cjs} +4 -2
- package/dist/config.template.cjs.map +1 -0
- package/dist/{src/config.template.docker.js → config.template.docker.cjs} +4 -3
- package/dist/config.template.docker.cjs.map +1 -0
- package/dist/configuration.js +39 -0
- package/dist/configuration.js.map +1 -0
- package/dist/constants.js +33 -0
- package/dist/constants.js.map +1 -0
- package/dist/db.js +29 -0
- package/dist/db.js.map +1 -0
- package/dist/decide.js +134 -0
- package/dist/decide.js.map +1 -0
- package/dist/diff.js +23 -0
- package/dist/diff.js.map +1 -0
- package/dist/errors.js +11 -0
- package/dist/errors.js.map +1 -0
- package/dist/jackett.js +68 -0
- package/dist/jackett.js.map +1 -0
- package/dist/logger.js +88 -0
- package/dist/logger.js.map +1 -0
- package/dist/pipeline.js +134 -0
- package/dist/pipeline.js.map +1 -0
- package/dist/preFilter.js +66 -0
- package/dist/preFilter.js.map +1 -0
- package/dist/pushNotifier.js +27 -0
- package/dist/pushNotifier.js.map +1 -0
- package/dist/runtimeConfig.js +12 -0
- package/dist/runtimeConfig.js.map +1 -0
- package/dist/searchee.js +52 -0
- package/dist/searchee.js.map +1 -0
- package/dist/{src/server.js → server.js} +23 -30
- package/dist/server.js.map +1 -0
- package/dist/{src/signalHandlers.js → signalHandlers.js} +0 -0
- package/dist/signalHandlers.js.map +1 -0
- package/dist/startup.js +24 -0
- package/dist/startup.js.map +1 -0
- package/dist/torrent.js +128 -0
- package/dist/torrent.js.map +1 -0
- package/dist/utils.js +28 -0
- package/dist/utils.js.map +1 -0
- package/package.json +22 -25
- package/dist/package.json +0 -68
- package/dist/src/clients/QBittorrent.js.map +0 -1
- package/dist/src/clients/RTorrent.js.map +0 -1
- package/dist/src/clients/TorrentClient.js +0 -27
- package/dist/src/clients/TorrentClient.js.map +0 -1
- package/dist/src/cmd.js +0 -136
- package/dist/src/cmd.js.map +0 -1
- package/dist/src/config.template.docker.js.map +0 -1
- package/dist/src/config.template.js.map +0 -1
- package/dist/src/configuration.js +0 -66
- package/dist/src/configuration.js.map +0 -1
- package/dist/src/constants.js +0 -39
- package/dist/src/constants.js.map +0 -1
- package/dist/src/db.js +0 -34
- package/dist/src/db.js.map +0 -1
- package/dist/src/decide.js +0 -140
- package/dist/src/decide.js.map +0 -1
- package/dist/src/errors.js +0 -15
- package/dist/src/errors.js.map +0 -1
- package/dist/src/jackett.js +0 -76
- package/dist/src/jackett.js.map +0 -1
- package/dist/src/logger.js +0 -78
- package/dist/src/logger.js.map +0 -1
- package/dist/src/pipeline.js +0 -140
- package/dist/src/pipeline.js.map +0 -1
- package/dist/src/preFilter.js +0 -77
- package/dist/src/preFilter.js.map +0 -1
- package/dist/src/pushNotifier.js +0 -35
- package/dist/src/pushNotifier.js.map +0 -1
- package/dist/src/runtimeConfig.js +0 -17
- package/dist/src/runtimeConfig.js.map +0 -1
- package/dist/src/searchee.js +0 -72
- package/dist/src/searchee.js.map +0 -1
- package/dist/src/server.js.map +0 -1
- package/dist/src/signalHandlers.js.map +0 -1
- package/dist/src/startup.js +0 -28
- package/dist/src/startup.js.map +0 -1
- package/dist/src/torrent.js +0 -169
- package/dist/src/torrent.js.map +0 -1
- package/dist/src/utils.js +0 -39
- package/dist/src/utils.js.map +0 -1
@@ -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":";;;;;AAAA,sDAA8B;AAC9B,2BAA2C;AAC3C,kEAAoE;AACpE,+BAAwC;AACxC,oDAAwC;AACxC,4CAA+C;AAC/C,sCAA2C;AAC3C,sCAA0C;AAC1C,oDAAkE;AAElE,oCAAgC;AAchC,KAAK,UAAU,0BAA0B,CACxC,IAAc,EACd,OAAe;IAEf,KAAK,UAAU,iBAAiB,CAC/B,IAAiB;QAEjB,MAAM,QAAQ,GAAG,cAAO,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,MAAM,aAAE;aACvB,KAAK,CAAC,QAAQ,CAAC;aACf,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,EAAY,CAAA,CAAC,CAAC;QAClD,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,EAAE;YACxD,eAAM,CAAC,KAAK,CAAC;gBACZ,KAAK,EAAE,cAAK,CAAC,QAAQ;gBACrB,OAAO,EAAE,QAAQ,QAAQ,6CAA6C;aACtE,CAAC,CAAC;YACH,OAAO;gBACN,SAAS,EAAE,CAAC;gBACZ,KAAK,EAAE,CAAC;gBACR,QAAQ,EAAE,CAAC;aACX,CAAC;SACF;QAED,OAAO;YACN,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;YACpD,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;YAC1C,QAAQ,EAAE,CAAC;SACX,CAAC;IACH,CAAC;IAED,OAAO;QACN,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;QACnD,KAAK,EAAE,MAAM,OAAO,CAAC,GAAG,CACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CACjC;KACD,CAAC;AACH,CAAC;AAED,KAAK,UAAU,wBAAwB,CACtC,IAAc,EACd,QAAgB,EAChB,OAAe;IAEf,MAAM,OAAO,GAAG,iBAAO,CAAC,MAAM,CAAC,uBAAY,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IACjE,OAAO,CAAC,iBAAiB,GAAG,MAAM,0BAA0B,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5E,MAAM,aAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,iBAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AACvD,CAAC;AAED,MAAqB,QAAQ;IAE5B;QACC,MAAM,EAAE,cAAc,EAAE,GAAG,gCAAgB,EAAE,CAAC;QAE9C,IAAI;YACH,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,GAAG,CACjE,cAAc,CACd,CAAC;YAEF,MAAM,aAAa,GAClB,QAAQ,KAAK,QAAQ;gBACpB,CAAC,CAAC,gBAAM,CAAC,kBAAkB;gBAC3B,CAAC,CAAC,gBAAM,CAAC,YAAY,CAAC;YAExB,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC;YAEpD,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC;gBAC3B,GAAG,EAAE,MAAM,GAAG,QAAQ;gBACtB,UAAU,EAAE,aAAa;oBACxB,CAAC,CAAC;wBACA,IAAI,EAAE,kBAAkB,CAAC,QAAQ,CAAC;wBAClC,IAAI,EAAE,kBAAkB,CAAC,QAAQ,CAAC;qBACjC;oBACH,CAAC,CAAC,SAAS;aACZ,CAAC,CAAC;SACH;QAAC,OAAO,CAAC,EAAE;YACX,MAAM,IAAI,uBAAc,CAAC,sCAAsC,CAAC,CAAC;SACjE;IACF,CAAC;IAEO,KAAK,CAAC,WAAW,CAAI,MAAc,EAAE,IAAI;QAChD,eAAM,CAAC,OAAO,CAAC;YACd,KAAK,EAAE,cAAK,CAAC,QAAQ;YACrB,OAAO,EAAE,kBAAkB,MAAM,gBAAgB,IAAI,EAAE;SACvD,CAAC,CAAC;QACH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACtC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;gBAClD,IAAI,GAAG;oBAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC5B,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;YACtB,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,wBAAwB,CAAC,QAAgB;QAC9C,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,WAAW,CAC1C,eAAe,EACf,EAAE,CACF,CAAC;QACF,OAAO,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,uBAAuB,CAC5B,QAAkB;QAElB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;YACvB,MAAM,IAAI,uBAAc,CACvB,oEAAoE,CACpE,CAAC;SACF;QACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;QAEjD,MAAM,CACL,CAAC,cAAc,CAAC,EAChB,CAAC,GAAG,CAAC,EACL,CAAC,aAAa,CAAC,EACf,GAAG,MAAM,IAAI,CAAC,WAAW,CAAa,kBAAkB,EAAE;YAC1D;gBACC;oBACC,UAAU,EAAE,iBAAiB;oBAC7B,MAAM,EAAE,CAAC,QAAQ,CAAC;iBAClB;gBACD;oBACC,UAAU,EAAE,aAAa;oBACzB,MAAM,EAAE,CAAC,QAAQ,CAAC;iBAClB;gBACD;oBACC,UAAU,EAAE,YAAY;oBACxB,MAAM,EAAE,CAAC,QAAQ,CAAC;iBAClB;aACD;SACD,CAAC,CAAC;QACH,OAAO;YACN,OAAO,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG;YACpD,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;SAC1C,CAAC;IACH,CAAC;IAED,KAAK,CAAC,cAAc;QACnB,MAAM,EAAE,cAAc,EAAE,GAAG,gCAAgB,EAAE,CAAC;QAC9C,sBAAsB;QACtB,IAAI,CAAC,cAAc;YAAE,OAAO;QAE5B,IAAI;YACH,MAAM,IAAI,CAAC,WAAW,CAAW,eAAe,EAAE,EAAE,CAAC,CAAC;SACtD;QAAC,OAAO,CAAC,EAAE;YACX,MAAM,IAAI,uBAAc,CACvB,+BAA+B,cAAc,EAAE,CAC/C,CAAC;SACF;IACF,CAAC;IAED,KAAK,CAAC,MAAM,CACX,IAAc,EACd,QAAkB,EAClB,YAA0B;QAE1B,MAAM,EAAE,SAAS,EAAE,sBAAsB,EAAE,GAAG,gCAAgB,EAAE,CAAC;QACjE,MAAM,EAAE,SAAS,GAAG,sBAAsB,EAAE,GAAG,YAAY,CAAC;QAE5D,IAAI,MAAM,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YACvD,OAAO,2BAAe,CAAC,cAAc,CAAC;SACtC;QAED,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,IAAI,CAAC,uBAAuB,CACjE,QAAQ,CACR,CAAC;QAEF,IAAI,CAAC,UAAU;YAAE,OAAO,2BAAe,CAAC,oBAAoB,CAAC;QAE7D,MAAM,eAAe,GAAG,cAAO,CAC9B,SAAS,EACT,GAAG,IAAI,CAAC,IAAI,QAAQ,IAAI,CAAC,GAAG,EAAE,UAAU,CACxC,CAAC;QACF,MAAM,wBAAwB,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;QAE/D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAC3B,IAAI;gBACH,MAAM,IAAI,CAAC,WAAW,CAAO,YAAY,EAAE;oBAC1C,EAAE;oBACF,eAAe;oBACf,oBAAoB,OAAO,GAAG;oBAC9B,4BAA4B;oBAC5B,wBAAwB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE;iBACvD,CAAC,CAAC;gBACH,MAAM;aACN;YAAC,OAAO,CAAC,EAAE;gBACX,MAAM,YAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;aAClC;SACD;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAC3B,IAAI,MAAM,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;gBACvD,UAAU,CAAC,GAAG,EAAE,CAAC,aAAE,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC,CAAC;gBACnD,OAAO,2BAAe,CAAC,OAAO,CAAC;aAC/B;YACD,MAAM,YAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SACjC;QACD,UAAU,CAAC,GAAG,EAAE,CAAC,aAAE,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC,CAAC;QACnD,OAAO,2BAAe,CAAC,OAAO,CAAC;IAChC,CAAC;CACD;AAvJD,2BAuJC"}
|
@@ -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"}
|
package/dist/src/cmd.js
DELETED
@@ -1,136 +0,0 @@
|
|
1
|
-
#!/usr/bin/env node
|
2
|
-
"use strict";
|
3
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
4
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
5
|
-
};
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
7
|
-
const chalk_1 = __importDefault(require("chalk"));
|
8
|
-
const commander_1 = require("commander");
|
9
|
-
const package_json_1 = __importDefault(require("../package.json"));
|
10
|
-
const configuration_1 = require("./configuration");
|
11
|
-
const constants_1 = require("./constants");
|
12
|
-
const db_1 = require("./db");
|
13
|
-
const errors_1 = require("./errors");
|
14
|
-
const logger_1 = require("./logger");
|
15
|
-
const pipeline_1 = require("./pipeline");
|
16
|
-
const pushNotifier_1 = require("./pushNotifier");
|
17
|
-
const runtimeConfig_1 = require("./runtimeConfig");
|
18
|
-
const server_1 = require("./server");
|
19
|
-
const util_1 = require("util");
|
20
|
-
require("./signalHandlers");
|
21
|
-
const startup_1 = require("./startup");
|
22
|
-
function fallback(...args) {
|
23
|
-
for (const arg of args) {
|
24
|
-
if (arg !== undefined)
|
25
|
-
return arg;
|
26
|
-
}
|
27
|
-
return undefined;
|
28
|
-
}
|
29
|
-
function processOptions(options) {
|
30
|
-
options.trackers =
|
31
|
-
options.trackers && options.trackers.split(",").filter((e) => e !== "");
|
32
|
-
return options;
|
33
|
-
}
|
34
|
-
async function run() {
|
35
|
-
const fileConfig = configuration_1.getFileConfig();
|
36
|
-
function createCommandWithSharedOptions(name, description) {
|
37
|
-
return commander_1.program
|
38
|
-
.command(name)
|
39
|
-
.description(description)
|
40
|
-
.requiredOption("-u, --jackett-server-url <url>", "Your Jackett server url", fileConfig.jackettServerUrl)
|
41
|
-
.requiredOption("-k, --jackett-api-key <key>", "Your Jackett API key", fileConfig.jackettApiKey)
|
42
|
-
.requiredOption("-t, --trackers <tracker1>,<tracker2>", "Comma-separated list of Jackett tracker ids to search (Tracker ids can be found in their Torznab feed paths)", fallback(fileConfig.trackers && fileConfig.trackers.join(","), ""))
|
43
|
-
.requiredOption("-i, --torrent-dir <dir>", "Directory with torrent files", fileConfig.torrentDir)
|
44
|
-
.requiredOption("-s, --output-dir <dir>", "Directory to save results in", fileConfig.outputDir)
|
45
|
-
.requiredOption("-a, --search-all", "Search for all torrents regardless of their contents", fallback(fileConfig.searchAll, false))
|
46
|
-
.option("-x, --exclude-older <cutoff>", "Exclude torrents first seen more than n minutes ago. Bypasses the -a flag.", (n) => parseInt(n), fileConfig.excludeOlder)
|
47
|
-
.option("-r, --exclude-recent-search <cutoff>", "Exclude torrents which have been searched more recently than n minutes ago. Bypasses the -a flag.", (n) => parseInt(n), fileConfig.excludeRecentSearch)
|
48
|
-
.requiredOption("-v, --verbose", "Log verbose output", false)
|
49
|
-
.addOption(new commander_1.Option("-A, --action <action>", "If set to 'inject', cross-seed will attempt to add the found torrents to your torrent client.")
|
50
|
-
.default(fallback(fileConfig.action, constants_1.Action.SAVE))
|
51
|
-
.choices(Object.values(constants_1.Action))
|
52
|
-
.makeOptionMandatory())
|
53
|
-
.option("--rtorrent-rpc-url <url>", "The url of your rtorrent XMLRPC interface. Requires '-A inject'. See the docs for more information.", fileConfig.rtorrentRpcUrl)
|
54
|
-
.option("--qbittorrent-url <url>", "The url of your qBittorrent webui. Requires '-A inject'. See the docs for more information.", fileConfig.qbittorrentUrl)
|
55
|
-
.option("--notification-webhook-url <url>", "cross-seed will send POST requests to this url with a JSON payload of { title, body }", fileConfig.notificationWebhookUrl);
|
56
|
-
}
|
57
|
-
commander_1.program.name(package_json_1.default.name);
|
58
|
-
commander_1.program.description(chalk_1.default.yellow.bold("cross-seed"));
|
59
|
-
commander_1.program.version(package_json_1.default.version, "-V, --version", "output the current version");
|
60
|
-
commander_1.program
|
61
|
-
.command("gen-config")
|
62
|
-
.description("Generate a config file")
|
63
|
-
.option("-d, --docker", "Generate the docker config instead of the normal one")
|
64
|
-
.action((options) => {
|
65
|
-
configuration_1.generateConfig(options);
|
66
|
-
});
|
67
|
-
commander_1.program
|
68
|
-
.command("clear-cache")
|
69
|
-
.description("Clear the cache of downloaded-and-rejected torrents")
|
70
|
-
.action(db_1.dropDatabase);
|
71
|
-
createCommandWithSharedOptions("daemon", "Start the cross-seed daemon").action(async (options) => {
|
72
|
-
try {
|
73
|
-
const runtimeConfig = processOptions(options);
|
74
|
-
runtimeConfig_1.setRuntimeConfig(runtimeConfig);
|
75
|
-
logger_1.initializeLogger();
|
76
|
-
pushNotifier_1.initializePushNotifier();
|
77
|
-
logger_1.logger.verbose({
|
78
|
-
label: logger_1.Label.CONFIGDUMP,
|
79
|
-
message: util_1.inspect(runtimeConfig),
|
80
|
-
});
|
81
|
-
if (process.env.DOCKER_ENV === "true") {
|
82
|
-
configuration_1.generateConfig({ docker: true });
|
83
|
-
}
|
84
|
-
await startup_1.doStartupValidation();
|
85
|
-
await server_1.serve();
|
86
|
-
}
|
87
|
-
catch (e) {
|
88
|
-
if (e instanceof errors_1.CrossSeedError) {
|
89
|
-
e.print();
|
90
|
-
process.exitCode = 1;
|
91
|
-
return;
|
92
|
-
}
|
93
|
-
throw e;
|
94
|
-
}
|
95
|
-
});
|
96
|
-
commander_1.program
|
97
|
-
.command("test-notification")
|
98
|
-
.description("Send a test notification")
|
99
|
-
.requiredOption("--notification-webhook-url <url>", "cross-seed will send POST requests to this url with a JSON payload of { title, body }", fileConfig.notificationWebhookUrl)
|
100
|
-
.action((options) => {
|
101
|
-
const runtimeConfig = processOptions(options);
|
102
|
-
runtimeConfig_1.setRuntimeConfig(runtimeConfig);
|
103
|
-
logger_1.initializeLogger();
|
104
|
-
pushNotifier_1.initializePushNotifier();
|
105
|
-
pushNotifier_1.sendTestNotification();
|
106
|
-
});
|
107
|
-
createCommandWithSharedOptions("search", "Search for cross-seeds")
|
108
|
-
.requiredOption("-o, --offset <offset>", "Offset to start from", (n) => parseInt(n), 0)
|
109
|
-
.requiredOption("-d, --delay <delay>", "Pause duration (seconds) between searches", parseFloat, fallback(fileConfig.delay, 10))
|
110
|
-
.option("-e, --include-episodes", "Include single-episode torrents in the search", fallback(fileConfig.includeEpisodes, false))
|
111
|
-
.action(async (options) => {
|
112
|
-
try {
|
113
|
-
const runtimeConfig = processOptions(options);
|
114
|
-
runtimeConfig_1.setRuntimeConfig(runtimeConfig);
|
115
|
-
logger_1.initializeLogger();
|
116
|
-
pushNotifier_1.initializePushNotifier();
|
117
|
-
logger_1.logger.verbose({
|
118
|
-
label: logger_1.Label.CONFIGDUMP,
|
119
|
-
message: util_1.inspect(runtimeConfig),
|
120
|
-
});
|
121
|
-
await startup_1.doStartupValidation();
|
122
|
-
await pipeline_1.main();
|
123
|
-
}
|
124
|
-
catch (e) {
|
125
|
-
if (e instanceof errors_1.CrossSeedError) {
|
126
|
-
e.print();
|
127
|
-
process.exitCode = 1;
|
128
|
-
return;
|
129
|
-
}
|
130
|
-
throw e;
|
131
|
-
}
|
132
|
-
});
|
133
|
-
await commander_1.program.parseAsync();
|
134
|
-
}
|
135
|
-
run();
|
136
|
-
//# sourceMappingURL=cmd.js.map
|
package/dist/src/cmd.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"cmd.js","sourceRoot":"","sources":["../../src/cmd.ts"],"names":[],"mappings":"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"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"config.template.docker.js","sourceRoot":"","sources":["../../src/config.template.docker.js"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,oEAAoE;AACpE,4EAA4E;AAC5E,wBAAwB;AAExB,MAAM,CAAC,OAAO,GAAG;IAChB,gBAAgB,EAAE,6BAA6B;IAC/C,aAAa,EAAE,2BAA2B;IAE1C,4EAA4E;IAC5E,4DAA4D;IAC5D,KAAK,EAAE,EAAE;IAET,qBAAqB;IACrB,gDAAgD;IAChD,uDAAuD;IACvD,QAAQ,EAAE,CAAC,MAAM,EAAE,eAAe,CAAC;IAEnC,sCAAsC;IACtC,+CAA+C;IAC/C,2CAA2C;IAC3C,8CAA8C;IAC9C,gCAAgC;IAChC,2DAA2D;IAC3D,UAAU,EAAE,WAAW;IAEvB,gEAAgE;IAChE,gCAAgC;IAChC,2DAA2D;IAC3D,SAAS,EAAE,cAAc;IAEzB,gDAAgD;IAChD,eAAe,EAAE,KAAK;IAEtB,wDAAwD;IACxD,yCAAyC;IACzC,SAAS,EAAE,KAAK;IAEhB,uDAAuD;IACvD,YAAY,EAAE,SAAS;IAEvB,4CAA4C;IAC5C,oCAAoC;IACpC,mBAAmB,EAAE,SAAS;IAE9B,oCAAoC;IACpC,6DAA6D;IAC7D,MAAM,EAAE,MAAM;IAEd,6CAA6C;IAC7C,uCAAuC;IACvC,wEAAwE;IACxE,cAAc,EAAE,SAAS;IAEzB,qCAAqC;IACrC,uCAAuC;IACvC,4DAA4D;IAC5D,4CAA4C;IAC5C,cAAc,EAAE,SAAS;IAEzB,iDAAiD;IACjD,0CAA0C;IAC1C,2CAA2C;IAC3C,sBAAsB,EAAE,SAAS;CACjC,CAAC"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"config.template.js","sourceRoot":"","sources":["../../src/config.template.js"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,wBAAwB;AAExB,MAAM,CAAC,OAAO,GAAG;IAChB,aAAa,EAAE,CAAC;IAEhB,gBAAgB,EAAE,+BAA+B;IACjD,aAAa,EAAE,2BAA2B;IAE1C,4EAA4E;IAC5E,4DAA4D;IAC5D,KAAK,EAAE,EAAE;IAET,qBAAqB;IACrB,gDAAgD;IAChD,uDAAuD;IACvD,QAAQ,EAAE,CAAC,MAAM,EAAE,eAAe,CAAC;IAEnC,sCAAsC;IACtC,+CAA+C;IAC/C,2CAA2C;IAC3C,8CAA8C;IAC9C,UAAU,EAAE,2BAA2B;IAEvC,gEAAgE;IAChE,SAAS,EAAE,GAAG;IAEd,gDAAgD;IAChD,eAAe,EAAE,KAAK;IAEtB,wDAAwD;IACxD,yCAAyC;IACzC,SAAS,EAAE,KAAK;IAEhB,uDAAuD;IACvD,YAAY,EAAE,SAAS;IAEvB,4CAA4C;IAC5C,oCAAoC;IACpC,mBAAmB,EAAE,SAAS;IAE9B,oCAAoC;IACpC,6DAA6D;IAC7D,MAAM,EAAE,MAAM;IAEd,6CAA6C;IAC7C,uCAAuC;IACvC,wEAAwE;IACxE,cAAc,EAAE,SAAS;IAEzB,qCAAqC;IACrC,uCAAuC;IACvC,4DAA4D;IAC5D,4CAA4C;IAC5C,cAAc,EAAE,SAAS;IAEzB,iDAAiD;IACjD,0CAA0C;IAC1C,2CAA2C;IAC3C,sBAAsB,EAAE,SAAS;CACjC,CAAC"}
|
@@ -1,66 +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.getFileConfig = exports.generateConfig = exports.createAppDir = exports.appDir = void 0;
|
7
|
-
const chalk_1 = __importDefault(require("chalk"));
|
8
|
-
const fs_1 = __importDefault(require("fs"));
|
9
|
-
const path_1 = __importDefault(require("path"));
|
10
|
-
const package_json_1 = __importDefault(require("../package.json"));
|
11
|
-
const config_template_1 = __importDefault(require("./config.template"));
|
12
|
-
const constants_1 = require("./constants");
|
13
|
-
function appDir() {
|
14
|
-
return (process.env.CONFIG_DIR ||
|
15
|
-
(process.platform === "win32"
|
16
|
-
? path_1.default.resolve(process.env.LOCALAPPDATA, package_json_1.default.name)
|
17
|
-
: path_1.default.resolve(process.env.HOME, `.${package_json_1.default.name}`)));
|
18
|
-
}
|
19
|
-
exports.appDir = appDir;
|
20
|
-
function createAppDir() {
|
21
|
-
fs_1.default.mkdirSync(path_1.default.join(appDir(), "torrent_cache"), { recursive: true });
|
22
|
-
fs_1.default.mkdirSync(path_1.default.join(appDir(), "logs"), { recursive: true });
|
23
|
-
}
|
24
|
-
exports.createAppDir = createAppDir;
|
25
|
-
function generateConfig({ force = false, docker = false, }) {
|
26
|
-
createAppDir();
|
27
|
-
const dest = path_1.default.join(appDir(), "config.js");
|
28
|
-
const templatePath = path_1.default.join(__dirname, `config.template${docker ? ".docker" : ""}.js`);
|
29
|
-
if (!force && fs_1.default.existsSync(dest)) {
|
30
|
-
console.log("Configuration file already exists.");
|
31
|
-
return;
|
32
|
-
}
|
33
|
-
fs_1.default.copyFileSync(templatePath, dest);
|
34
|
-
console.log("Configuration file created at", chalk_1.default.yellow.bold(dest));
|
35
|
-
}
|
36
|
-
exports.generateConfig = generateConfig;
|
37
|
-
function printUpdateInstructions(missingKeys) {
|
38
|
-
const configPath = path_1.default.join(appDir(), "config.js");
|
39
|
-
console.error(chalk_1.default.yellow `
|
40
|
-
Error: Your configuration file is out of date.
|
41
|
-
Missing options:\n\t${missingKeys.join("\n\t")}
|
42
|
-
Please update at ${configPath}.
|
43
|
-
When you are done, set the configVersion to ${config_template_1.default.configVersion}.
|
44
|
-
It may help to read the template, at ${constants_1.CONFIG_TEMPLATE_URL}
|
45
|
-
`);
|
46
|
-
}
|
47
|
-
function getFileConfig() {
|
48
|
-
const configPath = path_1.default.join(appDir(), "config.js");
|
49
|
-
try {
|
50
|
-
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
51
|
-
const fileConfig = require(configPath);
|
52
|
-
const { configVersion = 0 } = fileConfig;
|
53
|
-
if (configVersion < configVersion) {
|
54
|
-
const missingKeys = Object.keys(config_template_1.default).filter((k) => !(k in fileConfig));
|
55
|
-
printUpdateInstructions(missingKeys);
|
56
|
-
}
|
57
|
-
return fileConfig;
|
58
|
-
}
|
59
|
-
catch (e) {
|
60
|
-
if (e.code !== "MODULE_NOT_FOUND")
|
61
|
-
throw e;
|
62
|
-
return {};
|
63
|
-
}
|
64
|
-
}
|
65
|
-
exports.getFileConfig = getFileConfig;
|
66
|
-
//# sourceMappingURL=configuration.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"configuration.js","sourceRoot":"","sources":["../../src/configuration.ts"],"names":[],"mappings":"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"}
|
package/dist/src/constants.js
DELETED
@@ -1,39 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.PermanentDecisions = exports.Decision = exports.InjectionResult = exports.Action = exports.TORRENT_CACHE_FOLDER = exports.INDEXED_TORRENTS = exports.DECISIONS = exports.SEARCHEES = exports.CONFIG_TEMPLATE_URL = exports.EXTENSIONS = exports.MOVIE_REGEX = exports.SEASON_REGEX = exports.EP_REGEX = void 0;
|
4
|
-
exports.EP_REGEX = /^(?<title>.+)[. ](?<season>S\d+)(?<episode>E\d+)/i;
|
5
|
-
exports.SEASON_REGEX = /^(?<title>.+)[. ](?<season>S\d+)(?:\s?-\s?(?<seasonmax>S?\d+))?(?!E\d+)/i;
|
6
|
-
exports.MOVIE_REGEX = /^(?<title>.+)[. ][[(]?(?<year>\d{4})[)\]]?(?![pi])/i;
|
7
|
-
exports.EXTENSIONS = ["mkv", "mp4", "avi"];
|
8
|
-
exports.CONFIG_TEMPLATE_URL = "https://github.com/mmgoodnow/cross-seed/blob/master/src/config.template.js";
|
9
|
-
exports.SEARCHEES = "searchees";
|
10
|
-
exports.DECISIONS = "decisions";
|
11
|
-
exports.INDEXED_TORRENTS = "indexedTorrents";
|
12
|
-
exports.TORRENT_CACHE_FOLDER = "torrent_cache";
|
13
|
-
var Action;
|
14
|
-
(function (Action) {
|
15
|
-
Action["SAVE"] = "save";
|
16
|
-
Action["INJECT"] = "inject";
|
17
|
-
})(Action = exports.Action || (exports.Action = {}));
|
18
|
-
var InjectionResult;
|
19
|
-
(function (InjectionResult) {
|
20
|
-
InjectionResult[InjectionResult["SUCCESS"] = 0] = "SUCCESS";
|
21
|
-
InjectionResult[InjectionResult["FAILURE"] = 1] = "FAILURE";
|
22
|
-
InjectionResult[InjectionResult["ALREADY_EXISTS"] = 2] = "ALREADY_EXISTS";
|
23
|
-
InjectionResult[InjectionResult["TORRENT_NOT_COMPLETE"] = 3] = "TORRENT_NOT_COMPLETE";
|
24
|
-
})(InjectionResult = exports.InjectionResult || (exports.InjectionResult = {}));
|
25
|
-
var Decision;
|
26
|
-
(function (Decision) {
|
27
|
-
Decision["MATCH"] = "MATCH";
|
28
|
-
Decision["SIZE_MISMATCH"] = "SIZE_MISMATCH";
|
29
|
-
Decision["NO_DOWNLOAD_LINK"] = "NO_DOWNLOAD_LINK";
|
30
|
-
Decision["DOWNLOAD_FAILED"] = "DOWNLOAD_FAILED";
|
31
|
-
Decision["INFO_HASH_ALREADY_EXISTS"] = "INFO_HASH_ALREADY_EXISTS";
|
32
|
-
Decision["FILE_TREE_MISMATCH"] = "FILE_TREE_MISMATCH";
|
33
|
-
})(Decision = exports.Decision || (exports.Decision = {}));
|
34
|
-
exports.PermanentDecisions = [
|
35
|
-
Decision.SIZE_MISMATCH,
|
36
|
-
Decision.NO_DOWNLOAD_LINK,
|
37
|
-
Decision.FILE_TREE_MISMATCH,
|
38
|
-
];
|
39
|
-
//# sourceMappingURL=constants.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,QAAQ,GAAG,mDAAmD,CAAC;AAC/D,QAAA,YAAY,GAAG,0EAA0E,CAAC;AAC1F,QAAA,WAAW,GAAG,qDAAqD,CAAC;AAEpE,QAAA,UAAU,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAEnC,QAAA,mBAAmB,GAC/B,4EAA4E,CAAC;AAEjE,QAAA,SAAS,GAAG,WAAW,CAAC;AACxB,QAAA,SAAS,GAAG,WAAW,CAAC;AACxB,QAAA,gBAAgB,GAAG,iBAAiB,CAAC;AAErC,QAAA,oBAAoB,GAAG,eAAe,CAAC;AAEpD,IAAY,MAGX;AAHD,WAAY,MAAM;IACjB,uBAAa,CAAA;IACb,2BAAiB,CAAA;AAClB,CAAC,EAHW,MAAM,GAAN,cAAM,KAAN,cAAM,QAGjB;AAED,IAAY,eAKX;AALD,WAAY,eAAe;IAC1B,2DAAO,CAAA;IACP,2DAAO,CAAA;IACP,yEAAc,CAAA;IACd,qFAAoB,CAAA;AACrB,CAAC,EALW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAK1B;AAED,IAAY,QAOX;AAPD,WAAY,QAAQ;IACnB,2BAAe,CAAA;IACf,2CAA+B,CAAA;IAC/B,iDAAqC,CAAA;IACrC,+CAAmC,CAAA;IACnC,iEAAqD,CAAA;IACrD,qDAAyC,CAAA;AAC1C,CAAC,EAPW,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAOnB;AAEY,QAAA,kBAAkB,GAAe;IAC7C,QAAQ,CAAC,aAAa;IACtB,QAAQ,CAAC,gBAAgB;IACzB,QAAQ,CAAC,kBAAkB;CAC3B,CAAC"}
|
package/dist/src/db.js
DELETED
@@ -1,34 +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.dropDatabase = void 0;
|
7
|
-
const rimraf_1 = require("rimraf");
|
8
|
-
const lowdb_1 = __importDefault(require("lowdb"));
|
9
|
-
const FileSync_1 = __importDefault(require("lowdb/adapters/FileSync"));
|
10
|
-
const path_1 = __importDefault(require("path"));
|
11
|
-
const configuration_1 = require("./configuration");
|
12
|
-
const constants_1 = require("./constants");
|
13
|
-
const fs_1 = require("fs");
|
14
|
-
configuration_1.createAppDir();
|
15
|
-
const db = lowdb_1.default(new FileSync_1.default(path_1.default.join(configuration_1.appDir(), "cache.json")));
|
16
|
-
const emptyDatabase = {
|
17
|
-
[constants_1.SEARCHEES]: {},
|
18
|
-
[constants_1.DECISIONS]: {},
|
19
|
-
[constants_1.INDEXED_TORRENTS]: [],
|
20
|
-
dbVersion: 3,
|
21
|
-
};
|
22
|
-
const dbVersion = db.get("dbVersion").value();
|
23
|
-
if (!dbVersion || dbVersion < emptyDatabase.dbVersion) {
|
24
|
-
db.setState(emptyDatabase);
|
25
|
-
}
|
26
|
-
db.defaults(emptyDatabase).write();
|
27
|
-
function dropDatabase() {
|
28
|
-
db.setState(emptyDatabase).write();
|
29
|
-
fs_1.unlinkSync(path_1.default.join(configuration_1.appDir(), "cache.json"));
|
30
|
-
rimraf_1.sync(path_1.default.join(configuration_1.appDir(), "torrent_cache"));
|
31
|
-
}
|
32
|
-
exports.dropDatabase = dropDatabase;
|
33
|
-
exports.default = db;
|
34
|
-
//# sourceMappingURL=db.js.map
|
package/dist/src/db.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/db.ts"],"names":[],"mappings":";;;;;;AAAA,mCAA4C;AAC5C,kDAA0B;AAC1B,uEAA+C;AAC/C,gDAAwB;AACxB,mDAAuD;AACvD,2CAA+E;AAC/E,2BAAgC;AAEhC,4BAAY,EAAE,CAAC;AA4Bf,MAAM,EAAE,GAAG,eAAK,CAAC,IAAI,kBAAQ,CAAS,cAAI,CAAC,IAAI,CAAC,sBAAM,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;AAE1E,MAAM,aAAa,GAAG;IACrB,CAAC,qBAAS,CAAC,EAAE,EAAE;IACf,CAAC,qBAAS,CAAC,EAAE,EAAE;IACf,CAAC,4BAAgB,CAAC,EAAE,EAAE;IACtB,SAAS,EAAE,CAAC;CACZ,CAAC;AAEF,MAAM,SAAS,GAAG,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,CAAC;AAE9C,IAAI,CAAC,SAAS,IAAI,SAAS,GAAG,aAAa,CAAC,SAAS,EAAE;IACtD,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;CAC3B;AAED,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;AAEnC,SAAgB,YAAY;IAC3B,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;IACnC,eAAU,CAAC,cAAI,CAAC,IAAI,CAAC,sBAAM,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;IAC9C,aAAU,CAAC,cAAI,CAAC,IAAI,CAAC,sBAAM,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC;AAClD,CAAC;AAJD,oCAIC;AAED,kBAAe,EAAE,CAAC"}
|
package/dist/src/decide.js
DELETED
@@ -1,140 +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.assessResult = void 0;
|
7
|
-
const fs_1 = require("fs");
|
8
|
-
const parse_torrent_1 = __importDefault(require("parse-torrent"));
|
9
|
-
const path_1 = __importDefault(require("path"));
|
10
|
-
const configuration_1 = require("./configuration");
|
11
|
-
const constants_1 = require("./constants");
|
12
|
-
const db_1 = __importDefault(require("./db"));
|
13
|
-
const logger_1 = require("./logger");
|
14
|
-
const torrent_1 = require("./torrent");
|
15
|
-
const createReasonLogger = (Title, tracker, name) => (decision, cached) => {
|
16
|
-
function logReason(reason) {
|
17
|
-
logger_1.logger.verbose({
|
18
|
-
label: logger_1.Label.DECIDE,
|
19
|
-
message: `${name} - no match for ${tracker} torrent ${Title} - ${reason}`,
|
20
|
-
});
|
21
|
-
}
|
22
|
-
let reason;
|
23
|
-
switch (decision) {
|
24
|
-
case constants_1.Decision.MATCH:
|
25
|
-
return;
|
26
|
-
case constants_1.Decision.SIZE_MISMATCH:
|
27
|
-
reason = "its size does not match";
|
28
|
-
break;
|
29
|
-
case constants_1.Decision.NO_DOWNLOAD_LINK:
|
30
|
-
reason = "it doesn't have a download link";
|
31
|
-
break;
|
32
|
-
case constants_1.Decision.DOWNLOAD_FAILED:
|
33
|
-
reason = "the torrent file failed to download";
|
34
|
-
break;
|
35
|
-
case constants_1.Decision.INFO_HASH_ALREADY_EXISTS:
|
36
|
-
reason = "the info hash matches a torrent you already have";
|
37
|
-
break;
|
38
|
-
case constants_1.Decision.FILE_TREE_MISMATCH:
|
39
|
-
reason = "it has a different file tree";
|
40
|
-
break;
|
41
|
-
}
|
42
|
-
if (cached)
|
43
|
-
logReason(`${reason} (cached)`);
|
44
|
-
else
|
45
|
-
logReason(reason);
|
46
|
-
};
|
47
|
-
function compareFileTrees(candidate, searchee) {
|
48
|
-
const cmp = (elOfA, elOfB) => {
|
49
|
-
const lengthsAreEqual = elOfB.length === elOfA.length;
|
50
|
-
const pathsAreEqual = elOfB.path === elOfA.path;
|
51
|
-
return lengthsAreEqual && pathsAreEqual;
|
52
|
-
};
|
53
|
-
return candidate.files.every((elOfA) => searchee.files.some((elOfB) => cmp(elOfA, elOfB)));
|
54
|
-
}
|
55
|
-
function sizeDoesMatch(resultSize, searchee) {
|
56
|
-
const { length } = searchee;
|
57
|
-
const lowerBound = length - 0.02 * length;
|
58
|
-
const upperBound = length + 0.02 * length;
|
59
|
-
return resultSize >= lowerBound && resultSize <= upperBound;
|
60
|
-
}
|
61
|
-
async function assessResultHelper({ Link, Size }, searchee, hashesToExclude) {
|
62
|
-
if (!sizeDoesMatch(Size, searchee)) {
|
63
|
-
return { decision: constants_1.Decision.SIZE_MISMATCH };
|
64
|
-
}
|
65
|
-
if (!Link)
|
66
|
-
return { decision: constants_1.Decision.NO_DOWNLOAD_LINK };
|
67
|
-
const info = await torrent_1.parseTorrentFromURL(Link);
|
68
|
-
if (!info)
|
69
|
-
return { decision: constants_1.Decision.DOWNLOAD_FAILED };
|
70
|
-
if (hashesToExclude.includes(info.infoHash)) {
|
71
|
-
return { decision: constants_1.Decision.INFO_HASH_ALREADY_EXISTS };
|
72
|
-
}
|
73
|
-
if (!compareFileTrees(info, searchee)) {
|
74
|
-
return { decision: constants_1.Decision.FILE_TREE_MISMATCH };
|
75
|
-
}
|
76
|
-
return { decision: constants_1.Decision.MATCH, info };
|
77
|
-
}
|
78
|
-
function existsInCache(infoHash) {
|
79
|
-
return fs_1.existsSync(path_1.default.join(configuration_1.appDir(), constants_1.TORRENT_CACHE_FOLDER, `${infoHash}.cached.torrent`));
|
80
|
-
}
|
81
|
-
async function getCachedTorrentFile(infoHash) {
|
82
|
-
return torrent_1.parseTorrentFromFilename(path_1.default.join(configuration_1.appDir(), constants_1.TORRENT_CACHE_FOLDER, `${infoHash}.cached.torrent`));
|
83
|
-
}
|
84
|
-
function cacheTorrentFile(meta) {
|
85
|
-
fs_1.writeFileSync(path_1.default.join(configuration_1.appDir(), constants_1.TORRENT_CACHE_FOLDER, `${meta.infoHash}.cached.torrent`), parse_torrent_1.default.toTorrentFile(meta));
|
86
|
-
}
|
87
|
-
async function assessResultCaching(result, searchee, infoHashesToExclude) {
|
88
|
-
const { Guid, Title, TrackerId: tracker } = result;
|
89
|
-
const logReason = createReasonLogger(Title, tracker, searchee.name);
|
90
|
-
const cacheEntry = db_1.default
|
91
|
-
.get([
|
92
|
-
constants_1.DECISIONS,
|
93
|
-
searchee.name,
|
94
|
-
Guid,
|
95
|
-
])
|
96
|
-
.clone()
|
97
|
-
.value();
|
98
|
-
// handles path creation
|
99
|
-
db_1.default.get(constants_1.DECISIONS)
|
100
|
-
.defaultsDeep({
|
101
|
-
[searchee.name]: {
|
102
|
-
[Guid]: {
|
103
|
-
firstSeen: Date.now(),
|
104
|
-
},
|
105
|
-
},
|
106
|
-
})
|
107
|
-
.set([searchee.name, Guid, "lastSeen"], Date.now())
|
108
|
-
.value();
|
109
|
-
let assessment;
|
110
|
-
if (cacheEntry && cacheEntry.decision !== constants_1.Decision.MATCH) {
|
111
|
-
assessment = { decision: cacheEntry.decision };
|
112
|
-
logReason(cacheEntry.decision, true);
|
113
|
-
}
|
114
|
-
else if (cacheEntry && existsInCache(cacheEntry.infoHash)) {
|
115
|
-
if (infoHashesToExclude.includes(cacheEntry.infoHash)) {
|
116
|
-
// has been added since the last run
|
117
|
-
assessment = { decision: constants_1.Decision.INFO_HASH_ALREADY_EXISTS };
|
118
|
-
db_1.default.set([constants_1.DECISIONS, searchee.name, Guid, "decision"], assessment.decision).value();
|
119
|
-
}
|
120
|
-
else {
|
121
|
-
assessment = {
|
122
|
-
decision: cacheEntry.decision,
|
123
|
-
info: await getCachedTorrentFile(cacheEntry.infoHash),
|
124
|
-
};
|
125
|
-
}
|
126
|
-
}
|
127
|
-
else {
|
128
|
-
assessment = await assessResultHelper(result, searchee, infoHashesToExclude);
|
129
|
-
db_1.default.set([constants_1.DECISIONS, searchee.name, Guid, "decision"], assessment.decision).value();
|
130
|
-
if (assessment.decision === constants_1.Decision.MATCH) {
|
131
|
-
db_1.default.set([constants_1.DECISIONS, searchee.name, Guid, "infoHash"], assessment.info.infoHash).value();
|
132
|
-
cacheTorrentFile(assessment.info);
|
133
|
-
}
|
134
|
-
logReason(assessment.decision, false);
|
135
|
-
}
|
136
|
-
db_1.default.write();
|
137
|
-
return assessment;
|
138
|
-
}
|
139
|
-
exports.assessResult = assessResultCaching;
|
140
|
-
//# sourceMappingURL=decide.js.map
|
package/dist/src/decide.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"decide.js","sourceRoot":"","sources":["../../src/decide.ts"],"names":[],"mappings":"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"}
|
package/dist/src/errors.js
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.CrossSeedError = void 0;
|
4
|
-
const logger_1 = require("./logger");
|
5
|
-
class CrossSeedError extends Error {
|
6
|
-
constructor(message) {
|
7
|
-
super(message);
|
8
|
-
delete this.stack;
|
9
|
-
}
|
10
|
-
print() {
|
11
|
-
logger_1.logger.error(this.message);
|
12
|
-
}
|
13
|
-
}
|
14
|
-
exports.CrossSeedError = CrossSeedError;
|
15
|
-
//# sourceMappingURL=errors.js.map
|
package/dist/src/errors.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":";;;AAAA,qCAAkC;AAElC,MAAa,cAAe,SAAQ,KAAK;IACxC,YAAY,OAAe;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;IAED,KAAK;QACJ,eAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;CACD;AATD,wCASC"}
|
package/dist/src/jackett.js
DELETED
@@ -1,76 +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.makeJackettRequest = exports.validateJackettApi = void 0;
|
7
|
-
const querystring_1 = __importDefault(require("querystring"));
|
8
|
-
const simple_get_1 = __importDefault(require("simple-get"));
|
9
|
-
const constants_1 = require("./constants");
|
10
|
-
const errors_1 = require("./errors");
|
11
|
-
const logger_1 = require("./logger");
|
12
|
-
const runtimeConfig_1 = require("./runtimeConfig");
|
13
|
-
function reformatTitleForSearching(name) {
|
14
|
-
const seasonMatch = name.match(constants_1.SEASON_REGEX);
|
15
|
-
const movieMatch = name.match(constants_1.MOVIE_REGEX);
|
16
|
-
const episodeMatch = name.match(constants_1.EP_REGEX);
|
17
|
-
const fullMatch = episodeMatch
|
18
|
-
? episodeMatch[0]
|
19
|
-
: seasonMatch
|
20
|
-
? seasonMatch[0]
|
21
|
-
: movieMatch
|
22
|
-
? movieMatch[0]
|
23
|
-
: name;
|
24
|
-
return fullMatch
|
25
|
-
.replace(/[.()[\]]/g, " ")
|
26
|
-
.replace(/\s+/g, " ")
|
27
|
-
.trim();
|
28
|
-
}
|
29
|
-
function fullJackettUrl(jackettServerUrl, params) {
|
30
|
-
const jackettPath = `/api/v2.0/indexers/all/results`;
|
31
|
-
return `${jackettServerUrl}${jackettPath}?${querystring_1.default.encode(params)}`;
|
32
|
-
}
|
33
|
-
async function validateJackettApi() {
|
34
|
-
const { jackettServerUrl, jackettApiKey: apikey } = runtimeConfig_1.getRuntimeConfig();
|
35
|
-
if (/\/$/.test(jackettServerUrl)) {
|
36
|
-
logger_1.logger.warn("Warning: Jackett server url should not end with '/'");
|
37
|
-
}
|
38
|
-
// search for gibberish so the results will be empty
|
39
|
-
const gibberish = "bscdjpstabgdspjdasmomdsenqciadsnocdpsikncaodsnimcdqsanc";
|
40
|
-
try {
|
41
|
-
await makeJackettRequest(gibberish);
|
42
|
-
}
|
43
|
-
catch (e) {
|
44
|
-
const dummyUrl = fullJackettUrl(jackettServerUrl, { apikey });
|
45
|
-
throw new errors_1.CrossSeedError(`Could not reach Jackett at ${dummyUrl}`);
|
46
|
-
}
|
47
|
-
}
|
48
|
-
exports.validateJackettApi = validateJackettApi;
|
49
|
-
function makeJackettRequest(name, nonceOptions = runtimeConfig_1.EmptyNonceOptions) {
|
50
|
-
const { jackettApiKey, trackers: runtimeConfigTrackers, jackettServerUrl, } = runtimeConfig_1.getRuntimeConfig();
|
51
|
-
const { trackers = runtimeConfigTrackers } = nonceOptions;
|
52
|
-
const params = {
|
53
|
-
apikey: jackettApiKey,
|
54
|
-
Query: reformatTitleForSearching(name),
|
55
|
-
"Tracker[]": trackers,
|
56
|
-
};
|
57
|
-
const opts = {
|
58
|
-
method: "GET",
|
59
|
-
url: fullJackettUrl(jackettServerUrl, params),
|
60
|
-
json: true,
|
61
|
-
};
|
62
|
-
logger_1.logger.verbose({
|
63
|
-
label: logger_1.Label.JACKETT,
|
64
|
-
message: `making search with query "${params.Query}"`,
|
65
|
-
});
|
66
|
-
return new Promise((resolve, reject) => {
|
67
|
-
simple_get_1.default.concat(opts, (err, res, data) => {
|
68
|
-
if (err)
|
69
|
-
reject(err);
|
70
|
-
else
|
71
|
-
resolve(data);
|
72
|
-
});
|
73
|
-
});
|
74
|
-
}
|
75
|
-
exports.makeJackettRequest = makeJackettRequest;
|
76
|
-
//# sourceMappingURL=jackett.js.map
|
package/dist/src/jackett.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"jackett.js","sourceRoot":"","sources":["../../src/jackett.ts"],"names":[],"mappings":"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"}
|