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.
- package/dist/{src/clients → clients}/QBittorrent.js +31 -37
- package/dist/clients/QBittorrent.js.map +1 -0
- package/dist/{src/clients → clients}/RTorrent.js +42 -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/{src/cmd.js → cmd.js} +54 -57
- package/dist/cmd.js.map +1 -0
- package/dist/{src/config.template.js → config.template.cjs} +1 -2
- package/dist/config.template.cjs.map +1 -0
- package/dist/{src/config.template.docker.js → config.template.docker.cjs} +1 -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 +28 -0
- package/dist/db.js.map +1 -0
- package/dist/decide.js +132 -0
- package/dist/decide.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/{src/logger.js → logger.js} +22 -25
- 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 +49 -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 +21 -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.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 -143
- 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.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
@@ -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"}
|
package/dist/searchee.js
ADDED
@@ -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
|
-
|
2
|
-
|
3
|
-
|
4
|
-
};
|
5
|
-
|
6
|
-
|
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 =
|
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 =
|
60
|
-
const nonceOptions =
|
53
|
+
const criteria = pick(data, ["infoHash", "name"]);
|
54
|
+
const nonceOptions = pick(data, ["trackers", "outputDir"]);
|
61
55
|
if (!criteria) {
|
62
|
-
|
63
|
-
label:
|
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 =
|
63
|
+
const criteriaStr = inspect(criteria);
|
70
64
|
res.writeHead(204);
|
71
65
|
res.end();
|
72
|
-
|
66
|
+
logger.info({ label: Label.SERVER, message: `Received ${criteriaStr}` });
|
73
67
|
try {
|
74
68
|
let numFound = null;
|
75
69
|
if (criteria) {
|
76
|
-
numFound = await
|
70
|
+
numFound = await searchForLocalTorrentByCriteria(criteria, nonceOptions);
|
77
71
|
}
|
78
72
|
if (numFound === null) {
|
79
|
-
|
80
|
-
label:
|
73
|
+
logger.info({
|
74
|
+
label: Label.SERVER,
|
81
75
|
message: `Did not search for ${criteriaStr}`,
|
82
76
|
});
|
83
77
|
}
|
84
78
|
else {
|
85
|
-
|
86
|
-
label:
|
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
|
-
|
86
|
+
logger.error(e);
|
93
87
|
}
|
94
88
|
}
|
95
|
-
async function serve() {
|
96
|
-
const server =
|
89
|
+
export async function serve() {
|
90
|
+
const server = http.createServer(handleRequest);
|
97
91
|
server.listen(2468);
|
98
|
-
|
99
|
-
label:
|
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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"}
|
File without changes
|
@@ -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"}
|
package/dist/startup.js
ADDED
@@ -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"}
|
package/dist/torrent.js
ADDED
@@ -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": "
|
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
|
-
"
|
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/
|
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": "^
|
26
|
-
"commander": "^
|
27
|
-
"form-data": "^
|
28
|
-
"lodash": "^4.17.21",
|
29
|
-
"lowdb": "^
|
30
|
-
"node-fetch": "^
|
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": "^
|
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.
|
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": "^
|
43
|
-
"@typescript-eslint/parser": "^
|
44
|
-
"eslint": "^
|
45
|
-
"husky": "^
|
46
|
-
"lint-staged": "^
|
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.
|
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":";;;;;AAAA,0DAAiC;AACjC,4DAAuD;AACvD,kEAAuD;AACvD,8DAAsC;AACtC,4CAA+C;AAC/C,sCAA2C;AAC3C,sCAA0C;AAC1C,oDAAkE;AAIlE,MAAM,qBAAqB,GAAG;IAC7B,cAAc,EAAE,mCAAmC;CACnD,CAAC;AAEF,MAAqB,WAAW;IAI/B;QACC,MAAM,EAAE,cAAc,EAAE,GAAG,gCAAgB,EAAE,CAAC;QAC9C,IAAI;YACH,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,cAAc,SAAS,CAAC,CAAC;SAC/C;QAAC,OAAO,CAAC,EAAE;YACX,MAAM,IAAI,uBAAc,CAAC,yCAAyC,CAAC,CAAC;SACpE;IACF,CAAC;IAED,KAAK,CAAC,KAAK;QACV,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;QAE1D,IAAI,EAAE,CAAC;QACP,IAAI;YACH,EAAE,GAAG,qBAAW,CAAC,MAAM,CAAC;gBACvB,QAAQ,EAAE,kBAAkB,CAAC,QAAQ,CAAC;gBACtC,QAAQ,EAAE,kBAAkB,CAAC,QAAQ,CAAC;aACtC,CAAC,CAAC;SACH;QAAC,OAAO,CAAC,EAAE;YACX,MAAM,IAAI,uBAAc,CAAC,yCAAyC,CAAC,CAAC;SACpE;QAED,IAAI,QAAkB,CAAC;QACvB,IAAI;YACH,QAAQ,GAAG,MAAM,oBAAK,CAAC,GAAG,MAAM,GAAG,QAAQ,eAAe,EAAE,EAAE,CAAC,CAAC;SAChE;QAAC,OAAO,CAAC,EAAE;YACX,MAAM,IAAI,uBAAc,CAAC,6BAA6B,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;SACnE;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;YAC5B,MAAM,IAAI,uBAAc,CACvB,sCAAsC,QAAQ,CAAC,MAAM,EAAE,CACvD,CAAC;SACF;QAED,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC;QACzD,IAAI,WAAW,EAAE;YAChB,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SAC3C;aAAM;YACN,MAAM,IAAI,uBAAc,CACvB,wDAAwD,CACxD,CAAC;SACF;IACF,CAAC;IAED,KAAK,CAAC,cAAc;QACnB,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;IACxB,CAAC;IAEO,KAAK,CAAC,OAAO,CACpB,IAAY,EACZ,IAAc,EACd,UAAkC,EAAE,EACpC,OAAO,GAAG,CAAC;QAEX,eAAM,CAAC,OAAO,CAAC;YACd,KAAK,EAAE,cAAK,CAAC,WAAW;YACxB,OAAO,EAAE,qBAAqB,IAAI,cAAc,IAAI,CAAC,QAAQ,EAAE,EAAE;SACjE,CAAC,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;QACtC,MAAM,QAAQ,GAAG,MAAM,oBAAK,CAAC,GAAG,MAAM,GAAG,QAAQ,GAAG,IAAI,EAAE,EAAE;YAC3D,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,EAAE;YAC5C,IAAI;SACJ,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,OAAO,GAAG,CAAC,EAAE;YAC3C,eAAM,CAAC,OAAO,CAAC;gBACd,KAAK,EAAE,cAAK,CAAC,WAAW;gBACxB,OAAO,EAAE,sDAAsD;aAC/D,CAAC,CAAC;YACH,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;SACtD;QACD,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,SAAS;QACd,MAAM,IAAI,CAAC,OAAO,CACjB,sBAAsB,EACtB,iBAAiB,EACjB,qBAAqB,CACrB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,QAAgB;QACxC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CACtC,sBAAsB,EACtB,QAAQ,QAAQ,EAAE,EAClB,qBAAqB,CACrB,CAAC;QACF,IAAI;YACH,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YAC5C,OAAO,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,CAAC;SACpD;QAAC,OAAO,CAAC,EAAE;YACX,OAAO,KAAK,CAAC;SACb;IACF,CAAC;IAED,KAAK,CAAC,uBAAuB,CAC5B,QAAkB;QAElB,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CACtC,gBAAgB,EAChB,UAAU,QAAQ,CAAC,QAAQ,EAAE,EAC7B,qBAAqB,CACrB,CAAC;QACF,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CACjD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,QAAQ,CACnC,CAAC;QACF,IAAI,YAAY,KAAK,SAAS,EAAE;YAC/B,MAAM,IAAI,KAAK,CACd,0DAA0D,CAC1D,CAAC;SACF;QACD,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,YAAY,CAAC;QACvD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,KAAK,CAAC,EAAE,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,MAAM,CACX,UAAoB,EACpB,QAAkB,EAClB,YAA0B;QAE1B,IAAI,MAAM,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;YACvD,OAAO,2BAAe,CAAC,cAAc,CAAC;SACtC;QACD,MAAM,GAAG,GAAG,uBAAY,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACnD,IAAI;YACH,MAAM,EACL,SAAS,EACT,QAAQ,EACR,UAAU,GACV,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;YACjD,IAAI,CAAC,UAAU;gBAAE,OAAO,2BAAe,CAAC,oBAAoB,CAAC;YAC7D,MAAM,QAAQ,GAAG,IAAI,mBAAQ,EAAE,CAAC;YAChC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,EAAE;gBAChC,QAAQ,EAAE,GAAG,UAAU,CAAC,IAAI,qBAAqB;gBACjD,WAAW,EAAE,0BAA0B;aACvC,CAAC,CAAC;YACH,QAAQ,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;YACzC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YACvC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YACtC,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACpC,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;YAC9C,OAAO,2BAAe,CAAC,OAAO,CAAC;SAC/B;QAAC,OAAO,CAAC,EAAE;YACX,eAAM,CAAC,KAAK,CAAC;gBACZ,KAAK,EAAE,cAAK,CAAC,WAAW;gBACxB,OAAO,EAAE,qBAAqB,CAAC,CAAC,OAAO,EAAE;aACzC,CAAC,CAAC;YACH,OAAO,2BAAe,CAAC,OAAO,CAAC;SAC/B;IACF,CAAC;CACD;AA9JD,8BA8JC"}
|
@@ -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,+BAA+B;AAC/B,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,cAAO,CAAC,IAAI,CAAC,EAAE;SAChE,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,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAa,kBAAkB,EAAE;YACrE;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;QAEH,qBAAqB;QACrB,IAAI;YACH,MAAM,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,GAAG,MAAM,CAAC;YAC1D,OAAO;gBACN,OAAO,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG;gBACpD,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;aAC1C,CAAC;SACF;QAAC,OAAO,CAAC,EAAE;YACX,eAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAChB,eAAM,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;YACzD,eAAM,CAAC,KAAK,CAAC,cAAO,CAAC,MAAM,CAAC,CAAC,CAAC;SAC9B;IACF,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;AA5JD,2BA4JC"}
|
@@ -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.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"cmd.js","sourceRoot":"","sources":["../../src/cmd.ts"],"names":[],"mappings":"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"}
|