public IList <Tv.Movie> ParseResponse(NetImportResponse importResponse) { _importResponse = importResponse; var movies = new List <Tv.Movie>(); if (!PreProcess(_importResponse)) { return(movies); } var jsonResponse = JsonConvert.DeserializeObject <List <StevenLuResponse> >(_importResponse.Content); // no movies were return if (jsonResponse == null) { return(movies); } foreach (var item in jsonResponse) { movies.AddIfNotNull(new Tv.Movie() { Title = item.title, ImdbId = item.imdb_id, }); } return(movies); }
protected virtual XDocument LoadXmlDocument(NetImportResponse indexerResponse) { try { var content = indexerResponse.Content; content = ReplaceEntities.Replace(content, ReplaceEntity); using (var xmlTextReader = XmlReader.Create(new StringReader(content), new XmlReaderSettings { DtdProcessing = DtdProcessing.Ignore, IgnoreComments = true })) { return(XDocument.Load(xmlTextReader)); } } catch (XmlException ex) { var contentSample = indexerResponse.Content.Substring(0, Math.Min(indexerResponse.Content.Length, 512)); _logger.Debug("Truncated response content (originally {0} characters): {1}", indexerResponse.Content.Length, contentSample); ex.Data.Add("ContentLength", indexerResponse.Content.Length); ex.Data.Add("ContentSample", contentSample); throw; } }
public virtual IList <Movie> ParseResponse(NetImportResponse importResponse) { _importResponse = importResponse; var movies = new List <Movie>(); if (!PreProcess(importResponse)) { return(movies); } var document = LoadXmlDocument(importResponse); var items = GetItems(document); foreach (var item in items) { try { var reportInfo = ProcessItem(item); movies.AddIfNotNull(reportInfo); } catch (Exception itemEx) { //itemEx.Data.Add("Item", item.Title()); _logger.Error(itemEx, "An error occurred while processing feed item from " + importResponse.Request.Url); } } return(movies); }
public IList <Movies.Movie> ParseResponse(NetImportResponse importResponse) { _importResponse = importResponse; var movies = new List <Movies.Movie>(); if (!PreProcess(_importResponse)) { return(movies); } var jsonResponse = JsonConvert.DeserializeObject <CouchPotatoResponse>(_importResponse.Content); // no movies were return if (jsonResponse.total == 0) { return(movies); } var responseData = jsonResponse.movies; foreach (var item in responseData) { int tmdbid = item.info?.tmdb_id ?? 0; // Fix weird error reported by Madmanali93 if (item.type != null && item.releases != null) { // if there are no releases at all the movie wasn't found on CP, so return movies if (!item.releases.Any() && item.type == "movie") { movies.AddIfNotNull(new Movies.Movie() { Title = item.title, ImdbId = item.info.imdb, TmdbId = tmdbid }); } else { // snatched,missing,available,downloaded // done,seeding bool isCompleted = item.releases.Any(rel => (rel.status == "done" || rel.status == "seeding")); if (!isCompleted) { movies.AddIfNotNull(new Movies.Movie() { Title = item.title, ImdbId = item.info.imdb, TmdbId = tmdbid, Monitored = false }); } } } } return(movies); }
public IList <Movies.Movie> ParseResponse(NetImportResponse importResponse) { _importResponse = importResponse; var movies = new List <Movies.Movie>(); if (!PreProcess(_importResponse)) { return(movies); } if (_settings.ListType != (int)TMDbListType.List) { var jsonResponse = JsonConvert.DeserializeObject <MovieSearchRoot>(_importResponse.Content); // no movies were return if (jsonResponse == null) { return(movies); } return(jsonResponse.results.SelectList(_skyhookProxy.MapMovie)); } else { var jsonResponse = JsonConvert.DeserializeObject <ListResponseRoot>(_importResponse.Content); // no movies were return if (jsonResponse == null) { return(movies); } foreach (var movie in jsonResponse.items) { // Skip non-movie things if (movie.media_type != "movie") { continue; } // Movies with no Year Fix if (string.IsNullOrWhiteSpace(movie.release_date)) { continue; } movies.AddIfNotNull(_skyhookProxy.MapMovie(movie)); } } return(movies); }
public IList <Tv.Movie> ParseResponse(NetImportResponse importResponse) { _importResponse = importResponse; var movies = new List <Tv.Movie>(); if (!PreProcess(_importResponse)) { return(movies); } if (_settings.ListType == (int)TraktListType.Popular) { var jsonResponse = JsonConvert.DeserializeObject <List <Movie> >(_importResponse.Content); foreach (var movie in jsonResponse) { movies.AddIfNotNull(new Tv.Movie() { Title = movie.title, ImdbId = movie.ids.imdb, TmdbId = movie.ids.tmdb, Year = (movie.year ?? 0) }); } } else { var jsonResponse = JsonConvert.DeserializeObject <List <TraktResponse> >(_importResponse.Content); // no movies were return if (jsonResponse == null) { return(movies); } foreach (var movie in jsonResponse) { movies.AddIfNotNull(new Tv.Movie() { Title = movie.movie.title, ImdbId = movie.movie.ids.imdb, TmdbId = movie.movie.ids.tmdb, Year = (movie.movie.year ?? 0) }); } } return(movies); }
protected virtual bool PreProcess(NetImportResponse indexerResponse) { if (indexerResponse.HttpResponse.StatusCode != HttpStatusCode.OK) { throw new NetImportException(indexerResponse, "Indexer API call resulted in an unexpected StatusCode [{0}]", indexerResponse.HttpResponse.StatusCode); } if (indexerResponse.HttpResponse.Headers.ContentType != null && indexerResponse.HttpResponse.Headers.ContentType.Contains("text/json") && indexerResponse.HttpRequest.Headers.Accept != null && !indexerResponse.HttpRequest.Headers.Accept.Contains("text/json")) { throw new NetImportException(indexerResponse, "Indexer responded with html content. Site is likely blocked or unavailable."); } return(true); }
public IList <Movies.Movie> ParseResponse(NetImportResponse importResponse) { _importResponse = importResponse; var movies = new List <Movies.Movie>(); if (!PreProcess(_importResponse)) { return(movies); } var jsonResponse = JsonConvert.DeserializeObject <List <MovieResult> >(_importResponse.Content); // no movies were return if (jsonResponse == null) { return(movies); } return(jsonResponse.SelectList(_skyhookProxy.MapMovie)); }
protected virtual bool PreProcess(NetImportResponse indexerResponse) { try { var error = JsonConvert.DeserializeObject <RadarrError>(indexerResponse.HttpResponse.Content); if (error != null && error.Errors != null && error.Errors.Count != 0) { throw new RadarrAPIException(error); } } catch (JsonSerializationException) { //No error! } if (indexerResponse.HttpResponse.StatusCode != System.Net.HttpStatusCode.OK) { throw new HttpException(indexerResponse.HttpRequest, indexerResponse.HttpResponse); } return(true); }
public NetImportException(NetImportResponse response, string message, params object[] args) : base(message, args) { _netImportResponse = response; }
public NetImportException(NetImportResponse response, string message) : base(message) { _netImportResponse = response; }