cross-seed 4.0.1 → 4.1.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/README.md +10 -90
- package/dist/action.js +48 -0
- package/dist/action.js.map +1 -0
- package/dist/clients/QBittorrent.js +26 -1
- package/dist/clients/QBittorrent.js.map +1 -1
- package/dist/cmd.js +30 -8
- package/dist/cmd.js.map +1 -1
- package/dist/config.template.cjs +10 -1
- package/dist/config.template.cjs.map +1 -1
- package/dist/config.template.docker.cjs +9 -0
- package/dist/config.template.docker.cjs.map +1 -1
- package/dist/configuration.js.map +1 -1
- package/dist/constants.js +8 -4
- package/dist/constants.js.map +1 -1
- package/dist/pipeline.js +19 -67
- package/dist/pipeline.js.map +1 -1
- package/dist/pushNotifier.js +39 -0
- package/dist/pushNotifier.js.map +1 -1
- package/dist/runtimeConfig.js.map +1 -1
- package/dist/torrent.js +14 -0
- package/dist/torrent.js.map +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
@@ -14,12 +14,13 @@ Currently the supported clients are
|
|
14
14
|
|
15
15
|
If your client isn't supported, `cross-seed` will download a bunch of torrent
|
16
16
|
files to a folder you specify. After that, I recommend using
|
17
|
-
[
|
17
|
+
[AutoTorrent2](https://github.com/JohnDoee/autotorrent2) to do the last-mile
|
18
18
|
delivery into your client.
|
19
19
|
|
20
20
|
## 🚨🚨🚨 Breaking changes in cross-seed v4 🚨🚨🚨
|
21
21
|
|
22
|
-
Head on over to
|
22
|
+
Head on over to the
|
23
|
+
[v4 migration guide](https://www.cross-seed.org/docs/tutorials/v4-migration-guide)
|
23
24
|
to see the steps required for migration.
|
24
25
|
|
25
26
|
## Requirements
|
@@ -28,95 +29,14 @@ to see the steps required for migration.
|
|
28
29
|
- Any number of indexers that support Torznab (use Jackett or Prowlarr to
|
29
30
|
help)
|
30
31
|
|
31
|
-
|
32
|
-
work there too.
|
32
|
+
## Tutorial
|
33
33
|
|
34
|
-
|
35
|
-
|
36
|
-
Invoking `cross-seed` is _almost_ as simple as:
|
37
|
-
|
38
|
-
```shell script
|
39
|
-
npx cross-seed
|
40
|
-
```
|
41
|
-
|
42
|
-
Here's an example invocation:
|
43
|
-
|
44
|
-
```shell script
|
45
|
-
npx cross-seed search \
|
46
|
-
--torznab http://localhost:9696/prowlarr/1/api?apikey=a1b2c3d4e5f6 \
|
47
|
-
--torrent-dir /home/rtorrent/.session \
|
48
|
-
--output-dir /tmp/torrents
|
49
|
-
```
|
50
|
-
|
51
|
-
You either need to give it a few command-line arguments or create a
|
52
|
-
[configuration file](https://github.com/mmgoodnow/cross-seed/wiki/Configuration-file).
|
53
|
-
|
54
|
-
```text
|
55
|
-
Usage: cross-seed search [options]
|
56
|
-
|
57
|
-
Search for cross-seeds
|
58
|
-
|
59
|
-
|
60
|
-
Options:
|
61
|
-
-T, --torznab <urls...> Torznab urls with apikey included (separated by spaces)
|
62
|
-
-i, --torrent-dir <dir> Directory with torrent files
|
63
|
-
-s, --output-dir <dir> Directory to save results in
|
64
|
-
--include-non-videos Include torrents which contain non-video files (default: false)
|
65
|
-
-e, --include-episodes Include single-episode torrents in the search (default: false)
|
66
|
-
--fuzzy-size-threshold <decimal> The size difference allowed to be considered a match. (default: 0.02)
|
67
|
-
-v, --verbose Log verbose output (default: false)
|
68
|
-
-A, --action <action> If set to 'inject', cross-seed will attempt to add the found torrents to your torrent client. (choices: "save", "inject", default: "save")
|
69
|
-
--rtorrent-rpc-url <url> The url of your rtorrent XMLRPC interface. Requires '-A inject'. See the docs for more information.
|
70
|
-
--qbittorrent-url <url> The url of your qBittorrent webui. Requires '-A inject'. See the docs for more information.
|
71
|
-
-d, --delay <delay> Pause duration (seconds) between searches (default: 10)
|
72
|
-
-x, --exclude-older <cutoff> Exclude torrents first seen more than x minutes ago. Overrides the -a flag.
|
73
|
-
-r, --exclude-recent-search <cutoff> Exclude torrents which have been searched more recently than x minutes ago. Overrides the -a flag.
|
74
|
-
-h, --help display help for command
|
75
|
-
```
|
76
|
-
|
77
|
-
## Standalone installation
|
78
|
-
|
79
|
-
You don't need to install this app, but if
|
80
|
-
|
81
|
-
- you plan on running `cross-seed` regularly
|
82
|
-
- you want to control when you receive updates
|
83
|
-
- your version of `npm` doesn't support `npx`
|
84
|
-
|
85
|
-
you can install it globally:
|
86
|
-
|
87
|
-
```shell script
|
88
|
-
npm install -g cross-seed
|
89
|
-
```
|
90
|
-
|
91
|
-
Then you can run the app with:
|
92
|
-
|
93
|
-
```shell script
|
94
|
-
cross-seed
|
95
|
-
```
|
96
|
-
|
97
|
-
To update,
|
98
|
-
|
99
|
-
```shell script
|
100
|
-
npm uninstall -g cross-seed
|
101
|
-
npm install -g cross-seed
|
102
|
-
```
|
103
|
-
|
104
|
-
## Daemon mode (Docker recommended)
|
105
|
-
|
106
|
-
`cross-seed` supports a daemon mode, wherein the app is always running, and you
|
107
|
-
can trigger an HTTP request to search for cross-seeds of a specific torrent. See
|
108
|
-
more info in the
|
109
|
-
[wiki page](https://github.com/mmgoodnow/cross-seed/wiki/Daemon-Mode).
|
110
|
-
|
111
|
-
## Direct client injection
|
112
|
-
|
113
|
-
As mentioned above, `cross-seed` can inject the torrents it finds directly into
|
114
|
-
your torrent client. See more info in the
|
115
|
-
[wiki page](https://github.com/mmgoodnow/cross-seed/wiki/Injection).
|
34
|
+
Head on over to
|
35
|
+
[cross-seed.org](https://www.cross-seed.org/docs/basics/getting-started)
|
116
36
|
|
117
37
|
## Troubleshooting
|
118
38
|
|
119
|
-
|
120
|
-
|
121
|
-
[open an issue](https://github.com/mmgoodnow/cross-seed/issues/new) or
|
122
|
-
|
39
|
+
Feel free to
|
40
|
+
[start a discussion](https://github.com/mmgoodnow/cross-seed/discussions/new) or
|
41
|
+
[open an issue](https://github.com/mmgoodnow/cross-seed/issues/new), or reach
|
42
|
+
out on [Discord](https://discord.gg/jpbUFzS5Wb).
|
package/dist/action.js
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
import chalk from "chalk";
|
2
|
+
import { getClient } from "./clients/TorrentClient.js";
|
3
|
+
import { Action, InjectionResult, SaveResult, } from "./constants.js";
|
4
|
+
import { logger } from "./logger.js";
|
5
|
+
import { getRuntimeConfig } from "./runtimeConfig.js";
|
6
|
+
import { saveTorrentFile } from "./torrent.js";
|
7
|
+
import { getTag } from "./utils.js";
|
8
|
+
export async function performAction(newMeta, searchee, tracker, nonceOptions) {
|
9
|
+
const { action } = getRuntimeConfig();
|
10
|
+
const styledName = chalk.green.bold(newMeta.name);
|
11
|
+
const styledTracker = chalk.bold(tracker);
|
12
|
+
if (action === Action.INJECT) {
|
13
|
+
const result = await getClient().inject(newMeta, searchee, nonceOptions);
|
14
|
+
switch (result) {
|
15
|
+
case InjectionResult.SUCCESS:
|
16
|
+
logger.info(`Found ${styledName} on ${styledTracker} - injected`);
|
17
|
+
break;
|
18
|
+
case InjectionResult.ALREADY_EXISTS:
|
19
|
+
logger.info(`Found ${styledName} on ${styledTracker} - exists`);
|
20
|
+
break;
|
21
|
+
case InjectionResult.TORRENT_NOT_COMPLETE:
|
22
|
+
logger.warn(`Found ${styledName} on ${styledTracker} - skipping incomplete torrent`);
|
23
|
+
break;
|
24
|
+
case InjectionResult.FAILURE:
|
25
|
+
default:
|
26
|
+
logger.error(`Found ${styledName} on ${styledTracker} - failed to inject, saving instead`);
|
27
|
+
saveTorrentFile(tracker, getTag(searchee.name), newMeta, nonceOptions);
|
28
|
+
break;
|
29
|
+
}
|
30
|
+
return result;
|
31
|
+
}
|
32
|
+
else {
|
33
|
+
saveTorrentFile(tracker, getTag(searchee.name), newMeta, nonceOptions);
|
34
|
+
logger.info(`Found ${styledName} on ${styledTracker} - saved`);
|
35
|
+
return SaveResult.SAVED;
|
36
|
+
}
|
37
|
+
}
|
38
|
+
export async function performActions(searchee, matches, nonceOptions) {
|
39
|
+
const results = [];
|
40
|
+
for (const { tracker, assessment } of matches) {
|
41
|
+
const result = await performAction(assessment.metafile, searchee, tracker, nonceOptions);
|
42
|
+
results.push(result);
|
43
|
+
if (result === InjectionResult.TORRENT_NOT_COMPLETE)
|
44
|
+
break;
|
45
|
+
}
|
46
|
+
return results;
|
47
|
+
}
|
48
|
+
//# sourceMappingURL=action.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"action.js","sourceRoot":"","sources":["../src/action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EACN,MAAM,EAEN,eAAe,EACf,UAAU,GACV,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAgB,MAAM,oBAAoB,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEpC,MAAM,CAAC,KAAK,UAAU,aAAa,CAClC,OAAiB,EACjB,QAAkB,EAClB,OAAe,EACf,YAA0B;IAE1B,MAAM,EAAE,MAAM,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAEtC,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1C,IAAI,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE;QAC7B,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC,MAAM,CACtC,OAAO,EACP,QAAQ,EACR,YAAY,CACZ,CAAC;QACF,QAAQ,MAAM,EAAE;YACf,KAAK,eAAe,CAAC,OAAO;gBAC3B,MAAM,CAAC,IAAI,CACV,SAAS,UAAU,OAAO,aAAa,aAAa,CACpD,CAAC;gBACF,MAAM;YACP,KAAK,eAAe,CAAC,cAAc;gBAClC,MAAM,CAAC,IAAI,CAAC,SAAS,UAAU,OAAO,aAAa,WAAW,CAAC,CAAC;gBAChE,MAAM;YACP,KAAK,eAAe,CAAC,oBAAoB;gBACxC,MAAM,CAAC,IAAI,CACV,SAAS,UAAU,OAAO,aAAa,gCAAgC,CACvE,CAAC;gBACF,MAAM;YACP,KAAK,eAAe,CAAC,OAAO,CAAC;YAC7B;gBACC,MAAM,CAAC,KAAK,CACX,SAAS,UAAU,OAAO,aAAa,qCAAqC,CAC5E,CAAC;gBACF,eAAe,CACd,OAAO,EACP,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EACrB,OAAO,EACP,YAAY,CACZ,CAAC;gBACF,MAAM;SACP;QACD,OAAO,MAAM,CAAC;KACd;SAAM;QACN,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;QACvE,MAAM,CAAC,IAAI,CAAC,SAAS,UAAU,OAAO,aAAa,UAAU,CAAC,CAAC;QAC/D,OAAO,UAAU,CAAC,KAAK,CAAC;KACxB;AACF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,YAAY;IACnE,MAAM,OAAO,GAAmB,EAAE,CAAC;IACnC,KAAK,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,OAAO,EAAE;QAC9C,MAAM,MAAM,GAAG,MAAM,aAAa,CACjC,UAAU,CAAC,QAAQ,EACnB,QAAQ,EACR,OAAO,EACP,YAAY,CACZ,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrB,IAAI,MAAM,KAAK,eAAe,CAAC,oBAAoB;YAAE,MAAM;KAC3D;IACD,OAAO,OAAO,CAAC;AAChB,CAAC"}
|
@@ -78,6 +78,27 @@ export default class QBittorrent {
|
|
78
78
|
}
|
79
79
|
return response.text();
|
80
80
|
}
|
81
|
+
async setUpCrossSeedCategory(ogCategoryName) {
|
82
|
+
if (!ogCategoryName)
|
83
|
+
return "";
|
84
|
+
if (ogCategoryName.endsWith(".cross-seed"))
|
85
|
+
return ogCategoryName;
|
86
|
+
const categoriesStr = await this.request("/torrents/categories", "");
|
87
|
+
const categories = JSON.parse(categoriesStr);
|
88
|
+
const ogCategory = categories[ogCategoryName];
|
89
|
+
const newCategoryName = `${ogCategoryName}.cross-seed`;
|
90
|
+
const maybeNewCategory = categories[newCategoryName];
|
91
|
+
if ((maybeNewCategory === null || maybeNewCategory === void 0 ? void 0 : maybeNewCategory.savePath) === ogCategory.savePath) {
|
92
|
+
// setup is already complete
|
93
|
+
}
|
94
|
+
else if (maybeNewCategory) {
|
95
|
+
await this.request("/torrents/editCategory", `category=${newCategoryName}&savePath=${ogCategory.savePath}`, X_WWW_FORM_URLENCODED);
|
96
|
+
}
|
97
|
+
else {
|
98
|
+
await this.request("/torrents/createCategory", `category=${newCategoryName}&savePath=${ogCategory.savePath}`, X_WWW_FORM_URLENCODED);
|
99
|
+
}
|
100
|
+
return newCategoryName;
|
101
|
+
}
|
81
102
|
async createTag() {
|
82
103
|
await this.request("/torrents/createTags", "tags=cross-seed", X_WWW_FORM_URLENCODED);
|
83
104
|
}
|
@@ -112,6 +133,7 @@ export default class QBittorrent {
|
|
112
133
|
return files.length === 1 && name !== posix.basename(name);
|
113
134
|
}
|
114
135
|
async inject(newTorrent, searchee) {
|
136
|
+
const { duplicateCategories } = getRuntimeConfig();
|
115
137
|
if (await this.isInfoHashInClient(newTorrent.infoHash)) {
|
116
138
|
return InjectionResult.ALREADY_EXISTS;
|
117
139
|
}
|
@@ -121,6 +143,9 @@ export default class QBittorrent {
|
|
121
143
|
await writeFile(tempFilepath, buf, { mode: 0o644 });
|
122
144
|
try {
|
123
145
|
const { save_path, isComplete, autoTMM, category } = await this.getTorrentConfiguration(searchee);
|
146
|
+
const newCategoryName = duplicateCategories
|
147
|
+
? await this.setUpCrossSeedCategory(category)
|
148
|
+
: category;
|
124
149
|
if (!isComplete)
|
125
150
|
return InjectionResult.TORRENT_NOT_COMPLETE;
|
126
151
|
const shouldManuallyEnforceContentLayout = isSingleFileTorrent(newTorrent) &&
|
@@ -129,7 +154,7 @@ export default class QBittorrent {
|
|
129
154
|
const formData = new FormData();
|
130
155
|
formData.append("torrents", file, filename);
|
131
156
|
formData.append("tags", "cross-seed");
|
132
|
-
formData.append("category",
|
157
|
+
formData.append("category", newCategoryName);
|
133
158
|
if (autoTMM) {
|
134
159
|
formData.append("autoTMM", "true");
|
135
160
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"QBittorrent.js","sourceRoot":"","sources":["../../src/clients/QBittorrent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAA6B,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAC5B,OAAO,YAA0B,MAAM,eAAe,CAAC;AACvD,OAAO,EAAW,IAAI,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAGpD,MAAM,qBAAqB,GAAG;IAC7B,cAAc,EAAE,mCAAmC;CACnD,CAAC;
|
1
|
+
{"version":3,"file":"QBittorrent.js","sourceRoot":"","sources":["../../src/clients/QBittorrent.ts"],"names":[],"mappings":"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"}
|
package/dist/cmd.js
CHANGED
@@ -8,9 +8,9 @@ import { generateConfig, getFileConfig } from "./configuration.js";
|
|
8
8
|
import { Action } from "./constants.js";
|
9
9
|
import { jobsLoop } from "./jobs.js";
|
10
10
|
import { diffCmd } from "./diff.js";
|
11
|
-
import {
|
11
|
+
import { exitOnCrossSeedErrors } from "./errors.js";
|
12
12
|
import { initializeLogger, Label, logger } from "./logger.js";
|
13
|
-
import { main } from "./pipeline.js";
|
13
|
+
import { main, scanRssFeeds } from "./pipeline.js";
|
14
14
|
import { initializePushNotifier, sendTestNotification, } from "./pushNotifier.js";
|
15
15
|
import { setRuntimeConfig } from "./runtimeConfig.js";
|
16
16
|
import { createSearcheeFromMetafile } from "./searchee.js";
|
@@ -63,6 +63,7 @@ function createCommandWithSharedOptions(name, description) {
|
|
63
63
|
.makeOptionMandatory())
|
64
64
|
.option("--rtorrent-rpc-url <url>", "The url of your rtorrent XMLRPC interface. Requires '-A inject'. See the docs for more information.", fileConfig.rtorrentRpcUrl)
|
65
65
|
.option("--qbittorrent-url <url>", "The url of your qBittorrent webui. Requires '-A inject'. See the docs for more information.", fileConfig.qbittorrentUrl)
|
66
|
+
.option("--duplicate-categories", "Create and inject using categories with the same save paths as your normal categories", fileConfig.duplicateCategories)
|
66
67
|
.option("--notification-webhook-url <url>", "cross-seed will send POST requests to this url with a JSON payload of { title, body }", fileConfig.notificationWebhookUrl)
|
67
68
|
.requiredOption("-d, --delay <delay>", "Pause duration (seconds) between searches", parseFloat, fallback(fileConfig.delay, 10));
|
68
69
|
}
|
@@ -128,16 +129,35 @@ createCommandWithSharedOptions("daemon", "Start the cross-seed daemon")
|
|
128
129
|
jobsLoop();
|
129
130
|
}
|
130
131
|
catch (e) {
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
132
|
+
exitOnCrossSeedErrors(e);
|
133
|
+
await db.destroy();
|
134
|
+
}
|
135
|
+
});
|
136
|
+
createCommandWithSharedOptions("rss", "Run an rss scan").action(async (options) => {
|
137
|
+
try {
|
138
|
+
const runtimeConfig = processOptions(options);
|
139
|
+
setRuntimeConfig(runtimeConfig);
|
140
|
+
initializeLogger();
|
141
|
+
initializePushNotifier();
|
142
|
+
logger.verbose({
|
143
|
+
label: Label.CONFIGDUMP,
|
144
|
+
message: inspect(runtimeConfig),
|
145
|
+
});
|
146
|
+
if (process.env.DOCKER_ENV === "true") {
|
147
|
+
generateConfig({ docker: true });
|
135
148
|
}
|
136
|
-
|
149
|
+
await db.migrate.latest();
|
150
|
+
await doStartupValidation();
|
151
|
+
await scanRssFeeds();
|
152
|
+
await db.destroy();
|
153
|
+
}
|
154
|
+
catch (e) {
|
155
|
+
exitOnCrossSeedErrors(e);
|
156
|
+
await db.destroy();
|
137
157
|
}
|
138
158
|
});
|
139
159
|
createCommandWithSharedOptions("search", "Search for cross-seeds")
|
140
|
-
.addOption(new Option("--torrents <torrents...>", "torrent files separated by spaces
|
160
|
+
.addOption(new Option("--torrents <torrents...>", "torrent files separated by spaces").hideHelp())
|
141
161
|
.action(async (options) => {
|
142
162
|
try {
|
143
163
|
const runtimeConfig = processOptions(options);
|
@@ -158,7 +178,9 @@ createCommandWithSharedOptions("search", "Search for cross-seeds")
|
|
158
178
|
}
|
159
179
|
catch (e) {
|
160
180
|
exitOnCrossSeedErrors(e);
|
181
|
+
await db.destroy();
|
161
182
|
}
|
162
183
|
});
|
184
|
+
program.showHelpAfterError("(add --help for additional information)");
|
163
185
|
await program.parseAsync();
|
164
186
|
//# sourceMappingURL=cmd.js.map
|
package/dist/cmd.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"cmd.js","sourceRoot":"","sources":["../src/cmd.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,
|
1
|
+
{"version":3,"file":"cmd.js","sourceRoot":"","sources":["../src/cmd.ts"],"names":[],"mappings":"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"}
|
package/dist/config.template.cjs
CHANGED
@@ -1,8 +1,10 @@
|
|
1
|
+
"use strict";
|
1
2
|
// If you find yourself always using the same command-line flag, you can set
|
2
3
|
// it here as a default.
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
5
|
module.exports = {
|
4
6
|
/**
|
5
|
-
* Pause at least this much in between each
|
7
|
+
* Pause at least this much in between each search. Higher is safer.
|
6
8
|
* It is not recommended to set this to less than 2 seconds.
|
7
9
|
*/
|
8
10
|
delay: 10,
|
@@ -76,6 +78,13 @@ module.exports = {
|
|
76
78
|
* "http://username:password@localhost:8080"
|
77
79
|
*/
|
78
80
|
qbittorrentUrl: undefined,
|
81
|
+
/**
|
82
|
+
* qBittorrent-specific
|
83
|
+
* Whether to inject using categories with the same save paths as your normal categories.
|
84
|
+
* Example: if you have a category called "Movies",
|
85
|
+
* this will automatically inject cross-seeds to "Movies.cross-seed"
|
86
|
+
*/
|
87
|
+
duplicateCategories: false,
|
79
88
|
/**
|
80
89
|
* cross-seed will send POST requests to this url
|
81
90
|
* with a JSON payload of { title, body }.
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"config.template.cjs","sourceRoot":"","sources":["../src/config.template.cjs"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,wBAAwB
|
1
|
+
{"version":3,"file":"config.template.cjs","sourceRoot":"","sources":["../src/config.template.cjs"],"names":[],"mappings":";AAAA,4EAA4E;AAC5E,wBAAwB;;AAExB,MAAM,CAAC,OAAO,GAAG;IAChB;;;OAGG;IACH,KAAK,EAAE,EAAE;IACT;;;;;OAKG;IACH,OAAO,EAAE,EAAE;IAEX;;;;;OAKG;IACH,UAAU,EAAE,2BAA2B;IAEvC;;OAEG;IACH,SAAS,EAAE,GAAG;IAEd;;OAEG;IACH,eAAe,EAAE,KAAK;IAEtB;;;;;OAKG;IACH,gBAAgB,EAAE,KAAK;IAEvB;;;OAGG;IACH,kBAAkB,EAAE,IAAI;IAExB;;;;;;;OAOG;IACH,YAAY,EAAE,SAAS;IAEvB;;;;;;;OAOG;IACH,mBAAmB,EAAE,SAAS;IAE9B;;;OAGG;IACH,MAAM,EAAE,MAAM;IAEd;;;;OAIG;IACH,cAAc,EAAE,SAAS;IAEzB;;;;;OAKG;IACH,cAAc,EAAE,SAAS;IAEzB;;;;;OAKG;IACH,mBAAmB,EAAE,KAAK;IAE1B;;;;OAIG;IACH,sBAAsB,EAAE,SAAS;IAEjC;;OAEG;IACH,IAAI,EAAE,IAAI;IAEV;;;;;;;OAOG;IACH,UAAU,EAAE,SAAS;IAErB;;;;;;;;OAQG;IACH,aAAa,EAAE,SAAS;CACxB,CAAC"}
|
@@ -1,5 +1,7 @@
|
|
1
|
+
"use strict";
|
1
2
|
// If you find yourself always using the same command-line flag, you can set
|
2
3
|
// it here as a default.
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
5
|
module.exports = {
|
4
6
|
/*
|
5
7
|
* Pause at least this much in between each search. Higher is safer.
|
@@ -80,6 +82,13 @@ module.exports = {
|
|
80
82
|
* "http://username:password@localhost:8080"
|
81
83
|
*/
|
82
84
|
qbittorrentUrl: undefined,
|
85
|
+
/**
|
86
|
+
* qBittorrent-specific
|
87
|
+
* Whether to inject using categories with the same save paths as your normal categories.
|
88
|
+
* Example: if you have a category called "Movies",
|
89
|
+
* this will automatically inject cross-seeds to "Movies.cross-seed"
|
90
|
+
*/
|
91
|
+
duplicateCategories: false,
|
83
92
|
/**
|
84
93
|
* cross-seed will send POST requests to this url
|
85
94
|
* with a JSON payload of { title, body }.
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"config.template.docker.cjs","sourceRoot":"","sources":["../src/config.template.docker.cjs"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,wBAAwB
|
1
|
+
{"version":3,"file":"config.template.docker.cjs","sourceRoot":"","sources":["../src/config.template.docker.cjs"],"names":[],"mappings":";AAAA,4EAA4E;AAC5E,wBAAwB;;AAExB,MAAM,CAAC,OAAO,GAAG;IAChB;;;OAGG;IACH,KAAK,EAAE,EAAE;IAET;;;;;OAKG;IACH,OAAO,EAAE,EAAE;IAEX;;;;;;;OAOG;IACH,UAAU,EAAE,WAAW;IAEvB;;;;OAIG;IACH,SAAS,EAAE,cAAc;IAEzB;;OAEG;IACH,eAAe,EAAE,KAAK;IAEtB;;;;;OAKG;IACH,gBAAgB,EAAE,KAAK;IAEvB;;;OAGG;IACH,kBAAkB,EAAE,IAAI;IAExB;;;;;;;OAOG;IACH,YAAY,EAAE,SAAS;IAEvB;;;;;;;OAOG;IACH,mBAAmB,EAAE,SAAS;IAE9B;;;OAGG;IACH,MAAM,EAAE,MAAM;IAEd;;;;OAIG;IACH,cAAc,EAAE,SAAS;IAEzB;;;;;OAKG;IACH,cAAc,EAAE,SAAS;IAEzB;;;;;OAKG;IACH,mBAAmB,EAAE,KAAK;IAG1B;;;;OAIG;IACH,sBAAsB,EAAE,SAAS;IAEjC;;OAEG;IACH,IAAI,EAAE,IAAI;IAEV;;;;;;;OAOG;IACH,UAAU,EAAE,SAAS;IAErB;;;;;;;;OAQG;IACH,aAAa,EAAE,SAAS;CAExB,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"configuration.js","sourceRoot":"","sources":["../src/configuration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAGpC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,cAAc,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;
|
1
|
+
{"version":3,"file":"configuration.js","sourceRoot":"","sources":["../src/configuration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAGpC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,cAAc,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AA4BlD,MAAM,UAAU,MAAM;IACrB,OAAO,CACN,OAAO,CAAC,GAAG,CAAC,UAAU;QACtB,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO;YAC5B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,cAAc,CAAC,IAAI,CAAC;YAC7D,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,CAC7D,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY;IAC3B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,eAAe,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAC9B,KAAK,GAAG,KAAK,EACb,MAAM,GAAG,KAAK,GACQ;IACtB,YAAY,EAAE,CAAC;IACf,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,WAAW,CAAC,CAAC;IAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAC7B,oBAAoB,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,CACjD,CAAC;IACF,IAAI,CAAC,KAAK,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE;QAC/B,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;QAClD,OAAO;KACP;IACD,YAAY,CAAC,IAAI,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa;IAClC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,WAAW,CAAC,CAAC;IAEpD,IAAI;QACH,OAAO,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;KACpE;IAAC,OAAO,CAAC,EAAE;QACX,IAAI,CAAC,CAAC,IAAI,KAAK,sBAAsB;YAAE,MAAM,CAAC,CAAC;QAC/C,OAAO,EAAE,CAAC;KACV;AACF,CAAC"}
|
package/dist/constants.js
CHANGED
@@ -10,11 +10,15 @@ export var Action;
|
|
10
10
|
})(Action = Action || (Action = {}));
|
11
11
|
export var InjectionResult;
|
12
12
|
(function (InjectionResult) {
|
13
|
-
InjectionResult[
|
14
|
-
InjectionResult[
|
15
|
-
InjectionResult[
|
16
|
-
InjectionResult[
|
13
|
+
InjectionResult["SUCCESS"] = "SUCCESS";
|
14
|
+
InjectionResult["FAILURE"] = "FAILURE";
|
15
|
+
InjectionResult["ALREADY_EXISTS"] = "ALREADY_EXISTS";
|
16
|
+
InjectionResult["TORRENT_NOT_COMPLETE"] = "TORRENT_NOT_COMPLETE";
|
17
17
|
})(InjectionResult = InjectionResult || (InjectionResult = {}));
|
18
|
+
export var SaveResult;
|
19
|
+
(function (SaveResult) {
|
20
|
+
SaveResult["SAVED"] = "SAVED";
|
21
|
+
})(SaveResult = SaveResult || (SaveResult = {}));
|
18
22
|
export var Decision;
|
19
23
|
(function (Decision) {
|
20
24
|
Decision["MATCH"] = "MATCH";
|
package/dist/constants.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,QAAQ,GAAG,mDAAmD,CAAC;AAC5E,MAAM,CAAC,MAAM,YAAY,GACxB,0EAA0E,CAAC;AAC5E,MAAM,CAAC,MAAM,WAAW,GACvB,qDAAqD,CAAC;AAEvD,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAEhD,MAAM,CAAC,MAAM,oBAAoB,GAAG,eAAe,CAAC;AAEpD,MAAM,CAAN,IAAY,MAGX;AAHD,WAAY,MAAM;IACjB,uBAAa,CAAA;IACb,2BAAiB,CAAA;AAClB,CAAC,EAHW,MAAM,GAAN,MAAM,KAAN,MAAM,QAGjB;AAED,MAAM,CAAN,IAAY,eAKX;AALD,WAAY,eAAe;IAC1B,
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,QAAQ,GAAG,mDAAmD,CAAC;AAC5E,MAAM,CAAC,MAAM,YAAY,GACxB,0EAA0E,CAAC;AAC5E,MAAM,CAAC,MAAM,WAAW,GACvB,qDAAqD,CAAC;AAEvD,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAEhD,MAAM,CAAC,MAAM,oBAAoB,GAAG,eAAe,CAAC;AAEpD,MAAM,CAAN,IAAY,MAGX;AAHD,WAAY,MAAM;IACjB,uBAAa,CAAA;IACb,2BAAiB,CAAA;AAClB,CAAC,EAHW,MAAM,GAAN,MAAM,KAAN,MAAM,QAGjB;AAED,MAAM,CAAN,IAAY,eAKX;AALD,WAAY,eAAe;IAC1B,sCAAmB,CAAA;IACnB,sCAAmB,CAAA;IACnB,oDAAiC,CAAA;IACjC,gEAA6C,CAAA;AAC9C,CAAC,EALW,eAAe,GAAf,eAAe,KAAf,eAAe,QAK1B;AAED,MAAM,CAAN,IAAY,UAEX;AAFD,WAAY,UAAU;IACrB,6BAAe,CAAA;AAChB,CAAC,EAFW,UAAU,GAAV,UAAU,KAAV,UAAU,QAErB;AAID,MAAM,CAAN,IAAY,QAOX;AAPD,WAAY,QAAQ;IACnB,2BAAe,CAAA;IACf,2CAA+B,CAAA;IAC/B,iDAAqC,CAAA;IACrC,+CAAmC,CAAA;IACnC,iEAAqD,CAAA;IACrD,qDAAyC,CAAA;AAC1C,CAAC,EAPW,QAAQ,GAAR,QAAQ,KAAR,QAAQ,QAOnB"}
|
package/dist/pipeline.js
CHANGED
@@ -1,54 +1,23 @@
|
|
1
1
|
import chalk from "chalk";
|
2
2
|
import fs from "fs";
|
3
|
-
import {
|
4
|
-
import {
|
3
|
+
import { zip } from "lodash-es";
|
4
|
+
import { performAction, performActions } from "./action.js";
|
5
|
+
import { Decision, InjectionResult, SaveResult, } from "./constants.js";
|
6
|
+
import { db } from "./db.js";
|
5
7
|
import { assessCandidate } from "./decide.js";
|
6
8
|
import { Label, logger } from "./logger.js";
|
7
9
|
import { filterByContent, filterDupes, filterTimestamps } from "./preFilter.js";
|
8
|
-
import {
|
10
|
+
import { sendResultsNotification } from "./pushNotifier.js";
|
9
11
|
import { EmptyNonceOptions, getRuntimeConfig, } from "./runtimeConfig.js";
|
10
12
|
import { createSearcheeFromMetafile, createSearcheeFromTorrentFile, } from "./searchee.js";
|
11
|
-
import {
|
12
|
-
import { getInfoHashesToExclude, getTorrentByCriteria, indexNewTorrents, loadTorrentDirLight, saveTorrentFile, } from "./torrent.js";
|
13
|
+
import { getInfoHashesToExclude, getTorrentByCriteria, getTorrentByFuzzyName, indexNewTorrents, loadTorrentDirLight, } from "./torrent.js";
|
13
14
|
import { getTorznabManager } from "./torznab.js";
|
14
|
-
import { filterAsync,
|
15
|
-
async function performAction(newMeta, searchee, tracker, nonceOptions, tag) {
|
16
|
-
const { action } = getRuntimeConfig();
|
17
|
-
let isTorrentIncomplete;
|
18
|
-
const styledName = chalk.green.bold(newMeta.name);
|
19
|
-
const styledTracker = chalk.bold(tracker);
|
20
|
-
if (action === Action.INJECT) {
|
21
|
-
const result = await getClient().inject(newMeta, searchee, nonceOptions);
|
22
|
-
switch (result) {
|
23
|
-
case InjectionResult.SUCCESS:
|
24
|
-
logger.info(`Found ${styledName} on ${styledTracker} - injected`);
|
25
|
-
break;
|
26
|
-
case InjectionResult.ALREADY_EXISTS:
|
27
|
-
logger.info(`Found ${styledName} on ${styledTracker} - exists`);
|
28
|
-
break;
|
29
|
-
case InjectionResult.TORRENT_NOT_COMPLETE:
|
30
|
-
logger.warn(`Found ${styledName} on ${styledTracker} - skipping incomplete torrent`);
|
31
|
-
isTorrentIncomplete = true;
|
32
|
-
break;
|
33
|
-
case InjectionResult.FAILURE:
|
34
|
-
default:
|
35
|
-
logger.error(`Found ${styledName} on ${styledTracker} - failed to inject, saving instead`);
|
36
|
-
saveTorrentFile(tracker, tag, newMeta, nonceOptions);
|
37
|
-
break;
|
38
|
-
}
|
39
|
-
}
|
40
|
-
else {
|
41
|
-
saveTorrentFile(tracker, tag, newMeta, nonceOptions);
|
42
|
-
logger.info(`Found ${styledName} on ${styledTracker}`);
|
43
|
-
}
|
44
|
-
return { isTorrentIncomplete };
|
45
|
-
}
|
15
|
+
import { filterAsync, ok, stripExtension } from "./utils.js";
|
46
16
|
async function findOnOtherSites(searchee, hashesToExclude, nonceOptions = EmptyNonceOptions) {
|
47
17
|
const assessEach = async (result) => ({
|
48
18
|
assessment: await assessCandidate(result, searchee, hashesToExclude),
|
49
19
|
tracker: result.tracker,
|
50
20
|
});
|
51
|
-
const tag = getTag(searchee.name);
|
52
21
|
const query = stripExtension(searchee.name);
|
53
22
|
// make sure searchee is in database
|
54
23
|
await db("searchee")
|
@@ -65,29 +34,14 @@ async function findOnOtherSites(searchee, hashesToExclude, nonceOptions = EmptyN
|
|
65
34
|
}
|
66
35
|
const results = response;
|
67
36
|
const loaded = await Promise.all(results.map(assessEach));
|
68
|
-
const
|
69
|
-
|
70
|
-
|
71
|
-
const
|
72
|
-
|
73
|
-
|
74
|
-
// @ts-expect-error Intl.ListFormat totally exists on node 12
|
75
|
-
const trackersListStr = new Intl.ListFormat("en", {
|
76
|
-
style: "long",
|
77
|
-
type: "conjunction",
|
78
|
-
}).format(trackers);
|
79
|
-
pushNotifier.notify({
|
80
|
-
body: `Found ${name} on ${numTrackers} trackers: ${trackersListStr}`,
|
81
|
-
extra: { infoHashes, trackers },
|
82
|
-
});
|
83
|
-
}
|
84
|
-
for (const { tracker, assessment } of successful) {
|
85
|
-
const { isTorrentIncomplete } = await performAction(assessment.metafile, searchee, tracker, nonceOptions, tag);
|
86
|
-
if (isTorrentIncomplete)
|
87
|
-
return successful.length;
|
37
|
+
const matches = loaded.filter((e) => e.assessment.decision === Decision.MATCH);
|
38
|
+
const actionResults = await performActions(searchee, matches, nonceOptions);
|
39
|
+
if (!actionResults.includes(InjectionResult.TORRENT_NOT_COMPLETE)) {
|
40
|
+
const zipped = zip(matches.map((m) => m.assessment), matches.map((m) => m.tracker), actionResults);
|
41
|
+
sendResultsNotification(searchee, zipped, Label.SEARCH);
|
42
|
+
await updateSearchTimestamps(searchee.name);
|
88
43
|
}
|
89
|
-
|
90
|
-
return successful.length;
|
44
|
+
return matches.length;
|
91
45
|
}
|
92
46
|
async function updateSearchTimestamps(name) {
|
93
47
|
await db.transaction(async (trx) => {
|
@@ -123,11 +77,8 @@ export async function searchForLocalTorrentByCriteria(criteria, nonceOptions) {
|
|
123
77
|
return findOnOtherSites(meta, hashesToExclude, nonceOptions);
|
124
78
|
}
|
125
79
|
export async function checkNewCandidateMatch(candidate) {
|
126
|
-
|
127
|
-
|
128
|
-
meta = await getTorrentByCriteria({ name: candidate.name });
|
129
|
-
}
|
130
|
-
catch (e) {
|
80
|
+
const meta = await getTorrentByFuzzyName(candidate.name);
|
81
|
+
if (meta === null) {
|
131
82
|
logger.verbose({
|
132
83
|
label: Label.REVERSE_LOOKUP,
|
133
84
|
message: `Did not find an existing entry for ${candidate.name}`,
|
@@ -146,8 +97,9 @@ export async function checkNewCandidateMatch(candidate) {
|
|
146
97
|
const assessment = await assessCandidate(candidate, searchee, hashesToExclude);
|
147
98
|
if (assessment.decision !== Decision.MATCH)
|
148
99
|
return false;
|
149
|
-
const
|
150
|
-
|
100
|
+
const result = await performAction(assessment.metafile, searchee, candidate.tracker, EmptyNonceOptions);
|
101
|
+
await sendResultsNotification(searchee, [[assessment, candidate.tracker, result]], Label.REVERSE_LOOKUP);
|
102
|
+
return result === InjectionResult.SUCCESS || result === SaveResult.SAVED;
|
151
103
|
}
|
152
104
|
async function findSearchableTorrents() {
|
153
105
|
const { torrents } = getRuntimeConfig();
|
package/dist/pipeline.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,IAAI,CAAC;
|
1
|
+
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"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"}
|
package/dist/pushNotifier.js
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
import fetch from "node-fetch";
|
2
|
+
import { InjectionResult, SaveResult } from "./constants.js";
|
2
3
|
import { logger } from "./logger.js";
|
3
4
|
import { getRuntimeConfig } from "./runtimeConfig.js";
|
4
5
|
export let pushNotifier;
|
@@ -12,10 +13,48 @@ export class PushNotifier {
|
|
12
13
|
method: "POST",
|
13
14
|
headers: { "Content-Type": "application/json" },
|
14
15
|
body: JSON.stringify({ title, body, ...rest }),
|
16
|
+
}).catch(() => {
|
17
|
+
logger.error({ message: "" });
|
15
18
|
});
|
16
19
|
}
|
17
20
|
}
|
18
21
|
}
|
22
|
+
function formatTrackersAsList(trackers) {
|
23
|
+
// @ts-expect-error Intl.ListFormat totally exists on node 12
|
24
|
+
return new Intl.ListFormat("en", {
|
25
|
+
style: "long",
|
26
|
+
type: "conjunction",
|
27
|
+
}).format(trackers);
|
28
|
+
}
|
29
|
+
export function sendResultsNotification(searchee, results, source) {
|
30
|
+
const name = searchee.name;
|
31
|
+
const notableSuccesses = results.filter(([, , actionResult]) => actionResult === InjectionResult.SUCCESS ||
|
32
|
+
actionResult === SaveResult.SAVED);
|
33
|
+
const failures = results.filter(([, , actionResult]) => actionResult === InjectionResult.FAILURE);
|
34
|
+
if (notableSuccesses.length) {
|
35
|
+
const numTrackers = notableSuccesses.length;
|
36
|
+
const infoHashes = notableSuccesses.map(([assessment]) => assessment.metafile.infoHash);
|
37
|
+
const trackers = notableSuccesses.map(([, tracker]) => tracker);
|
38
|
+
const trackersListStr = formatTrackersAsList(trackers);
|
39
|
+
const performedAction = notableSuccesses[0][2] === InjectionResult.SUCCESS
|
40
|
+
? "Injected"
|
41
|
+
: "Saved";
|
42
|
+
pushNotifier.notify({
|
43
|
+
body: `${source}: ${performedAction} ${name} from ${numTrackers} trackers: ${trackersListStr}`,
|
44
|
+
extra: { infoHashes, trackers },
|
45
|
+
});
|
46
|
+
}
|
47
|
+
if (failures.length) {
|
48
|
+
const numTrackers = failures.length;
|
49
|
+
const infoHashes = failures.map(([assessment]) => assessment.metafile.infoHash);
|
50
|
+
const trackers = failures.map(([, tracker]) => tracker);
|
51
|
+
const trackersListStr = formatTrackersAsList(trackers);
|
52
|
+
pushNotifier.notify({
|
53
|
+
body: `Failed to inject ${name} from ${numTrackers} trackers: ${trackersListStr}`,
|
54
|
+
extra: { infoHashes, trackers },
|
55
|
+
});
|
56
|
+
}
|
57
|
+
}
|
19
58
|
export function initializePushNotifier() {
|
20
59
|
const { notificationWebhookUrl } = getRuntimeConfig();
|
21
60
|
pushNotifier = new PushNotifier(notificationWebhookUrl);
|
package/dist/pushNotifier.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"pushNotifier.js","sourceRoot":"","sources":["../src/pushNotifier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;
|
1
|
+
{"version":3,"file":"pushNotifier.js","sourceRoot":"","sources":["../src/pushNotifier.ts"],"names":[],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"runtimeConfig.js","sourceRoot":"","sources":["../src/runtimeConfig.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"runtimeConfig.js","sourceRoot":"","sources":["../src/runtimeConfig.ts"],"names":[],"mappings":"AA6BA,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAChC,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,SAAS;CACpB,CAAC;AAEF,IAAI,aAA4B,CAAC;AAEjC,MAAM,UAAU,gBAAgB,CAAC,SAAwB;IACxD,aAAa,GAAG,SAAS,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC/B,OAAO,aAAa,CAAC;AACtB,CAAC"}
|
package/dist/torrent.js
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
import fs, { promises as fsPromises } from "fs";
|
2
|
+
import Fuse from "fuse.js";
|
2
3
|
import parseTorrent from "parse-torrent";
|
3
4
|
import path, { join } from "path";
|
4
5
|
import simpleGet from "simple-get";
|
@@ -130,6 +131,19 @@ export async function loadTorrentDirLight() {
|
|
130
131
|
}
|
131
132
|
return searchees;
|
132
133
|
}
|
134
|
+
export async function getTorrentByFuzzyName(name) {
|
135
|
+
const allNames = await db("torrent").select("name", "file_path");
|
136
|
+
// @ts-expect-error fuse types are confused
|
137
|
+
const potentialMatches = new Fuse(allNames, {
|
138
|
+
keys: ["name"],
|
139
|
+
distance: 6,
|
140
|
+
threshold: 0.25,
|
141
|
+
}).search(name);
|
142
|
+
if (potentialMatches.length === 0)
|
143
|
+
return null;
|
144
|
+
const [firstMatch] = potentialMatches;
|
145
|
+
return parseTorrentFromFilename(firstMatch.item.file_path);
|
146
|
+
}
|
133
147
|
export async function getTorrentByCriteria(criteria) {
|
134
148
|
const findResult = await db("torrent")
|
135
149
|
.where((b) => {
|
package/dist/torrent.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"torrent.js","sourceRoot":"","sources":["../src/torrent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,IAAI,CAAC;AAChD,OAAO,YAA0B,MAAM,eAAe,CAAC;AACvD,OAAO,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;
|
1
|
+
{"version":3,"file":"torrent.js","sourceRoot":"","sources":["../src/torrent.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "cross-seed",
|
3
|
-
"version": "4.
|
3
|
+
"version": "4.1.1",
|
4
4
|
"description": "Query Jackett for cross-seedable torrents",
|
5
5
|
"scripts": {
|
6
6
|
"test": "true",
|
@@ -30,6 +30,7 @@
|
|
30
30
|
"commander": "^8.3.0",
|
31
31
|
"fetch-blob": "^3.1.4",
|
32
32
|
"formdata-polyfill": "^4.0.10",
|
33
|
+
"fuse.js": "^6.6.2",
|
33
34
|
"knex": "^1.0.4",
|
34
35
|
"lodash-es": "^4.17.21",
|
35
36
|
"ms": "^2.1.3",
|
@@ -53,7 +54,7 @@
|
|
53
54
|
"husky": "^7.0.0",
|
54
55
|
"lint-staged": "^12.1.4",
|
55
56
|
"prettier": "^2.0.5",
|
56
|
-
"typescript": "^4.7.
|
57
|
+
"typescript": "^4.7.4"
|
57
58
|
},
|
58
59
|
"prettier": {
|
59
60
|
"tabWidth": 4,
|