From e060c82cd3164e925821e1eadb0158c474b0d938 Mon Sep 17 00:00:00 2001 From: Garfield69 Date: Sun, 10 Mar 2019 17:13:32 +1300 Subject: [PATCH] beyondhd: add imdbid support (torznab and dashboard search) resolves #4850 --- src/Jackett.Common/Indexers/BeyondHD.cs | 27 +++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/src/Jackett.Common/Indexers/BeyondHD.cs b/src/Jackett.Common/Indexers/BeyondHD.cs index 690aeb69b..e3823b64e 100644 --- a/src/Jackett.Common/Indexers/BeyondHD.cs +++ b/src/Jackett.Common/Indexers/BeyondHD.cs @@ -43,6 +43,8 @@ namespace Jackett.Common.Indexers configData.DisplayText.Value = "Go to the general tab of your BeyondHD user profile and create/copy the Login Link."; + TorznabCaps.SupportsImdbSearch = true; + AddCategoryMapping(37, TorznabCatType.MoviesBluRay, "Movie / Blu-ray"); AddCategoryMapping(71, TorznabCatType.Movies3D, "Movie / 3D"); AddCategoryMapping(83, TorznabCatType.Movies3D, "FraMeSToR 3D"); @@ -101,12 +103,22 @@ namespace Jackett.Common.Indexers protected override async Task> PerformQuery(TorznabQuery query) { List releases = new List(); + Regex IMDBRegEx = new Regex(@"tt(\d+)", RegexOptions.Compiled); var searchString = query.GetQueryString(); var searchUrl = SearchUrl; var queryCollection = new NameValueCollection(); + var searchStringIsImdbQuery = (ParseUtil.GetImdbID(searchString) != null); - if (!string.IsNullOrWhiteSpace(searchString)) + if (query.IsImdbQuery) + { + queryCollection.Add("search", query.ImdbID); + } + else if (searchStringIsImdbQuery) + { + queryCollection.Add("search", searchString); + } + else if (!string.IsNullOrWhiteSpace(searchString)) { Regex ReplaceRegex = new Regex("[^a-zA-Z0-9]+"); searchString = "%" + ReplaceRegex.Replace(searchString, "%") + "%"; @@ -139,15 +151,15 @@ namespace Jackett.Common.Indexers release.Category = MapTrackerCatToNewznab(catStr); var qLink = row.ChildElements.ElementAt(2).FirstChild.Cq(); - release.Link = new Uri(SiteLink + "/" + qLink.Attr("href")); + release.Link = new Uri(SiteLink + qLink.Attr("href")); var torrentId = qLink.Attr("href").Split('=').Last(); var descCol = row.ChildElements.ElementAt(3); var qCommentLink = descCol.FirstChild.Cq(); release.Title = qCommentLink.Text(); - if ((query.ImdbID == null || !TorznabCaps.SupportsImdbSearch) && !query.MatchQueryStringAND(release.Title)) + if (!query.IsImdbQuery && !query.MatchQueryStringAND(release.Title)) continue; - release.Comments = new Uri(SiteLink + "/" + qCommentLink.Attr("href")); + release.Comments = new Uri(SiteLink + qCommentLink.Attr("href")); release.Guid = release.Comments; release.Link = new Uri($"{SiteLink}download.php?torrent={torrentId}"); @@ -166,6 +178,13 @@ namespace Jackett.Common.Indexers var grabs = qRow.Find("td:nth-child(9) > a").Get(0).FirstChild.ToString(); release.Grabs = ParseUtil.CoerceInt(grabs); + var imdbLink = qRow.Find("a[href*=\"imdb.com/title/\"]").Attr("href"); + if (imdbLink != null) + { + var IMDBMatch = IMDBRegEx.Match(imdbLink); + release.Imdb = ParseUtil.CoerceLong(IMDBMatch.Groups[1].Value); + } + release.DownloadVolumeFactor = 0; release.UploadVolumeFactor = 1;