cross-seed 6.0.0-1 → 6.0.0-10
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/Result.js +17 -11
- package/dist/Result.js.map +1 -1
- package/dist/action.js +63 -39
- package/dist/action.js.map +1 -1
- package/dist/arr.js +191 -0
- package/dist/arr.js.map +1 -0
- package/dist/clients/Deluge.js +110 -59
- package/dist/clients/Deluge.js.map +1 -1
- package/dist/clients/QBittorrent.js +21 -18
- package/dist/clients/QBittorrent.js.map +1 -1
- package/dist/clients/RTorrent.js +3 -3
- package/dist/clients/RTorrent.js.map +1 -1
- package/dist/clients/TorrentClient.js.map +1 -1
- package/dist/clients/Transmission.js +3 -3
- package/dist/clients/Transmission.js.map +1 -1
- package/dist/cmd.js +9 -3
- package/dist/cmd.js.map +1 -1
- package/dist/config.template.cjs +43 -3
- package/dist/config.template.cjs.map +1 -1
- package/dist/configSchema.js +43 -27
- package/dist/configSchema.js.map +1 -1
- package/dist/configuration.js.map +1 -1
- package/dist/constants.js +64 -5
- package/dist/constants.js.map +1 -1
- package/dist/decide.js +128 -90
- package/dist/decide.js.map +1 -1
- package/dist/errors.js +5 -2
- package/dist/errors.js.map +1 -1
- package/dist/indexers.js +19 -0
- package/dist/indexers.js.map +1 -1
- package/dist/logger.js +15 -4
- package/dist/logger.js.map +1 -1
- package/dist/migrations/05-caps.js +16 -0
- package/dist/migrations/05-caps.js.map +1 -0
- package/dist/migrations/migrations.js +9 -1
- package/dist/migrations/migrations.js.map +1 -1
- package/dist/pipeline.js +22 -36
- package/dist/pipeline.js.map +1 -1
- package/dist/preFilter.js +14 -3
- package/dist/preFilter.js.map +1 -1
- package/dist/runtimeConfig.js.map +1 -1
- package/dist/searchee.js +7 -7
- package/dist/searchee.js.map +1 -1
- package/dist/startup.js +8 -0
- package/dist/startup.js.map +1 -1
- package/dist/torrent.js +18 -15
- package/dist/torrent.js.map +1 -1
- package/dist/torznab.js +189 -86
- package/dist/torznab.js.map +1 -1
- package/dist/utils.js +77 -20
- package/dist/utils.js.map +1 -1
- package/package.json +2 -1
package/dist/Result.js
CHANGED
@@ -12,16 +12,17 @@ class OkResult {
|
|
12
12
|
mapOk(mapper) {
|
13
13
|
return new OkResult(mapper(this.contents));
|
14
14
|
}
|
15
|
-
|
16
|
-
mapErr(mapper) {
|
15
|
+
mapErr() {
|
17
16
|
return this;
|
18
17
|
}
|
19
|
-
|
20
|
-
unwrapOrThrow(errToThrow) {
|
18
|
+
unwrap() {
|
21
19
|
return this.contents;
|
22
20
|
}
|
23
|
-
|
24
|
-
|
21
|
+
unwrapOrThrow() {
|
22
|
+
return this.contents;
|
23
|
+
}
|
24
|
+
orElse() {
|
25
|
+
return this.contents;
|
25
26
|
}
|
26
27
|
}
|
27
28
|
class ErrResult {
|
@@ -35,18 +36,20 @@ class ErrResult {
|
|
35
36
|
isErr() {
|
36
37
|
return true;
|
37
38
|
}
|
38
|
-
|
39
|
-
mapOk(mapper) {
|
39
|
+
mapOk() {
|
40
40
|
return this;
|
41
41
|
}
|
42
42
|
mapErr(mapper) {
|
43
43
|
return new ErrResult(mapper(this.contents));
|
44
44
|
}
|
45
|
+
unwrapErr() {
|
46
|
+
return this.contents;
|
47
|
+
}
|
45
48
|
unwrapOrThrow(errToThrow) {
|
46
|
-
throw errToThrow
|
49
|
+
throw errToThrow;
|
47
50
|
}
|
48
|
-
|
49
|
-
return
|
51
|
+
orElse(t) {
|
52
|
+
return t;
|
50
53
|
}
|
51
54
|
}
|
52
55
|
export function resultOf(value) {
|
@@ -55,4 +58,7 @@ export function resultOf(value) {
|
|
55
58
|
export function resultOfErr(value) {
|
56
59
|
return new ErrResult(value);
|
57
60
|
}
|
61
|
+
export function isOk(result) {
|
62
|
+
return result.isOk();
|
63
|
+
}
|
58
64
|
//# sourceMappingURL=Result.js.map
|
package/dist/Result.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Result.js","sourceRoot":"","sources":["../src/Result.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"Result.js","sourceRoot":"","sources":["../src/Result.ts"],"names":[],"mappings":"AAAA,MAAM,QAAQ;IACI,QAAQ,CAAI;IAE7B,YAAY,QAAW;QACtB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC1B,CAAC;IAED,IAAI;QACH,OAAO,IAAI,CAAC;IACb,CAAC;IAED,KAAK;QACJ,OAAO,KAAK,CAAC;IACd,CAAC;IAED,KAAK,CAAI,MAAmB;QAC3B,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM;QACL,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM;QACL,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IAED,aAAa;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IAED,MAAM;QACL,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;CACD;AAED,MAAM,SAAS;IACG,QAAQ,CAAI;IAE7B,YAAY,QAAW;QACtB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC1B,CAAC;IAED,IAAI;QACH,OAAO,KAAK,CAAC;IACd,CAAC;IAED,KAAK;QACJ,OAAO,IAAI,CAAC;IACb,CAAC;IAED,KAAK;QACJ,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,CAAI,MAAmB;QAC5B,OAAO,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,SAAS;QACR,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IAED,aAAa,CAAC,UAAiB;QAC9B,MAAM,UAAU,CAAC;IAClB,CAAC;IAED,MAAM,CAAI,CAAI;QACb,OAAO,CAAC,CAAC;IACV,CAAC;CACD;AAID,MAAM,UAAU,QAAQ,CAAO,KAAQ;IACtC,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,WAAW,CAAO,KAAQ;IACzC,OAAO,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,IAAI,CAAO,MAAoB;IAC9C,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;AACtB,CAAC"}
|
package/dist/action.js
CHANGED
@@ -2,38 +2,47 @@ import chalk from "chalk";
|
|
2
2
|
import { existsSync, linkSync, mkdirSync, statSync, symlinkSync } from "fs";
|
3
3
|
import { dirname, join, resolve } from "path";
|
4
4
|
import { getClient } from "./clients/TorrentClient.js";
|
5
|
-
import { Action, Decision, InjectionResult, LinkType, SaveResult, } from "./constants.js";
|
5
|
+
import { Action, Decision, InjectionResult, LinkType, SaveResult, SearcheeSource, } from "./constants.js";
|
6
6
|
import { logger } from "./logger.js";
|
7
7
|
import { resultOf, resultOfErr } from "./Result.js";
|
8
8
|
import { getRuntimeConfig } from "./runtimeConfig.js";
|
9
|
-
import {
|
9
|
+
import { createSearcheeFromPath } from "./searchee.js";
|
10
10
|
import { saveTorrentFile } from "./torrent.js";
|
11
|
-
import {
|
12
|
-
function
|
13
|
-
const
|
14
|
-
const
|
11
|
+
import { getLogString, getMediaType } from "./utils.js";
|
12
|
+
function logActionResult(result, newMeta, searchee, tracker, decision) {
|
13
|
+
const metaLog = getLogString(newMeta, chalk.green.bold);
|
14
|
+
const searcheeLog = getLogString(searchee, chalk.magenta.bold);
|
15
|
+
const source = searchee.infoHash
|
16
|
+
? `${SearcheeSource.TORRENT} (${searcheeLog})`
|
17
|
+
: searchee.path
|
18
|
+
? `${SearcheeSource.DATA} (${searcheeLog})`
|
19
|
+
: `${SearcheeSource.VIRTUAL} (${searcheeLog})`;
|
20
|
+
const foundBy = `Found ${metaLog} on ${chalk.bold(tracker)} by`;
|
15
21
|
switch (result) {
|
22
|
+
case SaveResult.SAVED:
|
23
|
+
logger.info(`${foundBy} ${chalk.green.bold(decision)} from ${source} - saved`);
|
24
|
+
break;
|
16
25
|
case InjectionResult.SUCCESS:
|
17
|
-
logger.info(
|
26
|
+
logger.info(`${foundBy} ${chalk.green.bold(decision)} from ${source} - injected`);
|
18
27
|
break;
|
19
28
|
case InjectionResult.ALREADY_EXISTS:
|
20
|
-
logger.info(
|
29
|
+
logger.info(`${foundBy} ${chalk.yellow(decision)} from ${source} - exists`);
|
21
30
|
break;
|
22
31
|
case InjectionResult.TORRENT_NOT_COMPLETE:
|
23
|
-
logger.warn(
|
32
|
+
logger.warn(`${foundBy} ${chalk.yellow(decision)} from ${source} - skipping incomplete torrent`);
|
24
33
|
break;
|
25
34
|
case InjectionResult.FAILURE:
|
26
35
|
default:
|
27
|
-
logger.error(
|
36
|
+
logger.error(`${foundBy} ${chalk.red(decision)} from ${source} - failed to inject, saving...`);
|
28
37
|
break;
|
29
38
|
}
|
30
39
|
}
|
31
40
|
/**
|
32
41
|
* @return the root of linked files.
|
33
42
|
*/
|
34
|
-
function linkExactTree(newMeta, destinationDir, sourceRoot) {
|
35
|
-
if (
|
36
|
-
return fuzzyLinkOneFile(newMeta, destinationDir, sourceRoot);
|
43
|
+
function linkExactTree(searchee, newMeta, destinationDir, sourceRoot) {
|
44
|
+
if (searchee.files.length === 1) {
|
45
|
+
return fuzzyLinkOneFile(searchee, newMeta, destinationDir, sourceRoot);
|
37
46
|
}
|
38
47
|
for (const newFile of newMeta.files) {
|
39
48
|
const srcFilePath = join(dirname(sourceRoot), newFile.path);
|
@@ -46,8 +55,10 @@ function linkExactTree(newMeta, destinationDir, sourceRoot) {
|
|
46
55
|
/**
|
47
56
|
* @return the root of linked file.
|
48
57
|
*/
|
49
|
-
function fuzzyLinkOneFile(newMeta, destinationDir, sourceRoot) {
|
50
|
-
const srcFilePath = sourceRoot
|
58
|
+
function fuzzyLinkOneFile(searchee, newMeta, destinationDir, sourceRoot) {
|
59
|
+
const srcFilePath = statSync(sourceRoot).isFile()
|
60
|
+
? sourceRoot
|
61
|
+
: join(dirname(sourceRoot), searchee.files[0].path);
|
51
62
|
const destFilePath = join(destinationDir, newMeta.files[0].path);
|
52
63
|
mkdirSync(dirname(destFilePath), { recursive: true });
|
53
64
|
linkFile(srcFilePath, destFilePath);
|
@@ -56,7 +67,7 @@ function fuzzyLinkOneFile(newMeta, destinationDir, sourceRoot) {
|
|
56
67
|
/**
|
57
68
|
* @return the root of linked files.
|
58
69
|
*/
|
59
|
-
function
|
70
|
+
function linkFuzzyTree(searchee, newMeta, destinationDir, sourceRoot) {
|
60
71
|
for (const newFile of newMeta.files) {
|
61
72
|
let matchedSearcheeFiles = searchee.files.filter((searcheeFile) => searcheeFile.length === newFile.length);
|
62
73
|
if (matchedSearcheeFiles.length > 1) {
|
@@ -78,58 +89,71 @@ async function linkAllFilesInMetafile(searchee, newMeta, tracker, decision) {
|
|
78
89
|
const fullLinkDir = flatLinking ? linkDir : join(linkDir, tracker);
|
79
90
|
let sourceRoot;
|
80
91
|
if (searchee.path) {
|
92
|
+
if (!existsSync(searchee.path)) {
|
93
|
+
logger.error(`Linking failed, ${searchee.path} not found. Make sure Docker volume mounts are set up properly.`);
|
94
|
+
return resultOfErr("MISSING_DATA");
|
95
|
+
}
|
96
|
+
const result = await createSearcheeFromPath(searchee.path);
|
97
|
+
if (result.isErr()) {
|
98
|
+
return resultOfErr("TORRENT_NOT_FOUND");
|
99
|
+
}
|
100
|
+
const refreshedSearchee = result.unwrap();
|
101
|
+
if (searchee.length !== refreshedSearchee.length) {
|
102
|
+
return resultOfErr("TORRENT_NOT_COMPLETE");
|
103
|
+
}
|
81
104
|
sourceRoot = searchee.path;
|
82
105
|
}
|
83
106
|
else {
|
84
107
|
const downloadDirResult = await getClient().getDownloadDir(searchee);
|
85
108
|
if (downloadDirResult.isErr()) {
|
86
|
-
return downloadDirResult.mapErr((e) => e === "NOT_FOUND"
|
109
|
+
return downloadDirResult.mapErr((e) => e === "NOT_FOUND" || e === "UNKNOWN_ERROR"
|
110
|
+
? "TORRENT_NOT_FOUND"
|
111
|
+
: e);
|
87
112
|
}
|
88
|
-
sourceRoot = join(downloadDirResult.
|
113
|
+
sourceRoot = join(downloadDirResult.unwrap(), searchee.files.length === 1
|
89
114
|
? searchee.files[0].path
|
90
115
|
: searchee.name);
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
116
|
+
if (!existsSync(sourceRoot)) {
|
117
|
+
logger.error(`Linking failed, ${sourceRoot} not found. Make sure Docker volume mounts are set up properly.`);
|
118
|
+
return resultOfErr("MISSING_DATA");
|
119
|
+
}
|
95
120
|
}
|
96
121
|
if (decision === Decision.MATCH) {
|
97
|
-
return resultOf(linkExactTree(newMeta, fullLinkDir, sourceRoot));
|
98
|
-
}
|
99
|
-
else if (decision === Decision.MATCH_SIZE_ONLY) {
|
100
|
-
return resultOf(fuzzyLinkOneFile(newMeta, fullLinkDir, sourceRoot));
|
122
|
+
return resultOf(linkExactTree(searchee, newMeta, fullLinkDir, sourceRoot));
|
101
123
|
}
|
102
124
|
else {
|
103
|
-
return resultOf(
|
125
|
+
return resultOf(linkFuzzyTree(searchee, newMeta, fullLinkDir, sourceRoot));
|
104
126
|
}
|
105
127
|
}
|
106
128
|
export async function performAction(newMeta, decision, searchee, tracker) {
|
107
129
|
const { action, linkDir } = getRuntimeConfig();
|
108
|
-
const isVideo = hasVideo(searchee);
|
109
130
|
if (action === Action.SAVE) {
|
110
|
-
await saveTorrentFile(tracker,
|
111
|
-
|
112
|
-
const styledTracker = chalk.bold(tracker);
|
113
|
-
logger.info(`Found ${styledName} on ${styledTracker} by ${decision} - saved`);
|
131
|
+
await saveTorrentFile(tracker, getMediaType(searchee), newMeta);
|
132
|
+
logActionResult(SaveResult.SAVED, newMeta, searchee, tracker, decision);
|
114
133
|
return SaveResult.SAVED;
|
115
134
|
}
|
116
135
|
let destinationDir;
|
117
136
|
if (linkDir) {
|
118
137
|
const linkedFilesRootResult = await linkAllFilesInMetafile(searchee, newMeta, tracker, decision);
|
119
138
|
if (linkedFilesRootResult.isOk()) {
|
120
|
-
destinationDir = dirname(linkedFilesRootResult.
|
139
|
+
destinationDir = dirname(linkedFilesRootResult.unwrap());
|
121
140
|
}
|
122
141
|
else if (decision === Decision.MATCH &&
|
123
|
-
linkedFilesRootResult.
|
142
|
+
linkedFilesRootResult.unwrapErr() === "MISSING_DATA") {
|
124
143
|
logger.warn("Falling back to non-linking.");
|
125
144
|
if (searchee.path) {
|
126
145
|
destinationDir = dirname(searchee.path);
|
127
146
|
}
|
128
147
|
}
|
129
148
|
else {
|
130
|
-
|
131
|
-
|
132
|
-
|
149
|
+
const result = linkedFilesRootResult.unwrapErr();
|
150
|
+
logger.error(`Failed to link files for ${newMeta.name}: ${result}`);
|
151
|
+
const injectionResult = result === "TORRENT_NOT_COMPLETE"
|
152
|
+
? InjectionResult.TORRENT_NOT_COMPLETE
|
153
|
+
: InjectionResult.FAILURE;
|
154
|
+
logActionResult(injectionResult, newMeta, searchee, tracker, decision);
|
155
|
+
await saveTorrentFile(tracker, getMediaType(searchee), newMeta);
|
156
|
+
return injectionResult;
|
133
157
|
}
|
134
158
|
}
|
135
159
|
else if (searchee.path) {
|
@@ -137,9 +161,9 @@ export async function performAction(newMeta, decision, searchee, tracker) {
|
|
137
161
|
destinationDir = dirname(searchee.path);
|
138
162
|
}
|
139
163
|
const result = await getClient().inject(newMeta, searchee, decision, destinationDir);
|
140
|
-
|
164
|
+
logActionResult(result, newMeta, searchee, tracker, decision);
|
141
165
|
if (result === InjectionResult.FAILURE) {
|
142
|
-
await saveTorrentFile(tracker,
|
166
|
+
await saveTorrentFile(tracker, getMediaType(searchee), newMeta);
|
143
167
|
}
|
144
168
|
return result;
|
145
169
|
}
|
package/dist/action.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"action.js","sourceRoot":"","sources":["../src/action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC;AAC5E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EACN,MAAM,EAEN,QAAQ,
|
1
|
+
{"version":3,"file":"action.js","sourceRoot":"","sources":["../src/action.ts"],"names":[],"mappings":"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"}
|
package/dist/arr.js
ADDED
@@ -0,0 +1,191 @@
|
|
1
|
+
import chalk from "chalk";
|
2
|
+
import ms from "ms";
|
3
|
+
import { join as posixJoin } from "node:path/posix";
|
4
|
+
import { URLSearchParams } from "node:url";
|
5
|
+
import { CrossSeedError } from "./errors.js";
|
6
|
+
import { Label, logger } from "./logger.js";
|
7
|
+
import { resultOf, resultOfErr } from "./Result.js";
|
8
|
+
import { getRuntimeConfig } from "./runtimeConfig.js";
|
9
|
+
import { cleanseSeparators, getApikey, isTruthy, MediaType, sanitizeUrl, stripExtension, } from "./utils.js";
|
10
|
+
import { RELEASE_GROUP_REGEX, REPACK_PROPER_REGEX, RESOLUTION_REGEX, } from "./constants.js";
|
11
|
+
export async function validateUArrLs() {
|
12
|
+
const { sonarr, radarr } = getRuntimeConfig();
|
13
|
+
if (sonarr) {
|
14
|
+
const urls = sonarr.map((str) => new URL(str));
|
15
|
+
for (const url of urls) {
|
16
|
+
if (!url.searchParams.has("apikey")) {
|
17
|
+
throw new CrossSeedError(`Sonarr url ${url} does not specify an apikey`);
|
18
|
+
}
|
19
|
+
await checkArrIsActive(url.href, "Sonarr");
|
20
|
+
}
|
21
|
+
}
|
22
|
+
if (radarr) {
|
23
|
+
const urls = radarr.map((str) => new URL(str));
|
24
|
+
for (const url of urls) {
|
25
|
+
if (!url.searchParams.has("apikey")) {
|
26
|
+
throw new CrossSeedError(`Radarr url ${url} does not specify an apikey`);
|
27
|
+
}
|
28
|
+
await checkArrIsActive(url.href, "Radarr");
|
29
|
+
}
|
30
|
+
}
|
31
|
+
}
|
32
|
+
async function checkArrIsActive(uArrL, arrInstance) {
|
33
|
+
const arrPingCheck = await makeArrApiCall(uArrL, "/api");
|
34
|
+
if (arrPingCheck.isOk()) {
|
35
|
+
const arrPingResponse = arrPingCheck.unwrap();
|
36
|
+
if (!arrPingResponse?.current) {
|
37
|
+
throw new CrossSeedError(`Failed to establish a connection to ${arrInstance} URL: ${uArrL}`);
|
38
|
+
}
|
39
|
+
}
|
40
|
+
else {
|
41
|
+
const error = arrPingCheck.unwrapErr();
|
42
|
+
throw new CrossSeedError(`Could not contact ${arrInstance} at ${uArrL}`, {
|
43
|
+
cause: error.message.includes("fetch failed") && error.cause
|
44
|
+
? error.cause
|
45
|
+
: error,
|
46
|
+
});
|
47
|
+
}
|
48
|
+
}
|
49
|
+
function getBodySampleMessage(text) {
|
50
|
+
const first1000Chars = text.substring(0, 1000);
|
51
|
+
if (first1000Chars) {
|
52
|
+
return `first 1000 characters: ${first1000Chars}`;
|
53
|
+
}
|
54
|
+
else {
|
55
|
+
return "";
|
56
|
+
}
|
57
|
+
}
|
58
|
+
async function makeArrApiCall(uArrL, resourcePath, params = new URLSearchParams()) {
|
59
|
+
const apikey = getApikey(uArrL);
|
60
|
+
const url = new URL(sanitizeUrl(uArrL));
|
61
|
+
url.pathname = posixJoin(url.pathname, resourcePath);
|
62
|
+
for (const [name, value] of params) {
|
63
|
+
url.searchParams.set(name, value);
|
64
|
+
}
|
65
|
+
let response;
|
66
|
+
try {
|
67
|
+
response = await fetch(url, {
|
68
|
+
signal: AbortSignal.timeout(ms("30 seconds")),
|
69
|
+
headers: { "X-Api-Key": apikey },
|
70
|
+
});
|
71
|
+
}
|
72
|
+
catch (networkError) {
|
73
|
+
if (networkError.name === "AbortError") {
|
74
|
+
return resultOfErr(new Error("connection timeout"));
|
75
|
+
}
|
76
|
+
return resultOfErr(networkError);
|
77
|
+
}
|
78
|
+
if (!response.ok) {
|
79
|
+
const responseText = await response.text();
|
80
|
+
const bodySampleMessage = getBodySampleMessage(responseText);
|
81
|
+
return resultOfErr(new Error(`${response.status} ${response.statusText} ${bodySampleMessage}`));
|
82
|
+
}
|
83
|
+
try {
|
84
|
+
const responseBody = await response.clone().json();
|
85
|
+
return resultOf(responseBody);
|
86
|
+
}
|
87
|
+
catch (e) {
|
88
|
+
const responseText = await response.text();
|
89
|
+
return resultOfErr(new Error(`Arr response was non-JSON. ${getBodySampleMessage(responseText)}`));
|
90
|
+
}
|
91
|
+
}
|
92
|
+
async function getMediaFromArr(uArrL, title) {
|
93
|
+
return await makeArrApiCall(uArrL, "/api/v3/parse", new URLSearchParams({ title }));
|
94
|
+
}
|
95
|
+
export function formatFoundIds(foundIds) {
|
96
|
+
return Object.entries(foundIds)
|
97
|
+
.filter(([idName]) => ["imdbid", "tmdbid", "tvdbid"].includes(idName.toLowerCase()))
|
98
|
+
.map(([idName, idValue]) => {
|
99
|
+
const name = idName.toUpperCase().replace("ID", "");
|
100
|
+
const val = idValue ?? "N/A";
|
101
|
+
return `${chalk.yellow(name)}=${chalk.white(val)}`;
|
102
|
+
})
|
103
|
+
.join(" ");
|
104
|
+
}
|
105
|
+
function logArrQueryResult(externalIds, searchTerm, label, error) {
|
106
|
+
if (error) {
|
107
|
+
if (!Object.values(externalIds).some(isTruthy)) {
|
108
|
+
logger.verbose({
|
109
|
+
label: label,
|
110
|
+
message: `Lookup failed for ${chalk.yellow(searchTerm)} - ${chalk.red(error.message)}`,
|
111
|
+
});
|
112
|
+
logger.verbose({
|
113
|
+
label: label,
|
114
|
+
message: `Make sure the item is added to an Arr instance.`,
|
115
|
+
});
|
116
|
+
return;
|
117
|
+
}
|
118
|
+
logger.debug({
|
119
|
+
label: label,
|
120
|
+
message: `Failed to lookup IDs for ${chalk.yellow(searchTerm)} - (${chalk.red(String(error).split(":").slice(1)[0].trim())})`,
|
121
|
+
});
|
122
|
+
logger.debug(error);
|
123
|
+
}
|
124
|
+
else {
|
125
|
+
const foundIdsStr = formatFoundIds(externalIds);
|
126
|
+
logger.verbose({
|
127
|
+
label: label,
|
128
|
+
message: `Found media for ${chalk.green.bold(searchTerm)} -> ${foundIdsStr}`,
|
129
|
+
});
|
130
|
+
}
|
131
|
+
}
|
132
|
+
function getRelevantArrInstances(mediaType) {
|
133
|
+
const { sonarr, radarr } = getRuntimeConfig();
|
134
|
+
switch (mediaType) {
|
135
|
+
case MediaType.SEASON:
|
136
|
+
case MediaType.EPISODE:
|
137
|
+
return sonarr;
|
138
|
+
case MediaType.MOVIE:
|
139
|
+
return radarr;
|
140
|
+
case MediaType.ANIME:
|
141
|
+
case MediaType.OTHER:
|
142
|
+
return [...sonarr, ...radarr];
|
143
|
+
default:
|
144
|
+
return [];
|
145
|
+
}
|
146
|
+
}
|
147
|
+
export async function scanAllArrsForMedia(searchee, mediaType) {
|
148
|
+
const uArrLs = getRelevantArrInstances(mediaType);
|
149
|
+
if (uArrLs.length === 0) {
|
150
|
+
return resultOfErr(false);
|
151
|
+
}
|
152
|
+
const title = mediaType === MediaType.OTHER
|
153
|
+
? cleanseSeparators(stripExtension(searchee.name)
|
154
|
+
.replace(RELEASE_GROUP_REGEX, "")
|
155
|
+
.replace(RESOLUTION_REGEX, "")
|
156
|
+
.replace(REPACK_PROPER_REGEX, ""))
|
157
|
+
: searchee.name;
|
158
|
+
let error = new Error(`No ids found for ${title} [${mediaType}]`);
|
159
|
+
for (const uArrL of uArrLs) {
|
160
|
+
const name = mediaType === MediaType.OTHER &&
|
161
|
+
getRuntimeConfig().sonarr?.includes(uArrL)
|
162
|
+
? `${title} S00E00` // Sonarr needs season or episode
|
163
|
+
: title;
|
164
|
+
const result = await getMediaFromArr(uArrL, name);
|
165
|
+
if (result.isErr()) {
|
166
|
+
error = result.unwrapErr();
|
167
|
+
continue;
|
168
|
+
}
|
169
|
+
const response = result.unwrap();
|
170
|
+
const ids = response.movie ?? response.series ?? {};
|
171
|
+
if (Object.values(ids).some(isTruthy)) {
|
172
|
+
const label = response.movie ? Label.RADARR : Label.SONARR;
|
173
|
+
logArrQueryResult(ids, name, label);
|
174
|
+
return resultOf(response);
|
175
|
+
}
|
176
|
+
}
|
177
|
+
logArrQueryResult({}, searchee.name, Label.ARRS, error);
|
178
|
+
return resultOfErr(false);
|
179
|
+
}
|
180
|
+
export async function getRelevantArrIds(caps, parsedMedia) {
|
181
|
+
const idSearchCaps = parsedMedia.movie
|
182
|
+
? caps.movieIdSearch
|
183
|
+
: caps.tvIdSearch;
|
184
|
+
const ids = parsedMedia.movie ?? parsedMedia.series;
|
185
|
+
return {
|
186
|
+
tvdbid: idSearchCaps.tvdbId ? ids.tvdbId : undefined,
|
187
|
+
tmdbid: idSearchCaps.tmdbId ? ids.tmdbId : undefined,
|
188
|
+
imdbid: idSearchCaps.imdbId ? ids.imdbId : undefined,
|
189
|
+
};
|
190
|
+
}
|
191
|
+
//# sourceMappingURL=arr.js.map
|
package/dist/arr.js.map
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"arr.js","sourceRoot":"","sources":["../src/arr.ts"],"names":[],"mappings":"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"}
|