cross-seed 6.0.0-0 → 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/README.md +6 -0
- package/dist/Result.js +17 -11
- package/dist/Result.js.map +1 -1
- package/dist/action.js +87 -58
- 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 +146 -74
- package/dist/clients/Deluge.js.map +1 -1
- package/dist/clients/QBittorrent.js +191 -115
- package/dist/clients/QBittorrent.js.map +1 -1
- package/dist/clients/RTorrent.js +6 -10
- package/dist/clients/RTorrent.js.map +1 -1
- package/dist/clients/TorrentClient.js.map +1 -1
- package/dist/clients/Transmission.js +5 -7
- package/dist/clients/Transmission.js.map +1 -1
- package/dist/cmd.js +23 -6
- package/dist/cmd.js.map +1 -1
- package/dist/config.template.cjs +80 -31
- package/dist/config.template.cjs.map +1 -1
- package/dist/configSchema.js +44 -35
- package/dist/configSchema.js.map +1 -1
- package/dist/configuration.js.map +1 -1
- package/dist/constants.js +65 -4
- package/dist/constants.js.map +1 -1
- package/dist/decide.js +143 -78
- 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 +86 -19
- package/dist/utils.js.map +1 -1
- package/package.json +4 -13
package/dist/torznab.js
CHANGED
@@ -1,22 +1,14 @@
|
|
1
1
|
import ms from "ms";
|
2
2
|
import xml2js from "xml2js";
|
3
|
-
import {
|
3
|
+
import { scanAllArrsForMedia, getRelevantArrIds, formatFoundIds, } from "./arr.js";
|
4
|
+
import { EP_REGEX, SEASON_REGEX, UNKNOWN_TRACKER, USER_AGENT, } from "./constants.js";
|
4
5
|
import { db } from "./db.js";
|
5
6
|
import { CrossSeedError } from "./errors.js";
|
6
|
-
import { getEnabledIndexers, IndexerStatus, updateIndexerStatus, } from "./indexers.js";
|
7
|
+
import { getAllIndexers, getEnabledIndexers, IndexerStatus, updateIndexerStatus, } from "./indexers.js";
|
7
8
|
import { Label, logger } from "./logger.js";
|
8
9
|
import { getRuntimeConfig } from "./runtimeConfig.js";
|
9
|
-
import {
|
10
|
-
import
|
11
|
-
function sanitizeUrl(url) {
|
12
|
-
if (typeof url === "string") {
|
13
|
-
url = new URL(url);
|
14
|
-
}
|
15
|
-
return url.origin + url.pathname;
|
16
|
-
}
|
17
|
-
function getApikey(url) {
|
18
|
-
return new URL(url).searchParams.get("apikey");
|
19
|
-
}
|
10
|
+
import { cleanseSeparators, formatAsList, getAnimeQueries, getApikey, getLogString, getMediaType, isTruthy, MediaType, nMsAgo, reformatTitleForSearching, sanitizeUrl, stripExtension, } from "./utils.js";
|
11
|
+
import chalk from "chalk";
|
20
12
|
function parseTorznabResults(xml) {
|
21
13
|
const items = xml?.rss?.channel?.[0]?.item;
|
22
14
|
if (!items || !Array.isArray(items)) {
|
@@ -28,54 +20,108 @@ function parseTorznabResults(xml) {
|
|
28
20
|
tracker: item?.prowlarrindexer?.[0]?._ ??
|
29
21
|
item?.jackettindexer?.[0]?._ ??
|
30
22
|
item?.indexer?.[0]?._ ??
|
31
|
-
|
23
|
+
UNKNOWN_TRACKER,
|
32
24
|
link: item.link[0],
|
33
25
|
size: Number(item.size[0]),
|
34
26
|
pubDate: new Date(item.pubDate[0]).getTime(),
|
35
27
|
}));
|
36
28
|
}
|
37
29
|
function parseTorznabCaps(xml) {
|
38
|
-
const
|
30
|
+
const searchingSection = xml?.caps?.searching?.[0];
|
39
31
|
const isAvailable = (searchTechnique) => searchTechnique?.[0]?.$?.available === "yes";
|
32
|
+
function getSupportedIds(searchTechnique) {
|
33
|
+
const supportedParamsStr = searchTechnique?.[0]?.$?.supportedParams;
|
34
|
+
const supportedIds = supportedParamsStr
|
35
|
+
?.split(",")
|
36
|
+
?.filter((token) => token.includes("id")) ?? [];
|
37
|
+
return {
|
38
|
+
tvdbId: supportedIds.includes("tvdbid"),
|
39
|
+
tmdbId: supportedIds.includes("tmdbid"),
|
40
|
+
imdbId: supportedIds.includes("imdbid"),
|
41
|
+
};
|
42
|
+
}
|
43
|
+
const categoryCaps = xml?.caps?.categories?.[0]?.category;
|
44
|
+
function getCatCaps(item) {
|
45
|
+
const categoryNames = (item ?? []).map((category) => category.$.name);
|
46
|
+
function indexerDoesSupportCat(category) {
|
47
|
+
return categoryNames.some((cat) => cat.toLowerCase().includes(category));
|
48
|
+
}
|
49
|
+
return {
|
50
|
+
movie: indexerDoesSupportCat("movie"),
|
51
|
+
tv: indexerDoesSupportCat("tv"),
|
52
|
+
anime: indexerDoesSupportCat("anime"),
|
53
|
+
audio: indexerDoesSupportCat("audio"),
|
54
|
+
book: indexerDoesSupportCat("book"),
|
55
|
+
};
|
56
|
+
}
|
40
57
|
return {
|
41
|
-
search: Boolean(isAvailable(
|
42
|
-
tvSearch: Boolean(isAvailable(
|
43
|
-
movieSearch: Boolean(isAvailable(
|
58
|
+
search: Boolean(isAvailable(searchingSection?.search)),
|
59
|
+
tvSearch: Boolean(isAvailable(searchingSection?.["tv-search"])),
|
60
|
+
movieSearch: Boolean(isAvailable(searchingSection?.["movie-search"])),
|
61
|
+
movieIdSearch: getSupportedIds(searchingSection?.["movie-search"]),
|
62
|
+
tvIdSearch: getSupportedIds(searchingSection?.["tv-search"]),
|
63
|
+
categories: getCatCaps(categoryCaps),
|
44
64
|
};
|
45
65
|
}
|
46
|
-
function createTorznabSearchQueries(searchee, caps) {
|
47
|
-
const
|
48
|
-
const isVideo = hasVideo(searchee);
|
66
|
+
async function createTorznabSearchQueries(searchee, mediaType, caps, parsedMedia) {
|
67
|
+
const stem = stripExtension(searchee.name);
|
49
68
|
const extractNumber = (str) => parseInt(str.match(/\d+/)[0]);
|
50
|
-
|
69
|
+
let relevantIds = {};
|
70
|
+
if (parsedMedia) {
|
71
|
+
relevantIds = await getRelevantArrIds(caps, parsedMedia);
|
72
|
+
}
|
73
|
+
const useIds = Object.values(relevantIds).some(isTruthy);
|
51
74
|
if (mediaType === MediaType.EPISODE && caps.tvSearch) {
|
52
|
-
const match =
|
75
|
+
const match = stem.match(EP_REGEX);
|
76
|
+
const groups = match.groups;
|
53
77
|
return [
|
54
78
|
{
|
55
79
|
t: "tvsearch",
|
56
|
-
q: cleanseSeparators(
|
57
|
-
season:
|
58
|
-
? extractNumber(
|
59
|
-
:
|
60
|
-
ep:
|
61
|
-
? extractNumber(
|
62
|
-
: `${
|
80
|
+
q: useIds ? undefined : cleanseSeparators(groups.title),
|
81
|
+
season: groups.season
|
82
|
+
? extractNumber(groups.season)
|
83
|
+
: groups.year,
|
84
|
+
ep: groups.episode
|
85
|
+
? extractNumber(groups.episode)
|
86
|
+
: `${groups.month}/${groups.day}`,
|
87
|
+
...relevantIds,
|
63
88
|
},
|
64
89
|
];
|
65
90
|
}
|
66
91
|
else if (mediaType === MediaType.SEASON && caps.tvSearch) {
|
67
|
-
const match =
|
92
|
+
const match = stem.match(SEASON_REGEX);
|
93
|
+
const groups = match.groups;
|
68
94
|
return [
|
69
95
|
{
|
70
96
|
t: "tvsearch",
|
71
|
-
q: cleanseSeparators(
|
72
|
-
season: extractNumber(
|
97
|
+
q: useIds ? undefined : cleanseSeparators(groups.title),
|
98
|
+
season: extractNumber(groups.season),
|
99
|
+
...relevantIds,
|
73
100
|
},
|
74
101
|
];
|
75
102
|
}
|
103
|
+
else if (mediaType === MediaType.MOVIE && caps.movieSearch) {
|
104
|
+
return [
|
105
|
+
{
|
106
|
+
t: "movie",
|
107
|
+
q: useIds ? undefined : reformatTitleForSearching(stem),
|
108
|
+
...relevantIds,
|
109
|
+
},
|
110
|
+
];
|
111
|
+
}
|
112
|
+
if (useIds && caps.tvSearch && parsedMedia?.series) {
|
113
|
+
const eps = parsedMedia.episodes;
|
114
|
+
const season = eps.length > 0 ? eps[0].seasonNumber : undefined;
|
115
|
+
const ep = eps.length === 1 ? eps[0].episodeNumber : undefined;
|
116
|
+
return [
|
117
|
+
{ t: "tvsearch", q: undefined, season, ep, ...relevantIds },
|
118
|
+
];
|
119
|
+
}
|
120
|
+
else if (useIds && caps.movieSearch && parsedMedia?.movie) {
|
121
|
+
return [{ t: "movie", q: undefined, ...relevantIds }];
|
122
|
+
}
|
76
123
|
else if (mediaType === MediaType.ANIME) {
|
77
|
-
|
78
|
-
return animeQueries.map((animeQuery) => ({
|
124
|
+
return getAnimeQueries(stem).map((animeQuery) => ({
|
79
125
|
t: "search",
|
80
126
|
q: animeQuery,
|
81
127
|
}));
|
@@ -84,52 +130,50 @@ function createTorznabSearchQueries(searchee, caps) {
|
|
84
130
|
return [
|
85
131
|
{
|
86
132
|
t: "search",
|
87
|
-
q: reformatTitleForSearching(
|
133
|
+
q: reformatTitleForSearching(stem),
|
88
134
|
},
|
89
135
|
];
|
90
136
|
}
|
91
137
|
}
|
138
|
+
export function indexerDoesSupportMediaType(mediaType, caps) {
|
139
|
+
switch (mediaType) {
|
140
|
+
case MediaType.EPISODE:
|
141
|
+
case MediaType.SEASON:
|
142
|
+
return caps.tv;
|
143
|
+
case MediaType.MOVIE: // Should get most anime movies
|
144
|
+
return caps.movie;
|
145
|
+
case MediaType.ANIME: // All? indexers support anime (sometimes no cat)
|
146
|
+
return caps.anime || caps.tv || caps.movie;
|
147
|
+
case MediaType.AUDIO:
|
148
|
+
return caps.audio;
|
149
|
+
case MediaType.BOOK:
|
150
|
+
return caps.book;
|
151
|
+
case MediaType.OTHER:
|
152
|
+
return true;
|
153
|
+
}
|
154
|
+
}
|
92
155
|
export async function queryRssFeeds() {
|
93
|
-
const candidatesByUrl = await makeRequests(await getEnabledIndexers(), () => [{ t: "search", q: "" }]);
|
156
|
+
const candidatesByUrl = await makeRequests(await getEnabledIndexers(), async () => [{ t: "search", q: "" }]);
|
94
157
|
return candidatesByUrl.flatMap((e) => e.candidates);
|
95
158
|
}
|
96
|
-
export async function searchTorznab(searchee) {
|
97
|
-
const {
|
159
|
+
export async function searchTorznab(searchee, progress) {
|
160
|
+
const { torznab } = getRuntimeConfig();
|
98
161
|
if (torznab.length === 0) {
|
99
162
|
throw new Error("no indexers are available");
|
100
163
|
}
|
101
|
-
const
|
102
|
-
const
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
});
|
114
|
-
const indexersToUse = enabledIndexers.filter((indexer) => {
|
115
|
-
const entry = timestampDataSql.find((entry) => entry.indexerId === indexer.id);
|
116
|
-
return (!entry ||
|
117
|
-
((!excludeOlder || entry.firstSearched > nMsAgo(excludeOlder)) &&
|
118
|
-
(!excludeRecentSearch ||
|
119
|
-
entry.lastSearched < nMsAgo(excludeRecentSearch))));
|
164
|
+
const mediaType = getMediaType(searchee);
|
165
|
+
const { indexersToUse, parsedMedia } = await getAndLogIndexers(searchee, mediaType, progress);
|
166
|
+
return await makeRequests(indexersToUse, async (indexer) => {
|
167
|
+
const caps = {
|
168
|
+
search: indexer.searchCap,
|
169
|
+
tvSearch: indexer.tvSearchCap,
|
170
|
+
movieSearch: indexer.movieSearchCap,
|
171
|
+
tvIdSearch: JSON.parse(indexer.tvIdCaps),
|
172
|
+
movieIdSearch: JSON.parse(indexer.movieIdCaps),
|
173
|
+
categories: JSON.parse(indexer.categories),
|
174
|
+
};
|
175
|
+
return await createTorznabSearchQueries(searchee, mediaType, caps, parsedMedia);
|
120
176
|
});
|
121
|
-
const timestampCallout = " (filtered by timestamps)";
|
122
|
-
logger.info({
|
123
|
-
label: Label.TORZNAB,
|
124
|
-
message: `Searching ${indexersToUse.length} indexers for ${name}${indexersToUse.length < enabledIndexers.length
|
125
|
-
? timestampCallout
|
126
|
-
: ""}`,
|
127
|
-
});
|
128
|
-
return makeRequests(indexersToUse, (indexer) => createTorznabSearchQueries(searchee, {
|
129
|
-
search: indexer.searchCap,
|
130
|
-
tvSearch: indexer.tvSearchCap,
|
131
|
-
movieSearch: indexer.movieSearchCap,
|
132
|
-
}));
|
133
177
|
}
|
134
178
|
export async function syncWithDb() {
|
135
179
|
const { torznab } = getRuntimeConfig();
|
@@ -144,7 +188,10 @@ export async function syncWithDb() {
|
|
144
188
|
retryAfter: "retry_after",
|
145
189
|
searchCap: "search_cap",
|
146
190
|
tvSearchCap: "tv_search_cap",
|
191
|
+
tvIdCaps: "tv_id_caps",
|
147
192
|
movieSearchCap: "movie_search_cap",
|
193
|
+
movieIdCaps: "movie_id_caps",
|
194
|
+
categories: "cat_caps",
|
148
195
|
});
|
149
196
|
const inConfigButNotInDb = torznab.filter((configIndexer) => !dbIndexers.some((dbIndexer) => dbIndexer.url === sanitizeUrl(configIndexer)));
|
150
197
|
const inDbButNotInConfig = dbIndexers.filter((dbIndexer) => !torznab.some((configIndexer) => sanitizeUrl(configIndexer) === dbIndexer.url));
|
@@ -186,7 +233,7 @@ export async function syncWithDb() {
|
|
186
233
|
.update({ status: IndexerStatus.OK });
|
187
234
|
});
|
188
235
|
}
|
189
|
-
function assembleUrl(urlStr, apikey, params) {
|
236
|
+
export function assembleUrl(urlStr, apikey, params) {
|
190
237
|
const url = new URL(urlStr);
|
191
238
|
const searchParams = new URLSearchParams();
|
192
239
|
searchParams.set("apikey", apikey);
|
@@ -204,14 +251,14 @@ async function fetchCaps(indexer) {
|
|
204
251
|
}
|
205
252
|
catch (e) {
|
206
253
|
const error = new Error(`Indexer ${indexer.url} failed to respond, check verbose logs`);
|
207
|
-
logger.error(error);
|
254
|
+
logger.error(error.message);
|
208
255
|
logger.debug(e);
|
209
256
|
throw error;
|
210
257
|
}
|
211
258
|
const responseText = await response.text();
|
212
259
|
if (!response.ok) {
|
213
260
|
const error = new Error(`Indexer ${indexer.url} responded with code ${response.status} when fetching caps, check verbose logs`);
|
214
|
-
logger.error(error);
|
261
|
+
logger.error(error.message);
|
215
262
|
logger.debug(`Response body first 1000 characters: ${responseText.substring(0, 1000)}`);
|
216
263
|
throw error;
|
217
264
|
}
|
@@ -221,7 +268,7 @@ async function fetchCaps(indexer) {
|
|
221
268
|
}
|
222
269
|
catch (_) {
|
223
270
|
const error = new Error(`Indexer ${indexer.url} responded with invalid XML when fetching caps, check verbose logs`);
|
224
|
-
logger.error(error);
|
271
|
+
logger.error(error.message);
|
225
272
|
logger.debug(`Response body first 1000 characters: ${responseText.substring(0, 1000)}`);
|
226
273
|
throw error;
|
227
274
|
}
|
@@ -241,10 +288,15 @@ async function updateCaps(indexers) {
|
|
241
288
|
const outcomes = await Promise.allSettled(indexers.map((indexer) => fetchCaps(indexer)));
|
242
289
|
const { fulfilled } = collateOutcomes(indexers.map((i) => i.id), outcomes);
|
243
290
|
for (const [indexerId, caps] of fulfilled) {
|
244
|
-
await db("indexer")
|
291
|
+
await db("indexer")
|
292
|
+
.where({ id: indexerId })
|
293
|
+
.update({
|
245
294
|
search_cap: caps.search,
|
246
295
|
tv_search_cap: caps.tvSearch,
|
247
296
|
movie_search_cap: caps.movieSearch,
|
297
|
+
movie_id_caps: JSON.stringify(caps.movieIdSearch),
|
298
|
+
tv_id_caps: JSON.stringify(caps.tvIdSearch),
|
299
|
+
cat_caps: JSON.stringify(caps.categories),
|
248
300
|
});
|
249
301
|
}
|
250
302
|
}
|
@@ -262,16 +314,8 @@ export async function validateTorznabUrls() {
|
|
262
314
|
}
|
263
315
|
}
|
264
316
|
await syncWithDb();
|
265
|
-
const
|
266
|
-
|
267
|
-
active: true,
|
268
|
-
search_cap: null,
|
269
|
-
tv_search_cap: null,
|
270
|
-
movie_search_cap: null,
|
271
|
-
})
|
272
|
-
.orWhere({ search_cap: false, active: true })
|
273
|
-
.select({ id: "id", url: "url", apikey: "apikey" });
|
274
|
-
await updateCaps(enabledIndexersWithoutCaps);
|
317
|
+
const allIndexers = await getAllIndexers();
|
318
|
+
await updateCaps(allIndexers);
|
275
319
|
const indexersWithoutSearch = await db("indexer")
|
276
320
|
.where({ search_cap: false, active: true })
|
277
321
|
.select({ id: "id", url: "url" });
|
@@ -285,7 +329,7 @@ export async function validateTorznabUrls() {
|
|
285
329
|
}
|
286
330
|
async function makeRequests(indexers, getQueries) {
|
287
331
|
const { searchTimeout } = getRuntimeConfig();
|
288
|
-
const searchUrls = indexers.flatMap((indexer) => getQueries(indexer).map((query) => assembleUrl(indexer.url, indexer.apikey, query)));
|
332
|
+
const searchUrls = await Promise.all(indexers.flatMap(async (indexer) => (await getQueries(indexer)).map((query) => assembleUrl(indexer.url, indexer.apikey, query)))).then((urls) => urls.flat());
|
289
333
|
searchUrls.forEach((message) => void logger.verbose({ label: Label.TORZNAB, message }));
|
290
334
|
const abortControllers = searchUrls.map(() => new AbortController());
|
291
335
|
if (typeof searchTimeout === "number") {
|
@@ -330,4 +374,63 @@ async function makeRequests(indexers, getQueries) {
|
|
330
374
|
candidates: results,
|
331
375
|
}));
|
332
376
|
}
|
377
|
+
async function getAndLogIndexers(searchee, mediaType, progress) {
|
378
|
+
const { excludeRecentSearch, excludeOlder } = getRuntimeConfig();
|
379
|
+
const searcheeLog = getLogString(searchee, chalk.bold.white);
|
380
|
+
const mediaTypeLog = chalk.white(mediaType.toUpperCase());
|
381
|
+
const enabledIndexers = await getEnabledIndexers();
|
382
|
+
// search history for name across all indexers
|
383
|
+
const name = searchee.name;
|
384
|
+
const timestampDataSql = await db("searchee")
|
385
|
+
.join("timestamp", "searchee.id", "timestamp.searchee_id")
|
386
|
+
.join("indexer", "timestamp.indexer_id", "indexer.id")
|
387
|
+
.whereIn("indexer.id", enabledIndexers.map((i) => i.id))
|
388
|
+
.andWhere({ name })
|
389
|
+
.select({
|
390
|
+
indexerId: "indexer.id",
|
391
|
+
firstSearched: "timestamp.first_searched",
|
392
|
+
lastSearched: "timestamp.last_searched",
|
393
|
+
});
|
394
|
+
const skipBefore = excludeOlder
|
395
|
+
? nMsAgo(excludeOlder)
|
396
|
+
: Number.NEGATIVE_INFINITY;
|
397
|
+
const skipAfter = excludeRecentSearch
|
398
|
+
? nMsAgo(excludeRecentSearch)
|
399
|
+
: Number.POSITIVE_INFINITY;
|
400
|
+
const timeFilteredIndexers = enabledIndexers.filter((indexer) => {
|
401
|
+
const entry = timestampDataSql.find((entry) => entry.indexerId === indexer.id);
|
402
|
+
if (!entry)
|
403
|
+
return true;
|
404
|
+
if (entry.firstSearched < skipBefore)
|
405
|
+
return false;
|
406
|
+
if (entry.lastSearched > skipAfter)
|
407
|
+
return false;
|
408
|
+
return true;
|
409
|
+
});
|
410
|
+
const indexersToUse = timeFilteredIndexers.filter((indexer) => {
|
411
|
+
return indexerDoesSupportMediaType(mediaType, JSON.parse(indexer.categories));
|
412
|
+
});
|
413
|
+
const filteringCauses = [
|
414
|
+
enabledIndexers.length > timeFilteredIndexers.length && "timestamps",
|
415
|
+
timeFilteredIndexers.length > indexersToUse.length && "category",
|
416
|
+
].filter(isTruthy);
|
417
|
+
const reasonStr = filteringCauses.length
|
418
|
+
? ` (filtered by ${formatAsList(filteringCauses)})`
|
419
|
+
: "";
|
420
|
+
if (indexersToUse.length === 0) {
|
421
|
+
logger.info(`${progress}Skipped searching on indexers for ${searcheeLog}${reasonStr} | MediaType: ${mediaTypeLog} | IDs: N/A`);
|
422
|
+
return { indexersToUse };
|
423
|
+
}
|
424
|
+
// Parse media from arrs
|
425
|
+
const res = await scanAllArrsForMedia(searchee, mediaType);
|
426
|
+
const parsedMedia = res.isOk() ? res.unwrap() : undefined;
|
427
|
+
const ids = parsedMedia?.movie ?? parsedMedia?.series;
|
428
|
+
const idsStr = ids ? formatFoundIds(ids) : "NONE";
|
429
|
+
logger.info(`${progress}Searching for ${searcheeLog} | MediaType: ${mediaTypeLog} | IDs: ${idsStr}`);
|
430
|
+
logger.verbose({
|
431
|
+
label: Label.TORZNAB,
|
432
|
+
message: `Using ${indexersToUse.length} indexers for ${searcheeLog}${reasonStr}`,
|
433
|
+
});
|
434
|
+
return { indexersToUse, parsedMedia };
|
435
|
+
}
|
333
436
|
//# sourceMappingURL=torznab.js.map
|
package/dist/torznab.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"torznab.js","sourceRoot":"","sources":["../src/torznab.ts"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"torznab.js","sourceRoot":"","sources":["../src/torznab.ts"],"names":[],"mappings":"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"}
|
package/dist/utils.js
CHANGED
@@ -1,19 +1,23 @@
|
|
1
1
|
import path, { basename } from "path";
|
2
|
-
import { EP_REGEX, MOVIE_REGEX,
|
2
|
+
import { ALL_EXTENSIONS, ANIME_REGEX, AUDIO_EXTENSIONS, BOOK_EXTENSIONS, Decision, EP_REGEX, MOVIE_REGEX, SCENE_TITLE_REGEX, SEASON_REGEX, VIDEO_EXTENSIONS, } from "./constants.js";
|
3
3
|
import { resultOf, resultOfErr } from "./Result.js";
|
4
|
+
import { Metafile } from "./parseTorrent.js";
|
5
|
+
import chalk from "chalk";
|
4
6
|
export var MediaType;
|
5
7
|
(function (MediaType) {
|
6
8
|
MediaType["EPISODE"] = "episode";
|
7
9
|
MediaType["SEASON"] = "pack";
|
8
10
|
MediaType["MOVIE"] = "movie";
|
9
11
|
MediaType["ANIME"] = "anime";
|
12
|
+
MediaType["AUDIO"] = "audio";
|
13
|
+
MediaType["BOOK"] = "book";
|
10
14
|
MediaType["OTHER"] = "unknown";
|
11
15
|
})(MediaType || (MediaType = {}));
|
12
16
|
export function isTruthy(value) {
|
13
17
|
return Boolean(value);
|
14
18
|
}
|
15
19
|
export function stripExtension(filename) {
|
16
|
-
for (const ext of
|
20
|
+
for (const ext of ALL_EXTENSIONS) {
|
17
21
|
if (filename.endsWith(ext))
|
18
22
|
return basename(filename, ext);
|
19
23
|
}
|
@@ -29,20 +33,55 @@ export function humanReadableSize(bytes) {
|
|
29
33
|
const k = 1000;
|
30
34
|
const sizes = ["B", "kB", "MB", "GB", "TB"];
|
31
35
|
// engineering notation: (coefficient) * 1000 ^ (exponent)
|
32
|
-
const exponent = Math.floor(Math.log(bytes) / Math.log(k));
|
36
|
+
const exponent = Math.floor(Math.log(Math.abs(bytes)) / Math.log(k));
|
33
37
|
const coefficient = bytes / Math.pow(k, exponent);
|
34
38
|
return `${parseFloat(coefficient.toFixed(2))} ${sizes[exponent]}`;
|
35
39
|
}
|
36
|
-
export function
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
40
|
+
export function getMediaType(searchee) {
|
41
|
+
function hasExt(searchee, exts) {
|
42
|
+
return searchee.files.some((f) => exts.includes(path.extname(f.name)));
|
43
|
+
}
|
44
|
+
const stem = stripExtension(searchee.name);
|
45
|
+
const hasVideoExtensions = hasExt(searchee, VIDEO_EXTENSIONS);
|
46
|
+
function unsupportedMediaType(searchee) {
|
47
|
+
//any unsupported media that needs to be identified goes here
|
48
|
+
if (hasExt(searchee, AUDIO_EXTENSIONS)) {
|
49
|
+
return MediaType.AUDIO;
|
50
|
+
}
|
51
|
+
else if (hasExt(searchee, BOOK_EXTENSIONS)) {
|
52
|
+
return MediaType.BOOK;
|
53
|
+
}
|
54
|
+
else {
|
55
|
+
return MediaType.OTHER;
|
56
|
+
}
|
57
|
+
}
|
58
|
+
// put new supported media type cases in this switch
|
59
|
+
if (EP_REGEX.test(stem)) {
|
60
|
+
return MediaType.EPISODE;
|
61
|
+
}
|
62
|
+
else if (SEASON_REGEX.test(stem)) {
|
63
|
+
return MediaType.SEASON;
|
64
|
+
}
|
65
|
+
else if (hasVideoExtensions) {
|
66
|
+
if (MOVIE_REGEX.test(stem))
|
67
|
+
return MediaType.MOVIE;
|
68
|
+
if (ANIME_REGEX.test(stem))
|
69
|
+
return MediaType.ANIME;
|
70
|
+
return unsupportedMediaType(searchee);
|
71
|
+
}
|
72
|
+
else {
|
73
|
+
return unsupportedMediaType(searchee);
|
74
|
+
}
|
75
|
+
}
|
76
|
+
export function shouldRecheck(decision) {
|
77
|
+
switch (decision) {
|
78
|
+
case Decision.MATCH:
|
79
|
+
case Decision.MATCH_SIZE_ONLY:
|
80
|
+
return false;
|
81
|
+
case Decision.MATCH_PARTIAL:
|
82
|
+
default:
|
83
|
+
return true;
|
84
|
+
}
|
46
85
|
}
|
47
86
|
export async function time(cb, times) {
|
48
87
|
const before = performance.now();
|
@@ -53,6 +92,15 @@ export async function time(cb, times) {
|
|
53
92
|
times.push(performance.now() - before);
|
54
93
|
}
|
55
94
|
}
|
95
|
+
export function sanitizeUrl(url) {
|
96
|
+
if (typeof url === "string") {
|
97
|
+
url = new URL(url);
|
98
|
+
}
|
99
|
+
return url.origin + url.pathname;
|
100
|
+
}
|
101
|
+
export function getApikey(url) {
|
102
|
+
return new URL(url).searchParams.get("apikey");
|
103
|
+
}
|
56
104
|
export function cleanseSeparators(str) {
|
57
105
|
return str
|
58
106
|
.replace(/\[.*?\]|「.*?」|「.*?」|【.*?】/g, "")
|
@@ -61,23 +109,29 @@ export function cleanseSeparators(str) {
|
|
61
109
|
.trim();
|
62
110
|
}
|
63
111
|
export function getAnimeQueries(name) {
|
64
|
-
// Only use if
|
112
|
+
// Only use if getMediaType returns anime as it's conditional on a few factors
|
65
113
|
const animeQueries = [];
|
66
114
|
const { title, altTitle, release } = name.match(ANIME_REGEX)?.groups ?? {};
|
67
115
|
if (title) {
|
68
116
|
animeQueries.push(cleanseSeparators(`${title} ${release}`));
|
69
117
|
}
|
70
118
|
if (altTitle) {
|
119
|
+
// Edge cases from regex
|
120
|
+
if (altTitle.toLowerCase() === "season")
|
121
|
+
return animeQueries;
|
122
|
+
if (altTitle.toLowerCase() === "ep")
|
123
|
+
return animeQueries;
|
71
124
|
animeQueries.push(cleanseSeparators(`${altTitle} ${release}`));
|
72
125
|
}
|
73
126
|
return animeQueries;
|
74
127
|
}
|
75
128
|
export function reformatTitleForSearching(name) {
|
76
|
-
|
77
|
-
const
|
78
|
-
|
79
|
-
|
80
|
-
|
129
|
+
// use lazy regex evaluation
|
130
|
+
const fullMatch = name.match(EP_REGEX)?.[0] ??
|
131
|
+
name.match(SEASON_REGEX)?.[0] ??
|
132
|
+
name.match(MOVIE_REGEX)?.[0] ??
|
133
|
+
name;
|
134
|
+
return cleanseSeparators(fullMatch).match(SCENE_TITLE_REGEX).groups.title;
|
81
135
|
}
|
82
136
|
export const tap = (fn) => (value) => {
|
83
137
|
fn(value);
|
@@ -91,6 +145,16 @@ export function humanReadableDate(timestamp) {
|
|
91
145
|
// swedish conventions roughly follow the iso format!
|
92
146
|
return new Date(timestamp).toLocaleString("sv");
|
93
147
|
}
|
148
|
+
export function getLogString(data, color) {
|
149
|
+
if (data instanceof Metafile) {
|
150
|
+
return `${color(data.name)} ${chalk.dim(`[${data.infoHash.slice(0, 8)}...]`)}`;
|
151
|
+
}
|
152
|
+
return data.infoHash
|
153
|
+
? `${color(data.name)} ${chalk.dim(`[${data.infoHash.slice(0, 8)}...]`)}`
|
154
|
+
: data.path
|
155
|
+
? color(data.path)
|
156
|
+
: color(data.name);
|
157
|
+
}
|
94
158
|
export function formatAsList(strings) {
|
95
159
|
return new Intl.ListFormat("en", {
|
96
160
|
style: "long",
|
@@ -121,4 +185,7 @@ export function extractCredentialsFromUrl(url, basePath) {
|
|
121
185
|
return resultOfErr("invalid URL");
|
122
186
|
}
|
123
187
|
}
|
188
|
+
export function capitalizeFirstLetter(string) {
|
189
|
+
return string.charAt(0).toUpperCase() + string.slice(1);
|
190
|
+
}
|
124
191
|
//# sourceMappingURL=utils.js.map
|