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:
parent
d0d51a907e
commit
adcfade7f2
5 changed files with 81 additions and 0 deletions
|
@ -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");
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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];
|
||||
|
|
Loading…
Reference in a new issue