1
0
Fork 0
mirror of https://github.com/Jackett/Jackett synced 2025-02-22 22:31:09 +00:00

Torznab: add support for music-search

This commit is contained in:
kaso17 2017-10-18 18:30:41 +02:00
parent d0d51a907e
commit adcfade7f2
5 changed files with 81 additions and 0 deletions

View file

@ -86,6 +86,18 @@ namespace Jackett.Indexers.Abstract
queryCollection.Add("searchstr", searchString);
}
if (query.Artist != null)
queryCollection.Add("artistname", query.Artist);
if (query.Label != null)
queryCollection.Add("recordlabel", query.Label);
if (query.Year != null)
queryCollection.Add("year", query.Year.ToString());
if (query.Album != null)
queryCollection.Add("groupname", query.Album);
foreach (var cat in MapTorznabCapsToTrackers(query))
{
queryCollection.Add("filter_cat[" + cat + "]", "1");

View file

@ -213,6 +213,8 @@ namespace Jackett.Indexers
return true;
if (caps.MovieSearchAvailable && query.IsMovieSearch)
return true;
if (caps.MusicSearchAvailable && query.IsMusicSearch)
return true;
if (caps.SupportsTVRageSearch && query.IsTVRageSearch)
return true;
if (caps.SupportsImdbSearch && query.IsImdbQuery)

View file

@ -16,6 +16,12 @@ namespace Jackett.Models.DTO
public string rid { get; set; }
public string season { get; set; }
public string ep { get; set; }
public string album { get; set; }
public string artist { get; set; }
public string label { get; set; }
public string track { get; set; }
public string year { get; set; }
public string genre { get; set; }
public static TorznabQuery ToTorznabQuery(TorznabRequest request)
{
@ -53,6 +59,19 @@ namespace Jackett.Models.DTO
if (!request.season.IsNullOrEmptyOrWhitespace())
query.Season = int.Parse(request.season);
if (!request.album.IsNullOrEmptyOrWhitespace())
query.Album = request.album;
if (!request.artist.IsNullOrEmptyOrWhitespace())
query.Artist = request.artist;
if (!request.label.IsNullOrEmptyOrWhitespace())
query.Label = request.label;
if (!request.track.IsNullOrEmptyOrWhitespace())
query.Track = request.track;
if (!request.year.IsNullOrEmptyOrWhitespace())
query.Year = int.Parse(request.year);
if (!request.genre.IsNullOrEmptyOrWhitespace())
query.Genre = request.genre.Split(',');
query.ExpandCatsToSubCats();
return query;

View file

@ -23,6 +23,16 @@ namespace Jackett.Models
public bool SupportsImdbSearch { get; set; }
public bool MusicSearchAvailable
{
get
{
return (SupportedMusicSearchParamsList.Count > 0);
}
}
public List<string> SupportedMusicSearchParamsList;
public List<TorznabCategory> Categories { get; private set; }
public TorznabCapabilities()
@ -33,6 +43,7 @@ namespace Jackett.Models
MovieSearchAvailable = false;
SupportsTVRageSearch = false;
SupportsImdbSearch = false;
SupportedMusicSearchParamsList = new List<string>();
}
public TorznabCapabilities(params TorznabCategory[] cats)
@ -41,6 +52,7 @@ namespace Jackett.Models
TVSearchAvailable = true;
SupportsTVRageSearch = false;
SupportsImdbSearch = false;
SupportedMusicSearchParamsList = new List<string>();
Categories = new List<TorznabCategory>();
Categories.AddRange(cats);
MovieSearchAvailable = Categories.Any(i => TorznabCatType.Movies.Contains(i));
@ -68,6 +80,14 @@ namespace Jackett.Models
}
}
string SupportedMusicSearchParams
{
get
{
return string.Join(",", SupportedMusicSearchParamsList);
}
}
public bool SupportsCategories(int[] categories)
{
var subCategories = Categories.SelectMany(c => c.SubCategories);
@ -112,6 +132,10 @@ namespace Jackett.Models
new XElement("movie-search",
new XAttribute("available", MovieSearchAvailable ? "yes" : "no"),
new XAttribute("supportedParams", SupportedMovieSearchParams)
),
new XElement("music-search",
new XAttribute("available", MusicSearchAvailable ? "yes" : "no"),
new XAttribute("supportedParams", SupportedMovieSearchParams)
)
),
new XElement("categories",

View file

@ -25,6 +25,13 @@ namespace Jackett.Models
public string Episode { get; set; }
public string SearchTerm { get; set; }
public string Album { get; set; }
public string Artist { get; set; }
public string Label { get; set; }
public string Track { get; set; }
public int? Year { get; set; }
public ICollection<string> Genre { get; set; }
public bool IsTest { get; set; }
public string ImdbIDShort { get { return (ImdbID != null ? ImdbID.TrimStart('t') : null); } }
@ -55,6 +62,14 @@ namespace Jackett.Models
}
}
public bool IsMusicSearch
{
get
{
return QueryType == "music";
}
}
public bool IsTVRageSearch
{
get
@ -148,6 +163,15 @@ namespace Jackett.Models
ret.Episode = Episode;
ret.SearchTerm = SearchTerm;
ret.IsTest = IsTest;
ret.Album = Album;
ret.Artist = Artist;
ret.Label = Label;
ret.Track = Track;
ret.Year = Year;
if (Genre != null)
{
Genre.Select(item => item.Clone()).ToList();
}
if (QueryStringParts != null && QueryStringParts.Length > 0)
{
ret.QueryStringParts = new string[QueryStringParts.Length];