cross-seed 7.0.0-1 → 7.0.0-3
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.d.ts +27 -0
- package/dist/Result.js +64 -0
- package/dist/Result.js.map +1 -0
- package/dist/action.d.ts +34 -0
- package/dist/action.js +694 -0
- package/dist/action.js.map +1 -0
- package/dist/arr.d.ts +31 -0
- package/dist/arr.js +267 -0
- package/dist/arr.js.map +1 -0
- package/dist/auth.d.ts +3 -0
- package/dist/auth.js +28 -0
- package/dist/auth.js.map +1 -0
- package/dist/clients/Deluge.d.ts +153 -0
- package/dist/clients/Deluge.js +698 -0
- package/dist/clients/Deluge.js.map +1 -0
- package/dist/clients/QBittorrent.d.ts +218 -0
- package/dist/clients/QBittorrent.js +785 -0
- package/dist/clients/QBittorrent.js.map +1 -0
- package/dist/clients/RTorrent.d.ts +43 -0
- package/dist/clients/RTorrent.js +657 -0
- package/dist/clients/RTorrent.js.map +1 -0
- package/dist/clients/TorrentClient.d.ts +108 -0
- package/dist/clients/TorrentClient.js +341 -0
- package/dist/clients/TorrentClient.js.map +1 -0
- package/dist/clients/Transmission.d.ts +43 -0
- package/dist/clients/Transmission.js +404 -0
- package/dist/clients/Transmission.js.map +1 -0
- package/dist/cmd.d.ts +2 -0
- package/dist/cmd.js +128 -0
- package/dist/cmd.js.map +1 -0
- package/dist/configSchema.d.ts +1 -0
- package/dist/configSchema.js +2 -0
- package/dist/configSchema.js.map +1 -0
- package/dist/configuration.d.ts +63 -0
- package/dist/configuration.js +321 -0
- package/dist/configuration.js.map +1 -0
- package/dist/constants.d.ts +108 -0
- package/dist/constants.js +251 -0
- package/dist/constants.js.map +1 -0
- package/dist/dataFiles.d.ts +8 -0
- package/dist/dataFiles.js +223 -0
- package/dist/dataFiles.js.map +1 -0
- package/dist/db.d.ts +3 -0
- package/dist/db.js +216 -0
- package/dist/db.js.map +1 -0
- package/dist/dbConfig.d.ts +4 -0
- package/dist/dbConfig.js +67 -0
- package/dist/dbConfig.js.map +1 -0
- package/dist/decide.d.ts +25 -0
- package/dist/decide.js +553 -0
- package/dist/decide.js.map +1 -0
- package/dist/diff.d.ts +1 -0
- package/dist/diff.js +24 -0
- package/dist/diff.js.map +1 -0
- package/dist/errors.d.ts +3 -0
- package/dist/errors.js +7 -0
- package/dist/errors.js.map +1 -0
- package/dist/indexers.d.ts +105 -0
- package/dist/indexers.js +248 -0
- package/dist/indexers.js.map +1 -0
- package/dist/inject.d.ts +2 -0
- package/dist/inject.js +594 -0
- package/dist/inject.js.map +1 -0
- package/dist/jobs.d.ts +29 -0
- package/dist/jobs.js +151 -0
- package/dist/jobs.js.map +1 -0
- package/dist/logger.d.ts +29 -0
- package/dist/logger.js +157 -0
- package/dist/logger.js.map +1 -0
- package/dist/migrations/00-initialSchema.d.ts +9 -0
- package/dist/migrations/00-initialSchema.js +30 -0
- package/dist/migrations/00-initialSchema.js.map +1 -0
- package/dist/migrations/01-jobs.d.ts +9 -0
- package/dist/migrations/01-jobs.js +12 -0
- package/dist/migrations/01-jobs.js.map +1 -0
- package/dist/migrations/02-timestamps.d.ts +9 -0
- package/dist/migrations/02-timestamps.js +21 -0
- package/dist/migrations/02-timestamps.js.map +1 -0
- package/dist/migrations/03-rateLimits.d.ts +9 -0
- package/dist/migrations/03-rateLimits.js +14 -0
- package/dist/migrations/03-rateLimits.js.map +1 -0
- package/dist/migrations/04-auth.d.ts +9 -0
- package/dist/migrations/04-auth.js +13 -0
- package/dist/migrations/04-auth.js.map +1 -0
- package/dist/migrations/05-caps.d.ts +9 -0
- package/dist/migrations/05-caps.js +16 -0
- package/dist/migrations/05-caps.js.map +1 -0
- package/dist/migrations/06-uniqueDecisions.d.ts +9 -0
- package/dist/migrations/06-uniqueDecisions.js +29 -0
- package/dist/migrations/06-uniqueDecisions.js.map +1 -0
- package/dist/migrations/07-limits.d.ts +9 -0
- package/dist/migrations/07-limits.js +12 -0
- package/dist/migrations/07-limits.js.map +1 -0
- package/dist/migrations/08-rss.d.ts +9 -0
- package/dist/migrations/08-rss.js +15 -0
- package/dist/migrations/08-rss.js.map +1 -0
- package/dist/migrations/09-clientAndDataSearchees.d.ts +9 -0
- package/dist/migrations/09-clientAndDataSearchees.js +34 -0
- package/dist/migrations/09-clientAndDataSearchees.js.map +1 -0
- package/dist/migrations/10-indexerNameAudioBookCaps.d.ts +9 -0
- package/dist/migrations/10-indexerNameAudioBookCaps.js +18 -0
- package/dist/migrations/10-indexerNameAudioBookCaps.js.map +1 -0
- package/dist/migrations/11-trackers.d.ts +9 -0
- package/dist/migrations/11-trackers.js +38 -0
- package/dist/migrations/11-trackers.js.map +1 -0
- package/dist/migrations/12-user-auth.d.ts +9 -0
- package/dist/migrations/12-user-auth.js +22 -0
- package/dist/migrations/12-user-auth.js.map +1 -0
- package/dist/migrations/13-settings.d.ts +9 -0
- package/dist/migrations/13-settings.js +23 -0
- package/dist/migrations/13-settings.js.map +1 -0
- package/dist/migrations/14-indexer-enabled-flag.d.ts +9 -0
- package/dist/migrations/14-indexer-enabled-flag.js +12 -0
- package/dist/migrations/14-indexer-enabled-flag.js.map +1 -0
- package/dist/migrations/15-remove-url-unique-constraint.d.ts +9 -0
- package/dist/migrations/15-remove-url-unique-constraint.js +14 -0
- package/dist/migrations/15-remove-url-unique-constraint.js.map +1 -0
- package/dist/migrations/16-prune-inactive-indexers.d.ts +9 -0
- package/dist/migrations/16-prune-inactive-indexers.js +17 -0
- package/dist/migrations/16-prune-inactive-indexers.js.map +1 -0
- package/dist/migrations/migrations.d.ts +13 -0
- package/dist/migrations/migrations.js +41 -0
- package/dist/migrations/migrations.js.map +1 -0
- package/dist/parseTorrent.d.ts +53 -0
- package/dist/parseTorrent.js +128 -0
- package/dist/parseTorrent.js.map +1 -0
- package/dist/pipeline.d.ts +41 -0
- package/dist/pipeline.js +574 -0
- package/dist/pipeline.js.map +1 -0
- package/dist/preFilter.d.ts +25 -0
- package/dist/preFilter.js +250 -0
- package/dist/preFilter.js.map +1 -0
- package/dist/problems/linking.d.ts +2 -0
- package/dist/problems/linking.js +80 -0
- package/dist/problems/linking.js.map +1 -0
- package/dist/problems/path.d.ts +22 -0
- package/dist/problems/path.js +96 -0
- package/dist/problems/path.js.map +1 -0
- package/dist/problems.d.ts +13 -0
- package/dist/problems.js +48 -0
- package/dist/problems.js.map +1 -0
- package/dist/pushNotifier.d.ts +19 -0
- package/dist/pushNotifier.js +137 -0
- package/dist/pushNotifier.js.map +1 -0
- package/dist/routes/baseApi.d.ts +2 -0
- package/dist/routes/baseApi.js +354 -0
- package/dist/routes/baseApi.js.map +1 -0
- package/dist/routes/indexerApi.d.ts +6 -0
- package/dist/routes/indexerApi.js +165 -0
- package/dist/routes/indexerApi.js.map +1 -0
- package/dist/routes/staticFrontendPlugin.d.ts +4 -0
- package/dist/routes/staticFrontendPlugin.js +63 -0
- package/dist/routes/staticFrontendPlugin.js.map +1 -0
- package/dist/runtimeConfig.d.ts +6 -0
- package/dist/runtimeConfig.js +27 -0
- package/dist/runtimeConfig.js.map +1 -0
- package/dist/searchee.d.ts +108 -0
- package/dist/searchee.js +689 -0
- package/dist/searchee.js.map +1 -0
- package/dist/server.d.ts +4 -0
- package/dist/server.js +65 -0
- package/dist/server.js.map +1 -0
- package/dist/services/indexerService.d.ts +96 -0
- package/dist/services/indexerService.js +287 -0
- package/dist/services/indexerService.js.map +1 -0
- package/dist/sessionCookies.d.ts +5 -0
- package/dist/sessionCookies.js +27 -0
- package/dist/sessionCookies.js.map +1 -0
- package/dist/startup.d.ts +25 -0
- package/dist/startup.js +157 -0
- package/dist/startup.js.map +1 -0
- package/dist/torrent.d.ts +69 -0
- package/dist/torrent.js +641 -0
- package/dist/torrent.js.map +1 -0
- package/dist/torznab.d.ts +60 -0
- package/dist/torznab.js +711 -0
- package/dist/torznab.js.map +1 -0
- package/dist/trpc/fastifyAdapter.d.ts +2 -0
- package/dist/trpc/fastifyAdapter.js +9 -0
- package/dist/trpc/fastifyAdapter.js.map +1 -0
- package/dist/trpc/index.d.ts +49 -0
- package/dist/trpc/index.js +53 -0
- package/dist/trpc/index.js.map +1 -0
- package/dist/trpc/routers/auth.d.ts +43 -0
- package/dist/trpc/routers/auth.js +116 -0
- package/dist/trpc/routers/auth.js.map +1 -0
- package/dist/trpc/routers/clients.d.ts +21 -0
- package/dist/trpc/routers/clients.js +65 -0
- package/dist/trpc/routers/clients.js.map +1 -0
- package/dist/trpc/routers/health.d.ts +14 -0
- package/dist/trpc/routers/health.js +20 -0
- package/dist/trpc/routers/health.js.map +1 -0
- package/dist/trpc/routers/index.d.ts +391 -0
- package/dist/trpc/routers/index.js +23 -0
- package/dist/trpc/routers/index.js.map +1 -0
- package/dist/trpc/routers/indexers.d.ts +75 -0
- package/dist/trpc/routers/indexers.js +79 -0
- package/dist/trpc/routers/indexers.js.map +1 -0
- package/dist/trpc/routers/jobs.d.ts +33 -0
- package/dist/trpc/routers/jobs.js +84 -0
- package/dist/trpc/routers/jobs.js.map +1 -0
- package/dist/trpc/routers/logs.d.ts +27 -0
- package/dist/trpc/routers/logs.js +91 -0
- package/dist/trpc/routers/logs.js.map +1 -0
- package/dist/trpc/routers/searchees.d.ts +51 -0
- package/dist/trpc/routers/searchees.js +156 -0
- package/dist/trpc/routers/searchees.js.map +1 -0
- package/dist/trpc/routers/settings.d.ts +83 -0
- package/dist/trpc/routers/settings.js +92 -0
- package/dist/trpc/routers/settings.js.map +1 -0
- package/dist/trpc/routers/stats.d.ts +42 -0
- package/dist/trpc/routers/stats.js +102 -0
- package/dist/trpc/routers/stats.js.map +1 -0
- package/dist/userAuth.d.ts +21 -0
- package/dist/userAuth.js +86 -0
- package/dist/userAuth.js.map +1 -0
- package/dist/utils/authUtils.d.ts +10 -0
- package/dist/utils/authUtils.js +24 -0
- package/dist/utils/authUtils.js.map +1 -0
- package/dist/utils/logWatcher.d.ts +28 -0
- package/dist/utils/logWatcher.js +218 -0
- package/dist/utils/logWatcher.js.map +1 -0
- package/dist/utils/object.d.ts +1 -0
- package/dist/utils/object.js +4 -0
- package/dist/utils/object.js.map +1 -0
- package/dist/utils.d.ts +175 -0
- package/dist/utils.js +660 -0
- package/dist/utils.js.map +1 -0
- package/package.json +17 -58
- package/LICENSE +0 -201
- package/README.md +0 -33
- package/dist/webui/assets/FieldInfo-Bxj_j8SJ.js +0 -1
- package/dist/webui/assets/Page-C3rteCZt.js +0 -1
- package/dist/webui/assets/array-field-DVSC6nHP.js +0 -1
- package/dist/webui/assets/badge-DTZMtS0e.js +0 -1
- package/dist/webui/assets/check-Bu3ldi63.js +0 -1
- package/dist/webui/assets/chevron-down-CRy8M0kJ.js +0 -1
- package/dist/webui/assets/clients-CW8oEZoQ.js +0 -1
- package/dist/webui/assets/connect-YBNsnjWT.js +0 -1
- package/dist/webui/assets/debug-mz8-WYZj.js +0 -1
- package/dist/webui/assets/directories-BSK28RgR.js +0 -1
- package/dist/webui/assets/duration-field-C6xoSlJg.js +0 -1
- package/dist/webui/assets/general-lJJxZhH7.js +0 -1
- package/dist/webui/assets/health-CXbsVrie.js +0 -1
- package/dist/webui/assets/index-Bi48hI2z.js +0 -54
- package/dist/webui/assets/index-C-Ul7GNg.css +0 -1
- package/dist/webui/assets/index-C2cH1Gst.js +0 -1
- package/dist/webui/assets/index-Cc5bDmJr.js +0 -1
- package/dist/webui/assets/jobs-CxmNab9w.js +0 -1
- package/dist/webui/assets/library-vaj2W8sE.js +0 -1
- package/dist/webui/assets/loader-circle-M0gu1gZ-.js +0 -1
- package/dist/webui/assets/logs-Cu9RyKS0.js +0 -1
- package/dist/webui/assets/search-2R5sIdT8.js +0 -1
- package/dist/webui/assets/select-field-BCqNLDrJ.js +0 -1
- package/dist/webui/assets/select-zHgqMzLj.js +0 -1
- package/dist/webui/assets/settings-CMYjpTbZ.js +0 -1
- package/dist/webui/assets/submit-button-BtcnyggQ.js +0 -1
- package/dist/webui/assets/switch-G0W3uJVN.js +0 -1
- package/dist/webui/assets/switch-field-IBd9ORNq.js +0 -1
- package/dist/webui/assets/table-DvgJU7Gh.js +0 -1
- package/dist/webui/assets/test-tube-BIwmoM45.js +0 -1
- package/dist/webui/assets/text-field-DruSbGhy.js +0 -1
- package/dist/webui/assets/time-BSMZjmyW.js +0 -1
- package/dist/webui/assets/trackers-D-OpAe63.js +0 -7
- package/dist/webui/assets/use-form-validation-context-BkAfWAh0.js +0 -1
- package/dist/webui/assets/use-settings-form-submit-CDRh-E9U.js +0 -2
- package/dist/webui/assets/useQuery-A4Hv_4uX.js +0 -1
- package/dist/webui/index.html +0 -13
- package/node_modules/@cross-seed/shared/dist/configSchema.d.ts +0 -261
- package/node_modules/@cross-seed/shared/dist/configSchema.d.ts.map +0 -1
- package/node_modules/@cross-seed/shared/dist/configSchema.js +0 -53
- package/node_modules/@cross-seed/shared/dist/configSchema.js.map +0 -1
- package/node_modules/@cross-seed/shared/dist/constants.d.ts +0 -122
- package/node_modules/@cross-seed/shared/dist/constants.d.ts.map +0 -1
- package/node_modules/@cross-seed/shared/dist/constants.js +0 -127
- package/node_modules/@cross-seed/shared/dist/constants.js.map +0 -1
- package/node_modules/@cross-seed/shared/dist/tsconfig.tsbuildinfo +0 -1
- package/node_modules/@cross-seed/shared/dist/utils.d.ts +0 -6
- package/node_modules/@cross-seed/shared/dist/utils.d.ts.map +0 -1
- package/node_modules/@cross-seed/shared/dist/utils.js +0 -9
- package/node_modules/@cross-seed/shared/dist/utils.js.map +0 -1
- package/node_modules/@cross-seed/shared/package.json +0 -22
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action.js","sourceRoot":"","sources":["../src/action.ts"],"names":[],"mappings":"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"}
|
package/dist/arr.d.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { Problem } from "./problems.js";
|
|
2
|
+
import { MediaType } from "./constants.js";
|
|
3
|
+
import { Caps } from "./indexers.js";
|
|
4
|
+
import { Result } from "./Result.js";
|
|
5
|
+
import { IdSearchParams } from "./torznab.js";
|
|
6
|
+
export interface ExternalIds {
|
|
7
|
+
imdbId?: string;
|
|
8
|
+
tmdbId?: string;
|
|
9
|
+
tvdbId?: string;
|
|
10
|
+
tvMazeId?: string;
|
|
11
|
+
}
|
|
12
|
+
export declare function arrIdsEqual(a: ExternalIds | undefined, b: ExternalIds | undefined): boolean;
|
|
13
|
+
interface ParsedMovie {
|
|
14
|
+
movie: ExternalIds;
|
|
15
|
+
series: undefined;
|
|
16
|
+
episodes: undefined;
|
|
17
|
+
}
|
|
18
|
+
interface ParsedSeries {
|
|
19
|
+
movie: undefined;
|
|
20
|
+
series: ExternalIds;
|
|
21
|
+
episodes: {
|
|
22
|
+
seasonNumber: number;
|
|
23
|
+
episodeNumber: number;
|
|
24
|
+
}[];
|
|
25
|
+
}
|
|
26
|
+
export type ParsedMedia = ParsedMovie | ParsedSeries;
|
|
27
|
+
export declare function formatFoundIds(foundIds: ExternalIds): string;
|
|
28
|
+
export declare function scanAllArrsForMedia(searcheeTitle: string, mediaType: MediaType): Promise<Result<ParsedMedia, boolean>>;
|
|
29
|
+
export declare function getRelevantArrIds(caps: Caps, parsedMedia: ParsedMedia): IdSearchParams;
|
|
30
|
+
export declare function collectArrProblems(): Promise<Problem[]>;
|
|
31
|
+
export {};
|
package/dist/arr.js
ADDED
|
@@ -0,0 +1,267 @@
|
|
|
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 { MediaType, SCENE_TITLE_REGEX, USER_AGENT } from "./constants.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, sanitizeUrl, stripMetaFromName, } from "./utils.js";
|
|
10
|
+
export function arrIdsEqual(a, b) {
|
|
11
|
+
return (a?.imdbId === b?.imdbId &&
|
|
12
|
+
a?.tmdbId === b?.tmdbId &&
|
|
13
|
+
a?.tvdbId === b?.tvdbId &&
|
|
14
|
+
a?.tvMazeId === b?.tvMazeId);
|
|
15
|
+
}
|
|
16
|
+
function getBodySampleMessage(text) {
|
|
17
|
+
const first1000Chars = text.substring(0, 1000);
|
|
18
|
+
if (first1000Chars) {
|
|
19
|
+
return `first 1000 characters: ${first1000Chars}`;
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
return "";
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
async function makeArrApiCall(uArrL, resourcePath, params = new URLSearchParams()) {
|
|
26
|
+
const apikey = getApikey(uArrL);
|
|
27
|
+
const url = new URL(sanitizeUrl(uArrL));
|
|
28
|
+
url.pathname = posixJoin(url.pathname, resourcePath);
|
|
29
|
+
for (const [name, value] of params) {
|
|
30
|
+
url.searchParams.set(name, value);
|
|
31
|
+
}
|
|
32
|
+
let response;
|
|
33
|
+
let clonedResponse;
|
|
34
|
+
try {
|
|
35
|
+
response = await fetch(url, {
|
|
36
|
+
signal: AbortSignal.timeout(ms("30 seconds")),
|
|
37
|
+
headers: { "X-Api-Key": apikey, "User-Agent": USER_AGENT },
|
|
38
|
+
});
|
|
39
|
+
clonedResponse = response.clone();
|
|
40
|
+
}
|
|
41
|
+
catch (networkError) {
|
|
42
|
+
if (networkError.name === "AbortError" ||
|
|
43
|
+
networkError.name === "TimeoutError") {
|
|
44
|
+
return resultOfErr(new Error("connection timeout"));
|
|
45
|
+
}
|
|
46
|
+
return resultOfErr(networkError);
|
|
47
|
+
}
|
|
48
|
+
if (!response.ok) {
|
|
49
|
+
const responseText = await response.text();
|
|
50
|
+
const bodySampleMessage = getBodySampleMessage(responseText);
|
|
51
|
+
return resultOfErr(new Error(`${response.status === 401 ? "401 Unauthorized (check apikey)" : response.status} ${response.statusText} ${bodySampleMessage}`));
|
|
52
|
+
}
|
|
53
|
+
try {
|
|
54
|
+
const responseBody = await response.json();
|
|
55
|
+
return resultOf(responseBody);
|
|
56
|
+
}
|
|
57
|
+
catch (e) {
|
|
58
|
+
const responseText = await clonedResponse.text();
|
|
59
|
+
return resultOfErr(new Error(`Arr response was non-JSON. ${getBodySampleMessage(responseText)}`));
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
async function getMediaFromArr(uArrL, title) {
|
|
63
|
+
return makeArrApiCall(uArrL, "/api/v3/parse", new URLSearchParams({ title }));
|
|
64
|
+
}
|
|
65
|
+
export function formatFoundIds(foundIds) {
|
|
66
|
+
return Object.entries(foundIds)
|
|
67
|
+
.filter(([idName]) => ["imdbid", "tmdbid", "tvdbid", "tvmazeid"].includes(idName.toLowerCase()))
|
|
68
|
+
.map(([idName, idValue]) => {
|
|
69
|
+
const name = idName.toUpperCase().replace("ID", "");
|
|
70
|
+
const val = idValue ?? "N/A";
|
|
71
|
+
return `${chalk.yellow(name)}=${chalk.white(val)}`;
|
|
72
|
+
})
|
|
73
|
+
.join(" ");
|
|
74
|
+
}
|
|
75
|
+
function logArrQueryResult(externalIds, searchTerm, label, error) {
|
|
76
|
+
if (error) {
|
|
77
|
+
if (!Object.values(externalIds).some(isTruthy)) {
|
|
78
|
+
logger.verbose({
|
|
79
|
+
label: label,
|
|
80
|
+
message: `Lookup failed for ${chalk.yellow(searchTerm)} - ${chalk.red(error.message)} - make sure the item is added to an Arr instance.`,
|
|
81
|
+
});
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
logger.debug({
|
|
85
|
+
label: label,
|
|
86
|
+
message: `Failed to lookup IDs for ${chalk.yellow(searchTerm)} - (${chalk.red(String(error).split(":").slice(1)[0].trim())})`,
|
|
87
|
+
});
|
|
88
|
+
logger.debug(error);
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
const foundIdsStr = formatFoundIds(externalIds);
|
|
92
|
+
logger.verbose({
|
|
93
|
+
label: label,
|
|
94
|
+
message: `Found media for ${chalk.green.bold(searchTerm)} -> ${foundIdsStr}`,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
function getRelevantArrInstances(mediaType) {
|
|
99
|
+
const { sonarr, radarr } = getRuntimeConfig();
|
|
100
|
+
switch (mediaType) {
|
|
101
|
+
case MediaType.SEASON:
|
|
102
|
+
case MediaType.EPISODE:
|
|
103
|
+
return sonarr;
|
|
104
|
+
case MediaType.MOVIE:
|
|
105
|
+
return radarr;
|
|
106
|
+
case MediaType.ANIME:
|
|
107
|
+
case MediaType.VIDEO:
|
|
108
|
+
return [...sonarr, ...radarr];
|
|
109
|
+
default:
|
|
110
|
+
return [];
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
export async function scanAllArrsForMedia(searcheeTitle, mediaType) {
|
|
114
|
+
const uArrLs = getRelevantArrInstances(mediaType);
|
|
115
|
+
if (uArrLs.length === 0) {
|
|
116
|
+
return resultOfErr(false);
|
|
117
|
+
}
|
|
118
|
+
const title = mediaType !== MediaType.VIDEO
|
|
119
|
+
? searcheeTitle.match(SCENE_TITLE_REGEX).groups.title
|
|
120
|
+
: cleanseSeparators(stripMetaFromName(searcheeTitle));
|
|
121
|
+
let error = new Error(`No ids found for ${title} | MediaType: ${mediaType.toUpperCase()}`);
|
|
122
|
+
for (const uArrL of uArrLs) {
|
|
123
|
+
const name = mediaType === MediaType.VIDEO &&
|
|
124
|
+
getRuntimeConfig().sonarr?.includes(uArrL)
|
|
125
|
+
? `${title} S00E00` // Sonarr needs season or episode
|
|
126
|
+
: title;
|
|
127
|
+
const result = await getMediaFromArr(uArrL, name);
|
|
128
|
+
if (result.isErr()) {
|
|
129
|
+
error = result.unwrapErr();
|
|
130
|
+
continue;
|
|
131
|
+
}
|
|
132
|
+
const response = result.unwrap();
|
|
133
|
+
const ids = response.movie ?? response.series ?? {};
|
|
134
|
+
for (const [key, value] of Object.entries(ids)) {
|
|
135
|
+
if (value === 0 || value === "0") {
|
|
136
|
+
ids[key] = undefined;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
if (Object.values(ids).some(isTruthy)) {
|
|
140
|
+
const label = response.movie ? Label.RADARR : Label.SONARR;
|
|
141
|
+
logArrQueryResult(ids, name, label);
|
|
142
|
+
return resultOf(response);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
logArrQueryResult({}, searcheeTitle, Label.ARRS, error);
|
|
146
|
+
return resultOfErr(false);
|
|
147
|
+
}
|
|
148
|
+
export function getRelevantArrIds(caps, parsedMedia) {
|
|
149
|
+
const idSearchCaps = parsedMedia.movie
|
|
150
|
+
? caps.movieIdSearch
|
|
151
|
+
: caps.tvIdSearch;
|
|
152
|
+
const ids = parsedMedia.movie ?? parsedMedia.series;
|
|
153
|
+
return {
|
|
154
|
+
tvdbid: idSearchCaps.tvdbId ? ids.tvdbId : undefined,
|
|
155
|
+
tmdbid: idSearchCaps.tmdbId ? ids.tmdbId : undefined,
|
|
156
|
+
imdbid: idSearchCaps.imdbId ? ids.imdbId : undefined,
|
|
157
|
+
tvmazeid: idSearchCaps.tvMazeId ? ids.tvMazeId : undefined,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
function sanitizeDisplayUrl(url) {
|
|
161
|
+
return `${url.origin}${url.pathname}`;
|
|
162
|
+
}
|
|
163
|
+
function normalizeArrBaseUrl(rawUrl) {
|
|
164
|
+
const parsedUrl = new URL(rawUrl);
|
|
165
|
+
parsedUrl.pathname = parsedUrl.pathname.replace(/\/api\/?$/, "") || "/";
|
|
166
|
+
return parsedUrl.toString();
|
|
167
|
+
}
|
|
168
|
+
function arrProblemId(kind, category, index) {
|
|
169
|
+
return `arr:${kind.toLowerCase()}:${category}:${index}`;
|
|
170
|
+
}
|
|
171
|
+
async function checkArrUrl(rawUrl, index, kind) {
|
|
172
|
+
const problems = [];
|
|
173
|
+
let parsedUrl;
|
|
174
|
+
try {
|
|
175
|
+
parsedUrl = new URL(rawUrl);
|
|
176
|
+
}
|
|
177
|
+
catch (error) {
|
|
178
|
+
const message = error instanceof Error
|
|
179
|
+
? error.message
|
|
180
|
+
: String(error ?? "Unknown error");
|
|
181
|
+
problems.push({
|
|
182
|
+
id: arrProblemId(kind, "invalid-url", index),
|
|
183
|
+
severity: "error",
|
|
184
|
+
summary: `${kind} URL ${index + 1} is invalid.`,
|
|
185
|
+
details: message,
|
|
186
|
+
});
|
|
187
|
+
return problems;
|
|
188
|
+
}
|
|
189
|
+
const displayUrl = sanitizeDisplayUrl(parsedUrl);
|
|
190
|
+
const apiKey = parsedUrl.searchParams.get("apikey");
|
|
191
|
+
if (!apiKey) {
|
|
192
|
+
problems.push({
|
|
193
|
+
id: arrProblemId(kind, "missing-apikey", index),
|
|
194
|
+
severity: "error",
|
|
195
|
+
summary: `${kind} URL is missing an apikey parameter.`,
|
|
196
|
+
details: `Add ?apikey=<KEY> (or &apikey when other parameters exist) to ${displayUrl}.`,
|
|
197
|
+
});
|
|
198
|
+
return problems;
|
|
199
|
+
}
|
|
200
|
+
try {
|
|
201
|
+
const result = await makeArrApiCall(normalizeArrBaseUrl(rawUrl), "/api");
|
|
202
|
+
if (result.isOk()) {
|
|
203
|
+
const body = result.unwrap();
|
|
204
|
+
if (typeof body?.current !== "string" ||
|
|
205
|
+
body.current.length === 0) {
|
|
206
|
+
problems.push({
|
|
207
|
+
id: arrProblemId(kind, "unexpected-response", index),
|
|
208
|
+
severity: "warning",
|
|
209
|
+
summary: `${kind} at ${displayUrl} returned an unexpected response.`,
|
|
210
|
+
details: "cross-seed expected a version string from /api but received something else.",
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
const error = result.unwrapErr();
|
|
216
|
+
problems.push({
|
|
217
|
+
id: arrProblemId(kind, "http-error", index),
|
|
218
|
+
severity: "error",
|
|
219
|
+
summary: `${kind} at ${displayUrl} could not be reached.`,
|
|
220
|
+
details: error.message,
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
catch (error) {
|
|
225
|
+
const message = error instanceof Error
|
|
226
|
+
? error.message
|
|
227
|
+
: String(error ?? "Unknown error");
|
|
228
|
+
const isAbort = typeof error === "object" &&
|
|
229
|
+
error !== null &&
|
|
230
|
+
"name" in error &&
|
|
231
|
+
error.name === "TimeoutError";
|
|
232
|
+
problems.push({
|
|
233
|
+
id: arrProblemId(kind, "network-error", index),
|
|
234
|
+
severity: "error",
|
|
235
|
+
summary: `${kind} at ${displayUrl} could not be reached.`,
|
|
236
|
+
details: isAbort
|
|
237
|
+
? "The request timed out after 30 seconds."
|
|
238
|
+
: message,
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
return problems;
|
|
242
|
+
}
|
|
243
|
+
export async function collectArrProblems() {
|
|
244
|
+
const { sonarr = [], radarr = [] } = getRuntimeConfig();
|
|
245
|
+
const problems = [];
|
|
246
|
+
const hasSonarr = Array.isArray(sonarr) && sonarr.length > 0;
|
|
247
|
+
const hasRadarr = Array.isArray(radarr) && radarr.length > 0;
|
|
248
|
+
if (!hasSonarr && !hasRadarr) {
|
|
249
|
+
problems.push({
|
|
250
|
+
id: "arr:not-configured",
|
|
251
|
+
severity: "info",
|
|
252
|
+
summary: "Sonarr/Radarr integrations are not configured.",
|
|
253
|
+
details: "Configure Arr URLs for more accurate tracker searches.",
|
|
254
|
+
});
|
|
255
|
+
return problems;
|
|
256
|
+
}
|
|
257
|
+
await Promise.all([
|
|
258
|
+
...sonarr.map((url, index) => checkArrUrl(url, index, "Sonarr")),
|
|
259
|
+
...radarr.map((url, index) => checkArrUrl(url, index, "Radarr")),
|
|
260
|
+
]).then((results) => {
|
|
261
|
+
for (const arrProblems of results) {
|
|
262
|
+
problems.push(...arrProblems);
|
|
263
|
+
}
|
|
264
|
+
});
|
|
265
|
+
return problems;
|
|
266
|
+
}
|
|
267
|
+
//# 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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"}
|
package/dist/auth.d.ts
ADDED
package/dist/auth.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { randomBytes } from "node:crypto";
|
|
2
|
+
import { updateDbConfig } from "./dbConfig.js";
|
|
3
|
+
import { getRuntimeConfig } from "./runtimeConfig.js";
|
|
4
|
+
import { db } from "./db.js";
|
|
5
|
+
function generateApiKey() {
|
|
6
|
+
return randomBytes(24).toString("hex");
|
|
7
|
+
}
|
|
8
|
+
export async function resetApiKey() {
|
|
9
|
+
const apikey = generateApiKey();
|
|
10
|
+
await updateDbConfig({ apiKey: apikey });
|
|
11
|
+
return apikey;
|
|
12
|
+
}
|
|
13
|
+
export async function getApiKey() {
|
|
14
|
+
const { apiKey: runtimeConfigApiKey } = getRuntimeConfig();
|
|
15
|
+
if (runtimeConfigApiKey)
|
|
16
|
+
return runtimeConfigApiKey;
|
|
17
|
+
// Fall back to old apikey column (when DB_CONFIG!=true)
|
|
18
|
+
const row = await db("settings").select("apikey").first();
|
|
19
|
+
if (row?.apikey)
|
|
20
|
+
return row.apikey;
|
|
21
|
+
// No API key found anywhere, generate one
|
|
22
|
+
return resetApiKey();
|
|
23
|
+
}
|
|
24
|
+
export async function checkApiKey(keyToCheck) {
|
|
25
|
+
const apikey = await getApiKey();
|
|
26
|
+
return apikey === keyToCheck;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=auth.js.map
|
package/dist/auth.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAE7B,SAAS,cAAc;IACtB,OAAO,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW;IAChC,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;IAChC,MAAM,cAAc,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACzC,OAAO,MAAM,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS;IAC9B,MAAM,EAAE,MAAM,EAAE,mBAAmB,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAC3D,IAAI,mBAAmB;QAAE,OAAO,mBAAmB,CAAC;IAEpD,wDAAwD;IACxD,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAC;IAC1D,IAAI,GAAG,EAAE,MAAM;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC;IAEnC,0CAA0C;IAC1C,OAAO,WAAW,EAAE,CAAC;AACtB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,UAAkB;IACnD,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;IACjC,OAAO,MAAM,KAAK,UAAU,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { DecisionAnyMatch, InjectionResult } from "../constants.js";
|
|
2
|
+
import { Label } from "../logger.js";
|
|
3
|
+
import { Metafile } from "../parseTorrent.js";
|
|
4
|
+
import { Result } from "../Result.js";
|
|
5
|
+
import { Searchee, SearcheeWithInfoHash } from "../searchee.js";
|
|
6
|
+
import { ClientSearcheeResult, TorrentClient, TorrentMetadataInClient } from "./TorrentClient.js";
|
|
7
|
+
export default class Deluge implements TorrentClient {
|
|
8
|
+
readonly url: string;
|
|
9
|
+
readonly clientHost: string;
|
|
10
|
+
readonly clientPriority: number;
|
|
11
|
+
readonly clientType = Label.DELUGE;
|
|
12
|
+
readonly readonly: boolean;
|
|
13
|
+
readonly label: string;
|
|
14
|
+
private delugeCookie;
|
|
15
|
+
private delugeLabel;
|
|
16
|
+
private delugeLabelSuffix;
|
|
17
|
+
private isLabelEnabled;
|
|
18
|
+
private delugeRequestId;
|
|
19
|
+
constructor(url: string, clientHost: string, priority: number, readonly: boolean);
|
|
20
|
+
/**
|
|
21
|
+
* validates the login and host for deluge webui
|
|
22
|
+
*/
|
|
23
|
+
validateConfig(): Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* connects and authenticates to the webui
|
|
26
|
+
*/
|
|
27
|
+
private authenticate;
|
|
28
|
+
/**
|
|
29
|
+
* ensures authentication and sends JSON-RPC calls to deluge
|
|
30
|
+
* @param method RPC method to send (usually prefaced with module name)
|
|
31
|
+
* @param params parameters for the method (usually in an array)
|
|
32
|
+
* @param retries specify a retry count (optional)
|
|
33
|
+
* @return a promised Result of the specified ResultType or an ErrorType
|
|
34
|
+
*/
|
|
35
|
+
private call;
|
|
36
|
+
/**
|
|
37
|
+
* parses the set-cookie header and updates stored value
|
|
38
|
+
* @param headers the headers from a request
|
|
39
|
+
*/
|
|
40
|
+
private handleResponseHeaders;
|
|
41
|
+
/**
|
|
42
|
+
* checks enabled plugins for "Label"
|
|
43
|
+
* @return boolean declaring whether the "Label" plugin is enabled
|
|
44
|
+
*/
|
|
45
|
+
private labelEnabled;
|
|
46
|
+
/**
|
|
47
|
+
* checks the status of an infohash in the client and resumes if/when criteria is met
|
|
48
|
+
* @param meta MetaFile containing torrent being resumed
|
|
49
|
+
* @param decision decision by which the newTorrent was matched
|
|
50
|
+
* @param options options object for extra flags
|
|
51
|
+
* @param options.checkOnce boolean to only check for resuming once
|
|
52
|
+
* @param options.meta metafile object containing the torrent data
|
|
53
|
+
*/
|
|
54
|
+
resumeInjection(meta: Metafile, decision: DecisionAnyMatch, options: {
|
|
55
|
+
checkOnce: boolean;
|
|
56
|
+
}): Promise<void>;
|
|
57
|
+
/**
|
|
58
|
+
* generates the label for injection based on searchee and torrentInfo
|
|
59
|
+
* @param searchee Searchee that contains the originating torrent
|
|
60
|
+
* @param torrentInfo TorrentInfo from the searchee
|
|
61
|
+
* @return string with the label for the newTorrent
|
|
62
|
+
*/
|
|
63
|
+
private calculateLabel;
|
|
64
|
+
/**
|
|
65
|
+
* if Label plugin is loaded, adds (if necessary)
|
|
66
|
+
* and sets the label based on torrent hash.
|
|
67
|
+
* @param newTorrent the searchee of the newTorrent
|
|
68
|
+
* @param label the destination label for the newTorrent/searchee
|
|
69
|
+
*/
|
|
70
|
+
private setLabel;
|
|
71
|
+
/**
|
|
72
|
+
* injects a torrent into deluge client
|
|
73
|
+
* @param newTorrent injected candidate torrent
|
|
74
|
+
* @param searchee originating torrent (searchee)
|
|
75
|
+
* @param decision decision by which the newTorrent was matched
|
|
76
|
+
* @param options.onlyCompleted boolean to only inject completed torrents
|
|
77
|
+
* @param options.destinationDir location of the linked files (optional)
|
|
78
|
+
* @return InjectionResult of the newTorrent's injection
|
|
79
|
+
*/
|
|
80
|
+
inject(newTorrent: Metafile, searchee: Searchee, decision: DecisionAnyMatch, options: {
|
|
81
|
+
onlyCompleted: boolean;
|
|
82
|
+
destinationDir?: string;
|
|
83
|
+
}): Promise<InjectionResult>;
|
|
84
|
+
recheckTorrent(infoHash: string): Promise<void>;
|
|
85
|
+
/**
|
|
86
|
+
* formats the json for rpc calls to inject
|
|
87
|
+
* @param filename filename for the injecting torrent file
|
|
88
|
+
* @param filedump string with encoded torrent file
|
|
89
|
+
* @param destinationDir path to the torrent data
|
|
90
|
+
* @param toRecheck boolean to recheck the torrent
|
|
91
|
+
*/
|
|
92
|
+
private formatData;
|
|
93
|
+
/**
|
|
94
|
+
* returns directory of an infohash in deluge as a string
|
|
95
|
+
* @param meta SearcheeWithInfoHash or Metafile for torrent to lookup in client
|
|
96
|
+
* @param options options object for extra flags
|
|
97
|
+
* @param options.onlyCompleted boolean to only return a completed torrent
|
|
98
|
+
* @return Result containing either a string with path or reason it was not provided
|
|
99
|
+
*/
|
|
100
|
+
getDownloadDir(meta: SearcheeWithInfoHash | Metafile, options: {
|
|
101
|
+
onlyCompleted: boolean;
|
|
102
|
+
}): Promise<Result<string, "NOT_FOUND" | "TORRENT_NOT_COMPLETE" | "UNKNOWN_ERROR">>;
|
|
103
|
+
/**
|
|
104
|
+
* returns map of hashes and download directories for all torrents
|
|
105
|
+
* @param options.metas array of SearcheeWithInfoHash or Metafile for torrents to lookup in client
|
|
106
|
+
* @param options.onlyCompleted boolean to only return completed torrents
|
|
107
|
+
* @return Promise of a Map with hashes and download directories
|
|
108
|
+
*/
|
|
109
|
+
getAllDownloadDirs(options: {
|
|
110
|
+
onlyCompleted: boolean;
|
|
111
|
+
}): Promise<Map<string, string>>;
|
|
112
|
+
/**
|
|
113
|
+
* checks if a torrent exists in deluge
|
|
114
|
+
* @param inputHash the infoHash of the torrent to check
|
|
115
|
+
* @return Result containing either a boolean or reason it was not provided
|
|
116
|
+
*/
|
|
117
|
+
isTorrentInClient(inputHash: string): Promise<Result<boolean, Error>>;
|
|
118
|
+
/**
|
|
119
|
+
* checks if a torrent is complete in deluge
|
|
120
|
+
* @param infoHash the infoHash of the torrent to check
|
|
121
|
+
* @return Result containing either a boolean or reason it was not provided
|
|
122
|
+
*/
|
|
123
|
+
isTorrentComplete(infoHash: string): Promise<Result<boolean, "NOT_FOUND">>;
|
|
124
|
+
/**
|
|
125
|
+
* checks if a torrent is checking in deluge
|
|
126
|
+
* @param infoHash the infoHash of the torrent to check
|
|
127
|
+
* @return Result containing either a boolean or reason it was not provided
|
|
128
|
+
*/
|
|
129
|
+
isTorrentChecking(infoHash: string): Promise<Result<boolean, "NOT_FOUND">>;
|
|
130
|
+
/**
|
|
131
|
+
* @return All torrents in the client
|
|
132
|
+
*/
|
|
133
|
+
getAllTorrents(): Promise<TorrentMetadataInClient[]>;
|
|
134
|
+
/**
|
|
135
|
+
* Get all searchees from the client and update the db
|
|
136
|
+
* @param options.newSearcheesOnly only return searchees that are not in the db
|
|
137
|
+
* @param options.refresh undefined uses the cache, [] refreshes all searchees, or a list of infoHashes to refresh
|
|
138
|
+
* @return an object containing all searchees and new searchees (refreshed searchees are considered new)
|
|
139
|
+
*/
|
|
140
|
+
getClientSearchees(options?: {
|
|
141
|
+
newSearcheesOnly?: boolean;
|
|
142
|
+
refresh?: string[];
|
|
143
|
+
}): Promise<ClientSearcheeResult>;
|
|
144
|
+
/**
|
|
145
|
+
* returns information needed to complete/validate injection
|
|
146
|
+
* @return Promise of TorrentInfo type
|
|
147
|
+
* @param infoHash infohash to query for in the client
|
|
148
|
+
* @param options options object for extra flags
|
|
149
|
+
* @param options.useVerbose use verbose instead of error logging
|
|
150
|
+
* @return Promise of TorrentInfo type
|
|
151
|
+
*/
|
|
152
|
+
private getTorrentInfo;
|
|
153
|
+
}
|