Skip to content

Commit cc12db9

Browse files
committed
feat: Support scoping jackett searches with filter
* Created new setting for jackett that allows specifying a [filter-index](https://github.com/Jackett/Jackett?tab=readme-ov-file#filter-indexers) when not set will default to `all` leaving current behavior in place. * Updated initial migrations to include new `nefarious_settings.jackett_filter_index` * Updated `verify_settings_jackett` to include the set `nefarious_settings.jackett_filter_index` during verification * Updated `get_jackett_search_url` to return with the current `nefarious_settings.jackett_filter_index` used. Issue: [Fixes Issue #292](#292)
1 parent 330ff26 commit cc12db9

File tree

5 files changed

+19
-6
lines changed

5 files changed

+19
-6
lines changed

src/frontend/src/app/settings/settings.component.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ export class SettingsComponent implements OnInit, AfterContentChecked {
4040
'jackett_host': [settings['jackett_host'], Validators.required],
4141
'jackett_port': [settings['jackett_port'], Validators.required],
4242
'jackett_token': [settings['jackett_token'], Validators.required],
43+
'jackett_filter_index': [settings['jackett_filter_index'], Validators.required],
4344
'transmission_host': [settings['transmission_host'], Validators.required],
4445
'transmission_port': [settings['transmission_port'], Validators.required],
4546
'transmission_user': [settings['transmission_user']],

src/nefarious/jackett.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,8 @@
22

33

44
def get_jackett_search_url(nefarious_settings: NefariousSettings):
5-
return 'http://{}:{}/api/v2.0/indexers/all/results'.format(
6-
nefarious_settings.jackett_host, nefarious_settings.jackett_port)
5+
return "http://{}:{}/api/v2.0/indexers/{}/results".format(
6+
nefarious_settings.jackett_host,
7+
nefarious_settings.jackett_port,
8+
nefarious_settings.jackett_filter_index,
9+
)

src/nefarious/migrations/0001_initial.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ class Migration(migrations.Migration):
2323
('jackett_host', models.CharField(default='localhost', max_length=500)),
2424
('jackett_port', models.IntegerField(default=9117)),
2525
('jackett_token', models.CharField(max_length=500)),
26+
('jackett_filter_index', models.CharField(default='all', max_length=500)),
2627
('transmission_host', models.CharField(max_length=500)),
2728
('transmission_port', models.IntegerField(default=9091)),
2829
('transmission_user', models.CharField(max_length=500)),

src/nefarious/models.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ class NefariousSettings(models.Model):
2626
jackett_host = models.CharField(max_length=500, default='jackett')
2727
jackett_port = models.IntegerField(default=9117)
2828
jackett_token = models.CharField(max_length=500, default=JACKETT_TOKEN_DEFAULT)
29+
jackett_filter_index = models.CharField(max_length=500, default="all", help_text='Optional Jackett index filter to use for searches')
2930

3031
# transmission
3132
transmission_host = models.CharField(max_length=500, default='transmission')

src/nefarious/utils.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,13 +66,20 @@ def verify_settings_transmission(nefarious_settings: NefariousSettings):
6666

6767
def verify_settings_jackett(nefarious_settings: NefariousSettings):
6868
"""
69-
A special "all" indexer is available at /api/v2.0/indexers/all/results/torznab/api. It will query all configured indexers and return the combined results.
69+
A special "all" indexer or filter-index is available at /api/v2.0/indexers/all/results/torznab/api. It will query all configured indexers and return the combined results.
7070
NOTE: /api/v2.0/indexers/all/results will return json results vs torznab's xml response
7171
"""
7272
try:
73-
# make an unspecified query to the "all" indexer results endpoint and see if it's successful
74-
response = requests.get('http://{}:{}/api/v2.0/indexers/all/results'.format(
75-
nefarious_settings.jackett_host, nefarious_settings.jackett_port), params={'apikey': nefarious_settings.jackett_token}, timeout=60)
73+
# make an unspecified query to the indexer results endpoint and see if it's successful
74+
response = requests.get(
75+
"http://{}:{}/api/v2.0/indexers/{}/results".format(
76+
nefarious_settings.jackett_host,
77+
nefarious_settings.jackett_port,
78+
nefarious_settings.jackett_filter_index,
79+
),
80+
params={"apikey": nefarious_settings.jackett_token},
81+
timeout=60,
82+
)
7683
response.raise_for_status()
7784
return response.json()
7885
except Exception as e:

0 commit comments

Comments
 (0)