cross-seed 6.13.3 → 6.13.4-1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/action.js +167 -132
- package/dist/action.js.map +1 -1
- package/dist/configSchema.js +2 -2
- package/dist/configSchema.js.map +1 -1
- package/dist/constants.js +4 -2
- package/dist/constants.js.map +1 -1
- package/dist/db.js +55 -16
- package/dist/db.js.map +1 -1
- package/dist/decide.js +103 -37
- package/dist/decide.js.map +1 -1
- package/dist/inject.js +90 -17
- package/dist/inject.js.map +1 -1
- package/dist/jobs.js +4 -3
- package/dist/jobs.js.map +1 -1
- package/dist/torrent.js +32 -13
- package/dist/torrent.js.map +1 -1
- package/package.json +1 -1
package/dist/constants.js
CHANGED
@@ -26,7 +26,8 @@ export const ARR_DIR_REGEX = /^(?<title>(?!.*(?:(\d{3,4}[ipx])|([xh.]+26[4-6])|(
|
|
26
26
|
export const SONARR_SUBFOLDERS_REGEX = /^(?:S(?:eason )?(?<seasonNum>\d{1,4}))$/i;
|
27
27
|
export const NON_UNICODE_ALPHANUM_REGEX = /[^\p{L}\p{N}]+/giu;
|
28
28
|
export const CALIBRE_INDEXNUM_REGEX = /\s?\(\d+\)$/;
|
29
|
-
export const
|
29
|
+
export const INFOHASH_REGEX = /^[a-z0-9]{40}$/i;
|
30
|
+
export const SAVED_TORRENTS_INFO_REGEX = /^\[(?<mediaType>.+?)\]\[(?<tracker>.+?)\](?<name>.+?)(?:\[(?<infoHash>[a-z0-9]{40})\])?(?<cached>.cached)?\.torrent$/i;
|
30
31
|
export const BAD_GROUP_PARSE_REGEX = /^(?<badmatch>(?:dl|DDP?|aac|eac3|atmos|dts|ma|hd|[heav.c]{3.5}|[xh.]{1,2}[2456]|[0-9]+[ip]?|dxva|full|blu|ray|s(?:eason)?\W\d+|\W){3,})$/i;
|
31
32
|
export const JSON_VALUES_REGEX = /".+?"\s*:\s*"(?<value>.+?)"\s*(?:,|})/g;
|
32
33
|
export const ABS_WIN_PATH_REGEX = /^[a-z]:|^\\/i;
|
@@ -139,6 +140,7 @@ export const ALL_EXTENSIONS = [
|
|
139
140
|
];
|
140
141
|
export const TORRENT_CACHE_FOLDER = "torrent_cache";
|
141
142
|
export const UNKNOWN_TRACKER = "UnknownTracker";
|
143
|
+
export const MAX_PATH_BYTES = 255;
|
142
144
|
export const LEVENSHTEIN_DIVISOR = 3;
|
143
145
|
export var MediaType;
|
144
146
|
(function (MediaType) {
|
@@ -180,7 +182,7 @@ export var Decision;
|
|
180
182
|
Decision["MAGNET_LINK"] = "MAGNET_LINK";
|
181
183
|
Decision["RATE_LIMITED"] = "RATE_LIMITED";
|
182
184
|
/**
|
183
|
-
* Searchee and Candidate
|
185
|
+
* Searchee and Candidate infoHash matches. Usually happens with public
|
184
186
|
* torrents and torrents added by radarr/sonarr before cross-seed on announces.
|
185
187
|
* Useful for the inject job as we ignore INFO_HASH_ALREADY_EXISTS and
|
186
188
|
* for reporting a 204 announce status code instead of 200 from exists.
|
package/dist/constants.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,cAAc,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAElD,MAAM,CAAC,MAAM,YAAY,GAAG,cAAc,CAAC,IAAI,CAAC;AAChD,MAAM,CAAC,MAAM,eAAe,GAAG,cAAc,CAAC,OAAO,CAAC;AACtD,MAAM,CAAC,MAAM,UAAU,GAAG,aAAa,eAAe,EAAE,CAAC;AACzD,MAAM,CAAC,MAAM,WAAW,GAAG,YAAY,CAAC;AACxC,MAAM,CAAC,MAAM,uBAAuB,GAAG,aAAa,CAAC;AACrD,MAAM,CAAC,MAAM,cAAc,GAAG,YAAY,CAAC;AAE3C,MAAM,CAAC,MAAM,QAAQ,GACpB,sPAAsP,CAAC;AACxP,MAAM,CAAC,MAAM,YAAY,GACxB,mPAAmP,CAAC;AACrP,MAAM,CAAC,MAAM,iBAAiB,GAAG,uCAAuC,CAAC;AACzE,MAAM,CAAC,MAAM,YAAY,GACxB,8EAA8E,CAAC;AAChF,MAAM,CAAC,MAAM,gBAAgB,GAC5B,2EAA2E,CAAC;AAC7E,MAAM,CAAC,MAAM,WAAW,GACvB,uEAAuE,CAAC;AACzE,MAAM,CAAC,MAAM,WAAW,GACvB,iUAAiU,CAAC;AACnU,MAAM,CAAC,MAAM,mBAAmB,GAC/B,yGAAyG,CAAC;AAC3G,MAAM,CAAC,MAAM,iBAAiB,GAAG,wBAAwB,CAAC;AAC1D,MAAM,CAAC,MAAM,gBAAgB,GAAG,4CAA4C,CAAC;AAC7E,MAAM,CAAC,MAAM,gBAAgB,GAAG,+BAA+B,CAAC;AAChE,MAAM,CAAC,MAAM,WAAW,GAAG,oCAAoC,CAAC;AAChE,MAAM,CAAC,MAAM,mBAAmB,GAC/B,8CAA8C,CAAC;AAChD,MAAM,CAAC,MAAM,gBAAgB,GAAG,sCAAsC,CAAC;AACvE,MAAM,CAAC,MAAM,iBAAiB,GAAG,kCAAkC,CAAC;AACpE,MAAM,CAAC,MAAM,aAAa,GACzB,6KAA6K,CAAC;AAC/K,MAAM,CAAC,MAAM,uBAAuB,GACnC,0CAA0C,CAAC;AAC5C,MAAM,CAAC,MAAM,0BAA0B,GAAG,mBAAmB,CAAC;AAC9D,MAAM,CAAC,MAAM,sBAAsB,GAAG,aAAa,CAAC;AACpD,MAAM,CAAC,MAAM,yBAAyB,GACrC,
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
|
package/dist/db.js
CHANGED
@@ -9,9 +9,9 @@ import { TORRENT_CACHE_FOLDER } from "./constants.js";
|
|
9
9
|
import { Label, logger } from "./logger.js";
|
10
10
|
import { getRuntimeConfig } from "./runtimeConfig.js";
|
11
11
|
import { migrations } from "./migrations/migrations.js";
|
12
|
-
import { cacheEnsembleTorrentEntry, snatchHistory } from "./torrent.js";
|
13
|
-
import { filterAsync, flatMapAsync, inBatches, Mutex, notExists, withMutex, } from "./utils.js";
|
14
|
-
import { rawGuidInfoHashMap } from "./decide.js";
|
12
|
+
import { cacheEnsembleTorrentEntry, parseMetadataFromFilename, snatchHistory, } from "./torrent.js";
|
13
|
+
import { filterAsync, flatMapAsync, inBatches, Mutex, notExists, withMutex, yieldToEventLoop, } from "./utils.js";
|
14
|
+
import { existsInTorrentCache, rawGuidInfoHashMap } from "./decide.js";
|
15
15
|
const filename = join(appDir(), "cross-seed.db");
|
16
16
|
const rawSqliteHandle = new Sqlite(filename);
|
17
17
|
rawSqliteHandle.pragma("journal_mode = WAL");
|
@@ -22,14 +22,14 @@ export const db = knex({
|
|
22
22
|
migrations: { migrationSource: migrations },
|
23
23
|
useNullAsDefault: true,
|
24
24
|
});
|
25
|
-
export async function cleanupDB() {
|
25
|
+
export async function cleanupDB(options) {
|
26
26
|
const { dataDirs, seasonFromEpisodes, useClientTorrents } = getRuntimeConfig();
|
27
27
|
await (async () => {
|
28
28
|
if (!useClientTorrents)
|
29
29
|
return;
|
30
30
|
logger.verbose({
|
31
31
|
label: Label.CLEANUP,
|
32
|
-
message: "Refreshing all client torrents",
|
32
|
+
message: "Refreshing all client torrents...",
|
33
33
|
});
|
34
34
|
const searchees = await flatMapAsync(getClients(), async (client) => (await client.getClientSearchees({
|
35
35
|
refresh: [],
|
@@ -40,7 +40,7 @@ export async function cleanupDB() {
|
|
40
40
|
return;
|
41
41
|
logger.verbose({
|
42
42
|
label: Label.CLEANUP,
|
43
|
-
message: "Refreshing all ensemble torrents",
|
43
|
+
message: "Refreshing all ensemble torrents...",
|
44
44
|
});
|
45
45
|
const ensembleRows = await flatMapAsync(searchees, async (searchee) => (await cacheEnsembleTorrentEntry(searchee)) ?? []);
|
46
46
|
await inBatches(ensembleRows, async (batch) => {
|
@@ -55,7 +55,7 @@ export async function cleanupDB() {
|
|
55
55
|
return;
|
56
56
|
logger.verbose({
|
57
57
|
label: Label.CLEANUP,
|
58
|
-
message: "Pruning deleted dataDirs entries",
|
58
|
+
message: "Pruning deleted dataDirs entries...",
|
59
59
|
});
|
60
60
|
const deletedPaths = await filterAsync((await db("data").select("path")).map((e) => e.path), (p) => notExists(p));
|
61
61
|
await inBatches(deletedPaths, async (batch) => {
|
@@ -68,7 +68,7 @@ export async function cleanupDB() {
|
|
68
68
|
return;
|
69
69
|
logger.verbose({
|
70
70
|
label: Label.CLEANUP,
|
71
|
-
message: "Pruning deleted ensemble entries",
|
71
|
+
message: "Pruning deleted ensemble entries...",
|
72
72
|
});
|
73
73
|
const deletedPaths = await filterAsync((await db("ensemble").select("path")).map((e) => e.path), (p) => notExists(p));
|
74
74
|
await inBatches(deletedPaths, async (batch) => {
|
@@ -79,7 +79,7 @@ export async function cleanupDB() {
|
|
79
79
|
await (async () => {
|
80
80
|
logger.verbose({
|
81
81
|
label: Label.CLEANUP,
|
82
|
-
message: "Pruning failed snatch history entries",
|
82
|
+
message: "Pruning failed snatch history entries...",
|
83
83
|
});
|
84
84
|
for (const [str, { initialFailureAt, numFailures },] of snatchHistory.entries()) {
|
85
85
|
if (Date.now() - initialFailureAt > ms("1 day")) {
|
@@ -94,29 +94,68 @@ export async function cleanupDB() {
|
|
94
94
|
await (async () => {
|
95
95
|
logger.verbose({
|
96
96
|
label: Label.CLEANUP,
|
97
|
-
message: "Pruning old torrent cache entries",
|
97
|
+
message: "Pruning old torrent cache entries...",
|
98
98
|
});
|
99
99
|
const torrentCacheDir = join(appDir(), TORRENT_CACHE_FOLDER);
|
100
|
-
const
|
100
|
+
const dirEntries = await readdir(torrentCacheDir);
|
101
101
|
const now = Date.now();
|
102
|
-
for (const file of
|
102
|
+
for (const file of dirEntries) {
|
103
103
|
const filePath = join(torrentCacheDir, file);
|
104
104
|
if (now - (await stat(filePath)).atimeMs > ms("1 year")) {
|
105
105
|
logger.verbose({
|
106
106
|
label: Label.CLEANUP,
|
107
107
|
message: `Deleting torrent cache entry for ${filePath}`,
|
108
108
|
});
|
109
|
-
|
110
|
-
|
111
|
-
.
|
109
|
+
let { infoHash } = parseMetadataFromFilename(file);
|
110
|
+
if (!infoHash)
|
111
|
+
infoHash = file.split(".")[0];
|
112
|
+
await db("decision").where("info_hash", infoHash).del();
|
112
113
|
await unlink(filePath);
|
113
114
|
}
|
114
115
|
}
|
115
116
|
})();
|
117
|
+
await (async () => {
|
118
|
+
if (!options?.runAll) {
|
119
|
+
const run_percentage = 0.03; // Roughly once a month if cleanupDB() is called daily. Override with /api/job.
|
120
|
+
if (Math.random() > run_percentage) {
|
121
|
+
logger.verbose({
|
122
|
+
label: Label.CLEANUP,
|
123
|
+
message: `Skipping pruning of invalid decision entries, will run roughly once per month`,
|
124
|
+
});
|
125
|
+
return; // This should rarely be needed, and likely only a few entries. It's slow with with lots of I/O.
|
126
|
+
}
|
127
|
+
}
|
128
|
+
logger.verbose({
|
129
|
+
label: Label.CLEANUP,
|
130
|
+
message: "Pruning invalid decision entries...",
|
131
|
+
});
|
132
|
+
await db("decision").whereNull("info_hash").del();
|
133
|
+
const dbRows = await db("decision")
|
134
|
+
.leftJoin("searchee", "decision.searchee_id", "searchee.id")
|
135
|
+
.select("searchee.name", "decision.info_hash");
|
136
|
+
const invalidInfoHashes = new Set();
|
137
|
+
const dirEntries = await readdir(join(appDir(), TORRENT_CACHE_FOLDER));
|
138
|
+
for (const dbRow of dbRows) {
|
139
|
+
if (!dbRow.info_hash)
|
140
|
+
continue;
|
141
|
+
if (await existsInTorrentCache(dbRow.info_hash, dirEntries)) {
|
142
|
+
continue;
|
143
|
+
}
|
144
|
+
logger.verbose({
|
145
|
+
label: Label.CLEANUP,
|
146
|
+
message: `Deleting invalid decision entries for ${dbRow.info_hash} (related to ${dbRow.name}) - missing .torrent file in cache`,
|
147
|
+
});
|
148
|
+
invalidInfoHashes.add(dbRow.info_hash);
|
149
|
+
await yieldToEventLoop();
|
150
|
+
}
|
151
|
+
await inBatches(Array.from(invalidInfoHashes), async (batch) => {
|
152
|
+
await db("decision").whereIn("info_hash", batch).del();
|
153
|
+
});
|
154
|
+
})();
|
116
155
|
await withMutex(Mutex.CREATE_GUID_INFO_HASH_MAP, { useQueue: true }, async () => {
|
117
156
|
logger.verbose({
|
118
157
|
label: Label.CLEANUP,
|
119
|
-
message: "Rebuilding guidInfoHashMap",
|
158
|
+
message: "Rebuilding guidInfoHashMap...",
|
120
159
|
});
|
121
160
|
const res = await db("decision")
|
122
161
|
.select("guid", "info_hash")
|
package/dist/db.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
|
package/dist/decide.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
import bencode from "bencode";
|
2
|
-
import { readdir, readFile, stat, unlink, utimes, writeFile, } from "fs/promises";
|
2
|
+
import { readdir, readFile, rename, stat, unlink, utimes, writeFile, } from "fs/promises";
|
3
3
|
import ms from "ms";
|
4
4
|
import path from "path";
|
5
5
|
import { appDir } from "./configuration.js";
|
@@ -8,11 +8,10 @@ import { db } from "./db.js";
|
|
8
8
|
import { Label, logger } from "./logger.js";
|
9
9
|
import { Metafile } from "./parseTorrent.js";
|
10
10
|
import { findBlockedStringInReleaseMaybe, isSingleEpisode, } from "./preFilter.js";
|
11
|
-
import { resultOf, resultOfErr } from "./Result.js";
|
12
11
|
import { getRuntimeConfig } from "./runtimeConfig.js";
|
13
12
|
import { getFuzzySizeFactor, getMediaType, getMinSizeRatio, getReleaseGroup, } from "./searchee.js";
|
14
|
-
import { parseTorrentFromFilename, snatch, SnatchError } from "./torrent.js";
|
15
|
-
import { extractInt, getLogString, Mutex, notExists, sanitizeInfoHash, stripExtension, withMutex, } from "./utils.js";
|
13
|
+
import { getTorrentSavePath, parseMetadataFromFilename, parseTorrentFromFilename, snatch, SnatchError, } from "./torrent.js";
|
14
|
+
import { exists, extractInt, getLogString, Mutex, notExists, sanitizeInfoHash, stripExtension, withMutex, } from "./utils.js";
|
16
15
|
function logDecision(searchee, candidate, decision, metafile, tracker, options) {
|
17
16
|
const { blockList, matchMode } = getRuntimeConfig(options?.configOverride);
|
18
17
|
let reason;
|
@@ -54,10 +53,10 @@ function logDecision(searchee, candidate, decision, metafile, tracker, options)
|
|
54
53
|
reason = `some files are missing or have different sizes${compareFileTreesPartial(metafile, searchee) ? ` (will match in partial match mode)` : ""}`;
|
55
54
|
break;
|
56
55
|
case Decision.SAME_INFO_HASH:
|
57
|
-
reason = "the
|
56
|
+
reason = "the infoHash is the same";
|
58
57
|
break;
|
59
58
|
case Decision.INFO_HASH_ALREADY_EXISTS:
|
60
|
-
reason = "the
|
59
|
+
reason = "the infoHash matches a torrent you already have";
|
61
60
|
break;
|
62
61
|
case Decision.FILE_TREE_MISMATCH:
|
63
62
|
reason = `it has a different file tree${matchMode === MatchMode.STRICT ? " (will match in flexible or partial matchMode)" : ""}`;
|
@@ -214,7 +213,7 @@ function releaseVersionDoesMatch(searcheeName, candidateName) {
|
|
214
213
|
return (REPACK_PROPER_REGEX.test(searcheeName) ===
|
215
214
|
REPACK_PROPER_REGEX.test(candidateName));
|
216
215
|
}
|
217
|
-
export async function assessCandidate(metaOrCandidate, searchee, infoHashesToExclude, blockList, options) {
|
216
|
+
export async function assessCandidate(metaOrCandidate, searchee, tracker, infoHashesToExclude, blockList, options) {
|
218
217
|
const { includeSingleEpisodes, matchMode } = getRuntimeConfig(options?.configOverride);
|
219
218
|
// When metaOrCandidate is a Metafile, skip straight to the
|
220
219
|
// main matching algorithms as we don't need pre-download filtering.
|
@@ -266,7 +265,7 @@ export async function assessCandidate(metaOrCandidate, searchee, infoHashesToExc
|
|
266
265
|
: { decision: Decision.DOWNLOAD_FAILED };
|
267
266
|
}
|
268
267
|
metafile = res.unwrap();
|
269
|
-
metaCached = await cacheTorrentFile(metafile);
|
268
|
+
metaCached = await cacheTorrentFile(metafile, tracker, searchee.label);
|
270
269
|
metaOrCandidate.size = metafile.length; // Trackers can be wrong
|
271
270
|
}
|
272
271
|
else {
|
@@ -319,35 +318,105 @@ export async function assessCandidate(metaOrCandidate, searchee, infoHashesToExc
|
|
319
318
|
}
|
320
319
|
return { decision: Decision.FILE_TREE_MISMATCH, metafile, metaCached };
|
321
320
|
}
|
322
|
-
async function existsInTorrentCache(
|
323
|
-
const
|
324
|
-
|
325
|
-
|
321
|
+
export async function existsInTorrentCache(inputInfoHash, dirEntries = null) {
|
322
|
+
const torrentCacheDir = path.join(appDir(), TORRENT_CACHE_FOLDER);
|
323
|
+
let torrentPath = path.join(torrentCacheDir, `${inputInfoHash}.cached.torrent`);
|
324
|
+
let isLegacy = false;
|
325
|
+
if (await notExists(torrentPath)) {
|
326
|
+
torrentPath = null;
|
327
|
+
if (!dirEntries)
|
328
|
+
dirEntries = await readdir(torrentCacheDir);
|
329
|
+
for (const file of dirEntries) {
|
330
|
+
const { infoHash } = parseMetadataFromFilename(file);
|
331
|
+
if (infoHash !== inputInfoHash)
|
332
|
+
continue;
|
333
|
+
torrentPath = path.join(torrentCacheDir, file);
|
334
|
+
break;
|
335
|
+
}
|
336
|
+
if (!torrentPath)
|
337
|
+
return null;
|
338
|
+
}
|
339
|
+
else {
|
340
|
+
isLegacy = true;
|
341
|
+
}
|
326
342
|
await utimes(torrentPath, new Date(), (await stat(torrentPath)).mtime);
|
327
|
-
return
|
343
|
+
return { torrentPath, isLegacy };
|
328
344
|
}
|
329
|
-
async function getCachedTorrentFile(infoHash, searcheeLabel, options = { deleteOnFail: true }) {
|
330
|
-
|
345
|
+
async function getCachedTorrentFile(infoHash, tracker, searcheeLabel, options = { deleteOnFail: true }) {
|
346
|
+
if (!infoHash)
|
347
|
+
return null;
|
348
|
+
const existsRes = await existsInTorrentCache(infoHash);
|
349
|
+
if (!existsRes)
|
350
|
+
return null;
|
351
|
+
let { torrentPath } = existsRes;
|
352
|
+
let meta;
|
331
353
|
try {
|
332
|
-
|
354
|
+
meta = await parseTorrentFromFilename(torrentPath);
|
333
355
|
}
|
334
356
|
catch (e) {
|
335
357
|
logger.error({
|
336
358
|
label: `${searcheeLabel}/${Label.DECIDE}`,
|
337
|
-
message: `Failed to parse cached torrent ${sanitizeInfoHash(infoHash)}${options.deleteOnFail ? " - deleting" : ""}: ${e.message}`,
|
359
|
+
message: `Failed to parse cached torrent ${torrentPath.replace(infoHash, sanitizeInfoHash(infoHash))}${options.deleteOnFail ? " - deleting" : ""}: ${e.message}`,
|
338
360
|
});
|
339
361
|
logger.debug(e);
|
340
|
-
|
341
|
-
|
342
|
-
|
362
|
+
try {
|
363
|
+
if (options.deleteOnFail)
|
364
|
+
await unlink(torrentPath);
|
365
|
+
}
|
366
|
+
catch (e) {
|
367
|
+
if (await exists(torrentPath)) {
|
368
|
+
logger.error({
|
369
|
+
label: `${searcheeLabel}/${Label.DECIDE}`,
|
370
|
+
message: `Failed to delete corrupted cached torrent ${torrentPath.replace(infoHash, sanitizeInfoHash(infoHash))}: ${e.message}`,
|
371
|
+
});
|
372
|
+
logger.debug(e);
|
373
|
+
}
|
374
|
+
}
|
375
|
+
return null;
|
343
376
|
}
|
377
|
+
if (existsRes.isLegacy) {
|
378
|
+
try {
|
379
|
+
const newPath = getTorrentSavePath(meta, getMediaType(meta), tracker, path.join(appDir(), TORRENT_CACHE_FOLDER), { cached: true });
|
380
|
+
try {
|
381
|
+
await rename(torrentPath, newPath);
|
382
|
+
}
|
383
|
+
catch (e) {
|
384
|
+
if (await notExists(newPath))
|
385
|
+
throw e;
|
386
|
+
}
|
387
|
+
torrentPath = newPath;
|
388
|
+
try {
|
389
|
+
await unlink(torrentPath);
|
390
|
+
}
|
391
|
+
catch (e) {
|
392
|
+
if (await exists(torrentPath))
|
393
|
+
throw e;
|
394
|
+
}
|
395
|
+
}
|
396
|
+
catch (e) {
|
397
|
+
logger.error({
|
398
|
+
label: `${searcheeLabel}/${Label.DECIDE}`,
|
399
|
+
message: `Error while renaming cached torrent ${getLogString(meta)}: ${e.message}`,
|
400
|
+
});
|
401
|
+
logger.debug(e);
|
402
|
+
}
|
403
|
+
}
|
404
|
+
return { meta, torrentPath };
|
344
405
|
}
|
345
|
-
async function cacheTorrentFile(meta) {
|
346
|
-
|
406
|
+
async function cacheTorrentFile(meta, tracker, searcheeLabel) {
|
407
|
+
try {
|
408
|
+
const torrentPath = getTorrentSavePath(meta, getMediaType(meta), tracker, path.join(appDir(), TORRENT_CACHE_FOLDER), { cached: true });
|
409
|
+
await writeFile(torrentPath, new Uint8Array(meta.encode()));
|
410
|
+
return true;
|
411
|
+
}
|
412
|
+
catch (e) {
|
413
|
+
logger.error({
|
414
|
+
label: `${searcheeLabel}/${Label.DECIDE}`,
|
415
|
+
message: `Failed to cache torrent ${getLogString(meta)}: ${e.message}`,
|
416
|
+
});
|
417
|
+
logger.debug(e);
|
347
418
|
return false;
|
348
|
-
|
349
|
-
await writeFile(torrentPath, new Uint8Array(meta.encode()));
|
350
|
-
return true;
|
419
|
+
}
|
351
420
|
}
|
352
421
|
export async function updateTorrentCache(oldStr, newStr) {
|
353
422
|
const torrentCacheDir = path.join(appDir(), TORRENT_CACHE_FOLDER);
|
@@ -394,9 +463,9 @@ export async function updateTorrentCache(oldStr, newStr) {
|
|
394
463
|
}
|
395
464
|
}
|
396
465
|
}
|
397
|
-
async function assessAndSaveResults(metaOrCandidate, searchee, guid, infoHashesToExclude, firstSeen, guidInfoHashMap, options) {
|
466
|
+
async function assessAndSaveResults(metaOrCandidate, searchee, guid, tracker, infoHashesToExclude, firstSeen, guidInfoHashMap, options) {
|
398
467
|
const { blockList } = getRuntimeConfig(options?.configOverride);
|
399
|
-
const assessment = await assessCandidate(metaOrCandidate, searchee, infoHashesToExclude, blockList, options);
|
468
|
+
const assessment = await assessCandidate(metaOrCandidate, searchee, tracker, infoHashesToExclude, blockList, options);
|
400
469
|
if (assessment.metaCached && assessment.metafile) {
|
401
470
|
guidInfoHashMap.set(guid, assessment.metafile.infoHash);
|
402
471
|
await db.transaction(async (trx) => {
|
@@ -439,8 +508,8 @@ export async function getGuidInfoHashMap() {
|
|
439
508
|
* Some trackers have alt titles which get their own guid but resolve to same torrent
|
440
509
|
* @param guid The guid of the candidate
|
441
510
|
* @param link The link of the candidate
|
442
|
-
* @param guidInfoHashMap The map of guids to
|
443
|
-
* @returns The
|
511
|
+
* @param guidInfoHashMap The map of guids to infoHashes. Necessary for optimal fuzzy lookups.
|
512
|
+
* @returns The infoHash of the torrent if found
|
444
513
|
*/
|
445
514
|
function guidLookup(guid, link, guidInfoHashMap) {
|
446
515
|
const infoHash = guidInfoHashMap.get(guid) ?? guidInfoHashMap.get(link);
|
@@ -470,16 +539,13 @@ export async function assessCandidateCaching(candidate, searchee, infoHashesToEx
|
|
470
539
|
.join("searchee", "decision.searchee_id", "searchee.id")
|
471
540
|
.where({ name: searchee.title, guid })
|
472
541
|
.first();
|
473
|
-
const
|
474
|
-
const
|
475
|
-
|
476
|
-
? (await getCachedTorrentFile(metaInfoHash, searchee.label)).orElse(candidate)
|
477
|
-
: candidate
|
478
|
-
: candidate;
|
542
|
+
const infoHash = guidLookup(guid, link, guidInfoHashMap);
|
543
|
+
const res = await getCachedTorrentFile(infoHash, tracker, searchee.label);
|
544
|
+
const metaOrCandidate = res?.meta ?? candidate;
|
479
545
|
if (metaOrCandidate instanceof Metafile) {
|
480
546
|
logger.verbose({
|
481
547
|
label: `${searchee.label}/${Label.DECIDE}`,
|
482
|
-
message: `Using cached torrent
|
548
|
+
message: `Using cached torrent for ${tracker} assessment ${name}: ${res.torrentPath.replace(metaOrCandidate.infoHash, sanitizeInfoHash(metaOrCandidate.infoHash))}`,
|
483
549
|
});
|
484
550
|
candidate.size = metaOrCandidate.length; // Trackers can be wrong
|
485
551
|
}
|
@@ -497,7 +563,7 @@ export async function assessCandidateCaching(candidate, searchee, infoHashesToEx
|
|
497
563
|
});
|
498
564
|
}
|
499
565
|
else {
|
500
|
-
assessment = await assessAndSaveResults(metaOrCandidate, searchee, guid, infoHashesToExclude, cacheEntry?.firstSeen ?? Date.now(), guidInfoHashMap, options);
|
566
|
+
assessment = await assessAndSaveResults(metaOrCandidate, searchee, guid, tracker, infoHashesToExclude, cacheEntry?.firstSeen ?? Date.now(), guidInfoHashMap, options);
|
501
567
|
}
|
502
568
|
logDecision(searchee, candidate, assessment.decision, assessment.metafile, tracker, options);
|
503
569
|
return assessment;
|
package/dist/decide.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"decide.js","sourceRoot":"","sources":["../src/decide.ts"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"decide.js","sourceRoot":"","sources":["../src/decide.ts"],"names":[],"mappings":"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"}
|