mirror of https://github.com/Jackett/Jackett
core: enable genre queries (#13394)
Co-authored-by: garfield69 <garfieldsixtynine@gmail.com> Co-authored-by: garfield69 <garfield69@outlook.com>
This commit is contained in:
parent
507f2f22f7
commit
75ae674998
|
@ -88,8 +88,13 @@ search:
|
|||
poster:
|
||||
selector: img
|
||||
attribute: src
|
||||
description:
|
||||
genre:
|
||||
selector: div.short_game_genre
|
||||
filters:
|
||||
- name: re_replace
|
||||
args: ["\\s+/\\s+", ", "]
|
||||
description:
|
||||
text: "{{ .Result.genre }}"
|
||||
date:
|
||||
text: now
|
||||
seeders:
|
||||
|
|
|
@ -177,8 +177,7 @@ search:
|
|||
year_desc:
|
||||
optional: true
|
||||
selector: year
|
||||
genre_desc:
|
||||
optional: true
|
||||
genre:
|
||||
selector: genres
|
||||
_tagline_desc:
|
||||
optional: true
|
||||
|
@ -222,5 +221,5 @@ search:
|
|||
- name: regexp
|
||||
args: "(.+?), $"
|
||||
description:
|
||||
text: "{{ if .Result.title_desc }}Title: {{ .Result.title_desc }}</br>{{ else }}{{ end }}{{ if .Result.year_desc }}Year: {{ .Result.year_desc }}</br>{{ else }}{{ end }}{{ if .Result.genre_desc }}Genres: {{ .Result.genre_desc }}</br>{{ else }}{{ end }}{{ if .Result._tagline_desc }}Tagline: {{ .Result._tagline_desc }}</br>{{ else }}{{ end }}{{ if .Result._cast_desc }}Cast: {{ .Result._cast_desc }}</br>{{ else }}{{ end }}{{ if .Result._rating_desc }}Rating: {{ .Result._rating_desc }}</br>{{ else }}{{ end }}{{ if .Result._tag_desc }}Tags: {{ .Result._tag_desc }}</br>{{ else }}{{ end }}{{ if .Result._predate_desc }}PRE: {{ .Result._predate_desc }}</br>{{ else }}{{ end }}{{ if .Result._section_desc }}Section: {{ .Result._section_desc }}{{ else }}{{ end }}"
|
||||
text: "{{ if .Result.title_desc }}Title: {{ .Result.title_desc }}</br>{{ else }}{{ end }}{{ if .Result.year_desc }}Year: {{ .Result.year_desc }}</br>{{ else }}{{ end }}{{ if .Result.genre }}Genres: {{ .Result.genre }}</br>{{ else }}{{ end }}{{ if .Result._tagline_desc }}Tagline: {{ .Result._tagline_desc }}</br>{{ else }}{{ end }}{{ if .Result._cast_desc }}Cast: {{ .Result._cast_desc }}</br>{{ else }}{{ end }}{{ if .Result._rating_desc }}Rating: {{ .Result._rating_desc }}</br>{{ else }}{{ end }}{{ if .Result._tag_desc }}Tags: {{ .Result._tag_desc }}</br>{{ else }}{{ end }}{{ if .Result._predate_desc }}PRE: {{ .Result._predate_desc }}</br>{{ else }}{{ end }}{{ if .Result._section_desc }}Section: {{ .Result._section_desc }}{{ else }}{{ end }}"
|
||||
# json rartracker api v1
|
||||
|
|
|
@ -36,7 +36,7 @@ caps:
|
|||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep]
|
||||
movie-search: [q]
|
||||
movie-search: [q, genre]
|
||||
music-search: [q]
|
||||
book-search: [q]
|
||||
|
||||
|
@ -95,7 +95,7 @@ search:
|
|||
# 0 name, 1 performer, 2 director
|
||||
miben: 0
|
||||
# genre
|
||||
cimke: ""
|
||||
cimke: "{{ .Query.Genre }}"
|
||||
# does not support imdbid search and does not return imdb link in results
|
||||
|
||||
rows:
|
||||
|
@ -153,9 +153,13 @@ search:
|
|||
case:
|
||||
img[src="pic/dupla_up.png"]: 2
|
||||
"*": 1
|
||||
genre:
|
||||
selector: div i
|
||||
filters:
|
||||
- name: regexp
|
||||
args: "\\((.+?)\\)"
|
||||
description:
|
||||
selector: div:nth-child(2)
|
||||
remove: a
|
||||
text: "{{ .Result.genre }}"
|
||||
minimumratio:
|
||||
text: 1.0
|
||||
minimumseedtime:
|
||||
|
|
|
@ -26,8 +26,8 @@ caps:
|
|||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep, imdbid]
|
||||
movie-search: [q, imdbid]
|
||||
music-search: [q]
|
||||
movie-search: [q, imdbid, genre]
|
||||
music-search: [q, genre]
|
||||
book-search: [q]
|
||||
|
||||
settings:
|
||||
|
@ -97,8 +97,8 @@ search:
|
|||
scene: 0
|
||||
# 0 all, 1 Polish, 2 non-Polish, 4 subtitled
|
||||
pl: 0
|
||||
# subcat blank=all
|
||||
sub: ""
|
||||
# genre blank=all
|
||||
sub: "{{ .Query.Genre }}"
|
||||
# title, both, nfo
|
||||
search_in: "{{ if .Query.IMDBID }}nfo{{ else }}title{{ end }}"
|
||||
sort: "{{ .Config.sort }}"
|
||||
|
@ -131,20 +131,14 @@ search:
|
|||
download:
|
||||
selector: a[href^="downloadssl.php?id="]
|
||||
attribute: href
|
||||
_genre:
|
||||
optional: true
|
||||
genre:
|
||||
selector: td:nth-child(2) > small
|
||||
filters:
|
||||
- name: prepend
|
||||
args: "Genre: "
|
||||
- name: append
|
||||
args: "\n<br>"
|
||||
_language:
|
||||
optional: true
|
||||
selector: img[src="pic/pl.png"]
|
||||
filters:
|
||||
- name: append
|
||||
args: "Language: polish\n<br>"
|
||||
args: "Language: Polish\n<br>"
|
||||
_subbed:
|
||||
optional: true
|
||||
selector: img[src="pic/napisy.png"]
|
||||
|
@ -152,7 +146,7 @@ search:
|
|||
- name: append
|
||||
args: "Subbed\n<br>"
|
||||
description:
|
||||
text: "{{ .Result._genre }}{{ .Result._language }}{{ .Result._subbed }}"
|
||||
text: "Genre: {{ .Result.genre }}\n<br>{{ .Result._language }}{{ .Result._subbed }}"
|
||||
imdbid:
|
||||
selector: a[href*="imdb.com/title/tt"]
|
||||
date:
|
||||
|
|
|
@ -96,8 +96,8 @@ search:
|
|||
inputs:
|
||||
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
|
||||
search: "{{ .Keywords }}"
|
||||
# 0 name & desc, 1 name, 2 desc, 3 genre
|
||||
incldesc: 1
|
||||
# 0 any sub, 2 RO sub
|
||||
inclrosub: 0
|
||||
# 0 active, 1 incldead, 2 onlydead
|
||||
incldead: 1
|
||||
# 0 inclfree, 1 notfree, 2 onlyfree
|
||||
|
@ -128,6 +128,9 @@ search:
|
|||
download:
|
||||
selector: a[href^="download.php?id="]
|
||||
attribute: href
|
||||
imdbid:
|
||||
selector: a[href*="imdb.com/title/tt"]
|
||||
attribute: href
|
||||
size:
|
||||
selector: td:nth-child(4)
|
||||
date:
|
||||
|
@ -152,6 +155,13 @@ search:
|
|||
case:
|
||||
img[src="images/t_extern.png"]: 0
|
||||
"*": 1
|
||||
genre:
|
||||
selector: td div
|
||||
filters:
|
||||
- name: regexp
|
||||
args: "Genre: (.+?)$"
|
||||
description:
|
||||
text: "{{ .Result.genre }}"
|
||||
minimumratio:
|
||||
text: 1.0
|
||||
# TorrentTrader-Ro 3.0
|
||||
|
|
|
@ -184,7 +184,7 @@
|
|||
"uniqueItems": true,
|
||||
"items": {
|
||||
"type": "string",
|
||||
"enum": ["q", "imdbid", "tmdbid", "traktid", "doubanid"]
|
||||
"enum": ["q", "imdbid", "tmdbid", "traktid", "doubanid", "genre"]
|
||||
}
|
||||
},
|
||||
"music-search": {
|
||||
|
@ -192,7 +192,7 @@
|
|||
"uniqueItems": true,
|
||||
"items": {
|
||||
"type": "string",
|
||||
"enum": ["q", "album", "artist", "label", "track", "year"]
|
||||
"enum": ["q", "album", "artist", "label", "track", "year", "genre"]
|
||||
}
|
||||
},
|
||||
"book-search": {
|
||||
|
|
|
@ -178,8 +178,7 @@ search:
|
|||
year_desc:
|
||||
optional: true
|
||||
selector: year
|
||||
genre_desc:
|
||||
optional: true
|
||||
genre:
|
||||
selector: genres
|
||||
_tagline_desc:
|
||||
optional: true
|
||||
|
@ -263,5 +262,5 @@ search:
|
|||
- name: regexp
|
||||
args: "(.+?), $"
|
||||
description:
|
||||
text: "{{ if .Result.title_desc }}Title: {{ .Result.title_desc }}</br>{{ else }}{{ end }}{{ if .Result.year_desc }}Year: {{ .Result.year_desc }}</br>{{ else }}{{ end }}{{ if .Result.genre_desc }}Genres: {{ .Result.genre_desc }}</br>{{ else }}{{ end }}{{ if .Result._tagline_desc }}Tagline: {{ .Result._tagline_desc }}</br>{{ else }}{{ end }}{{ if .Result._cast_desc }}Cast: {{ .Result._cast_desc }}</br>{{ else }}{{ end }}{{ if .Result._rating_desc }}Rating: {{ .Result._rating_desc }}</br>{{ else }}{{ end }}{{ if .Result._plot_desc }}Plot: {{ .Result._plot_desc }}</br>{{ else }}{{ end }}{{ if .Result._tag_desc }}Tags: {{ .Result._tag_desc }}</br>{{ else }}{{ end }}{{ if .Result._predate_desc }}PRE: {{ .Result._predate_desc }}</br>{{ else }}{{ end }}{{ if .Result._section_desc }}Section: {{ .Result._section_desc }}{{ else }}{{ end }}"
|
||||
text: "{{ if .Result.title_desc }}Title: {{ .Result.title_desc }}</br>{{ else }}{{ end }}{{ if .Result.year_desc }}Year: {{ .Result.year_desc }}</br>{{ else }}{{ end }}{{ if .Result.genre }}Genres: {{ .Result.genre }}</br>{{ else }}{{ end }}{{ if .Result._tagline_desc }}Tagline: {{ .Result._tagline_desc }}</br>{{ else }}{{ end }}{{ if .Result._cast_desc }}Cast: {{ .Result._cast_desc }}</br>{{ else }}{{ end }}{{ if .Result._rating_desc }}Rating: {{ .Result._rating_desc }}</br>{{ else }}{{ end }}{{ if .Result._plot_desc }}Plot: {{ .Result._plot_desc }}</br>{{ else }}{{ end }}{{ if .Result._tag_desc }}Tags: {{ .Result._tag_desc }}</br>{{ else }}{{ end }}{{ if .Result._predate_desc }}PRE: {{ .Result._predate_desc }}</br>{{ else }}{{ end }}{{ if .Result._section_desc }}Section: {{ .Result._section_desc }}{{ else }}{{ end }}"
|
||||
# json rartracker api v1
|
||||
|
|
|
@ -48,7 +48,7 @@ caps:
|
|||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep]
|
||||
movie-search: [q]
|
||||
movie-search: [q, genre]
|
||||
music-search: [q]
|
||||
book-search: [q]
|
||||
|
||||
|
@ -107,7 +107,7 @@ search:
|
|||
# 0 active, 1 all, 2 dead, 3 recomended, 4 double, 5 free, 6 MZ releases, 7 Race torrents
|
||||
# note: option 4 and 5 do not actually filter. everything is returned.
|
||||
incldead: "{{ if .Config.freeleech }}5{{ else }}1{{ end }}"
|
||||
genre: 0
|
||||
genre: "{{ .Query.Genre }}"
|
||||
# 0 name, 1 descr, 2 both
|
||||
blah: 0
|
||||
sort: "{{ .Config.sort }}"
|
||||
|
@ -171,6 +171,13 @@ search:
|
|||
case:
|
||||
"font[color=\"#2A821E\"]:contains(\"x2\")": 2
|
||||
"*": 1
|
||||
genre:
|
||||
selector: td.torrent:nth-child(2)
|
||||
filters:
|
||||
- name: regexp
|
||||
args: "\\((.+?)\\)"
|
||||
description:
|
||||
text: "{{ .Result.genre }}"
|
||||
minimumratio:
|
||||
text: 1.0
|
||||
minimumseedtime:
|
||||
|
|
|
@ -38,7 +38,7 @@ namespace Jackett.Common.Indexers
|
|||
set => base.configData = value;
|
||||
}
|
||||
|
||||
protected readonly string[] OptionalFields = { "imdb", "imdbid", "tmdbid", "rageid", "tvdbid", "tvmazeid", "traktid", "doubanid", "poster", "description" };
|
||||
protected readonly string[] OptionalFields = { "imdb", "imdbid", "tmdbid", "rageid", "tvdbid", "tvmazeid", "traktid", "doubanid", "poster", "genre", "description" };
|
||||
|
||||
private static readonly string[] _SupportedLogicFunctions =
|
||||
{
|
||||
|
@ -1307,7 +1307,7 @@ namespace Jackett.Common.Indexers
|
|||
variables[".Query.Artist"] = query.Artist;
|
||||
variables[".Query.Label"] = query.Label;
|
||||
variables[".Query.Track"] = query.Track;
|
||||
//variables[".Query.Genre"] = query.Genre ?? new List<string>();
|
||||
variables[".Query.Genre"] = query.Genre;
|
||||
variables[".Query.Episode"] = query.GetEpisodeSearchString();
|
||||
variables[".Query.Author"] = query.Author;
|
||||
variables[".Query.Title"] = query.Title;
|
||||
|
@ -2080,8 +2080,10 @@ namespace Jackett.Common.Indexers
|
|||
value = release.DoubanId.ToString();
|
||||
break;
|
||||
case "genre":
|
||||
if (release.Genres == null)
|
||||
release.Genres = new List<string>();
|
||||
release.Genres = release.Genres.Union(value.Split(',')).ToList();
|
||||
value = release.Genres.ToString();
|
||||
// value = release.Genres.ToString();
|
||||
break;
|
||||
case "year":
|
||||
release.Year = ReleaseInfo.GetBytes(value);
|
||||
|
|
|
@ -94,7 +94,7 @@ namespace Jackett.Common.Models.DTO
|
|||
if (!string.IsNullOrWhiteSpace(request.year))
|
||||
query.Year = int.Parse(request.year);
|
||||
if (!string.IsNullOrWhiteSpace(request.genre))
|
||||
query.Genre = request.genre.Split(',');
|
||||
query.Genre = request.genre;
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(request.title))
|
||||
query.Title = request.title;
|
||||
|
|
|
@ -25,7 +25,8 @@ namespace Jackett.Common.Models
|
|||
ImdbId,
|
||||
TmdbId,
|
||||
TraktId,
|
||||
DoubanId
|
||||
DoubanId,
|
||||
Genre
|
||||
}
|
||||
|
||||
public enum MusicSearchParam
|
||||
|
@ -35,7 +36,8 @@ namespace Jackett.Common.Models
|
|||
Artist,
|
||||
Label,
|
||||
Track,
|
||||
Year
|
||||
Year,
|
||||
Genre
|
||||
}
|
||||
|
||||
public enum BookSearchParam
|
||||
|
@ -72,6 +74,7 @@ namespace Jackett.Common.Models
|
|||
public bool MovieSearchTmdbAvailable => (MovieSearchParams.Contains(MovieSearchParam.TmdbId));
|
||||
public bool MovieSearchTraktAvailable => (MovieSearchParams.Contains(MovieSearchParam.TraktId));
|
||||
public bool MovieSearchDoubanAvailable => (MovieSearchParams.Contains(MovieSearchParam.DoubanId));
|
||||
public bool MovieSearchGenreAvailable => (MovieSearchParams.Contains(MovieSearchParam.Genre));
|
||||
|
||||
public List<MusicSearchParam> MusicSearchParams;
|
||||
public bool MusicSearchAvailable => (MusicSearchParams.Count > 0);
|
||||
|
@ -80,6 +83,7 @@ namespace Jackett.Common.Models
|
|||
public bool MusicSearchLabelAvailable => (MusicSearchParams.Contains(MusicSearchParam.Label));
|
||||
public bool MusicSearchTrackAvailable => (MusicSearchParams.Contains(MusicSearchParam.Track));
|
||||
public bool MusicSearchYearAvailable => (MusicSearchParams.Contains(MusicSearchParam.Year));
|
||||
public bool MusicSearchGenreAvailable => (MusicSearchParams.Contains(MusicSearchParam.Genre));
|
||||
|
||||
public List<BookSearchParam> BookSearchParams;
|
||||
public bool BookSearchAvailable => (BookSearchParams.Count > 0);
|
||||
|
@ -219,6 +223,8 @@ namespace Jackett.Common.Models
|
|||
parameters.Add("traktid");
|
||||
if (MovieSearchDoubanAvailable)
|
||||
parameters.Add("doubanid");
|
||||
if (MovieSearchGenreAvailable)
|
||||
parameters.Add("genre");
|
||||
return string.Join(",", parameters);
|
||||
}
|
||||
|
||||
|
@ -235,6 +241,8 @@ namespace Jackett.Common.Models
|
|||
parameters.Add("track");
|
||||
if (MusicSearchYearAvailable)
|
||||
parameters.Add("year");
|
||||
if (MusicSearchGenreAvailable)
|
||||
parameters.Add("genre");
|
||||
return string.Join(",", parameters);
|
||||
}
|
||||
|
||||
|
|
|
@ -33,7 +33,7 @@ namespace Jackett.Common.Models
|
|||
public string Label { get; set; }
|
||||
public string Track { get; set; }
|
||||
public int? Year { get; set; }
|
||||
public ICollection<string> Genre { get; set; }
|
||||
public string Genre { get; set; }
|
||||
|
||||
public string Author { get; set; }
|
||||
public string Title { get; set; }
|
||||
|
@ -141,6 +141,7 @@ namespace Jackett.Common.Models
|
|||
Artist = Artist,
|
||||
Label = Label,
|
||||
Track = Track,
|
||||
Genre = Genre,
|
||||
Year = Year,
|
||||
Author = Author,
|
||||
Title = Title,
|
||||
|
|
Loading…
Reference in New Issue