Beispiel #1
0
        public IList <ImportListItemInfo> ParseResponse(ImportListResponse importListResponse)
        {
            _importListResponse = importListResponse;

            var items = new List <ImportListItemInfo>();

            if (!PreProcess(_importListResponse))
            {
                return(items);
            }

            var jsonResponse = JsonConvert.DeserializeObject <List <LidarrListsAlbum> >(_importListResponse.Content);

            // no albums were return
            if (jsonResponse == null)
            {
                return(items);
            }

            foreach (var item in jsonResponse)
            {
                items.AddIfNotNull(new ImportListItemInfo
                {
                    Artist = item.ArtistName,
                    Album  = item.AlbumTitle,
                    ArtistMusicBrainzId = item.ArtistId,
                    AlbumMusicBrainzId  = item.AlbumId,
                    ReleaseDate         = item.ReleaseDate.GetValueOrDefault()
                });
            }

            return(items);
        }
Beispiel #2
0
        public override IList <ImportListMovie> ParseResponse(ImportListResponse importResponse)
        {
            var movies = new List <ImportListMovie>();

            if (!PreProcess(importResponse))
            {
                return(movies);
            }

            var jsonResponse = JsonConvert.DeserializeObject <MovieSearchResource>(importResponse.Content);

            // no movies were return
            if (jsonResponse == null)
            {
                return(movies);
            }

            foreach (var movie in jsonResponse.Results)
            {
                // Movies with no Year Fix
                if (string.IsNullOrWhiteSpace(movie.ReleaseDate))
                {
                    continue;
                }

                movies.AddIfNotNull(MapListMovie(movie));
            }

            return(movies);
        }
        public IList <ImportListItemInfo> ParseResponse(ImportListResponse importListResponse)
        {
            _importListResponse = importListResponse;

            var items = new List <ImportListItemInfo>();

            if (!PreProcess(_importListResponse))
            {
                return(items);
            }

            var jsonResponse = JsonConvert.DeserializeObject <List <LazyLibrarianBook> >(_importListResponse.Content);

            // no albums were return
            if (jsonResponse == null)
            {
                return(items);
            }

            foreach (var item in jsonResponse)
            {
                items.AddIfNotNull(new ImportListItemInfo
                {
                    Author             = item.AuthorName,
                    Book               = item.BookName,
                    EditionGoodreadsId = item.BookId
                });
            }

            return(items);
        }
Beispiel #4
0
        public virtual IList <ImportListItemInfo> ParseResponse(ImportListResponse importResponse)
        {
            _importResponse = importResponse;

            var series = new List <ImportListItemInfo>();

            if (!PreProcess(_importResponse))
            {
                return(series);
            }

            var jsonResponse = JsonConvert.DeserializeObject <List <TraktResponse> >(_importResponse.Content);

            // no movies were return
            if (jsonResponse == null)
            {
                return(series);
            }

            foreach (var movie in jsonResponse)
            {
                series.AddIfNotNull(new ImportListItemInfo()
                {
                    Title  = movie.Show.Title,
                    TvdbId = movie.Show.Ids.Tvdb.GetValueOrDefault()
                });
            }

            return(series);
        }
Beispiel #5
0
        protected virtual XDocument LoadXmlDocument(ImportListResponse 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;
            }
        }
Beispiel #6
0
        public IList <ImportListItemInfo> ParseResponse(ImportListResponse importListResponse)
        {
            _importListResponse = importListResponse;

            var items = new List <ImportListItemInfo>();

            if (!PreProcess(_importListResponse))
            {
                return(items);
            }

            var jsonResponse = Json.Deserialize <LastFmArtistResponse>(_importListResponse.Content);

            if (jsonResponse == null)
            {
                return(items);
            }

            foreach (var item in jsonResponse.TopArtists.Artist)
            {
                items.AddIfNotNull(new ImportListItemInfo
                {
                    Artist = item.Name,
                    ArtistMusicBrainzId = item.Mbid
                });
            }

            return(items);
        }
Beispiel #7
0
        public virtual IList <ImportListMovie> ParseResponse(ImportListResponse importResponse)
        {
            _importResponse = importResponse;

            var movies = new List <ImportListMovie>();

            if (!PreProcess(_importResponse))
            {
                return(movies);
            }

            var jsonResponse = JsonConvert.DeserializeObject <List <TraktListResource> >(_importResponse.Content);

            // no movies were return
            if (jsonResponse == null)
            {
                return(movies);
            }

            foreach (var movie in jsonResponse)
            {
                movies.AddIfNotNull(new ImportListMovie()
                {
                    Title  = movie.Movie.Title,
                    ImdbId = movie.Movie.Ids.Imdb,
                    TmdbId = movie.Movie.Ids.Tmdb,
                    Year   = movie.Movie.Year ?? 0
                });
            }

            return(movies);
        }
Beispiel #8
0
        public virtual IList <ImportListMovie> ParseResponse(ImportListResponse importResponse)
        {
            _importResponse = importResponse;

            var movies = new List <ImportListMovie>();

            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 list feed item from {0}", importResponse.Request.Url);
                }
            }

            return(movies);
        }
        public IList <ImportListItemInfo> ParseResponse(ImportListResponse importListResponse)
        {
            _importListResponse = importListResponse;

            var items = new List <ImportListItemInfo>();

            if (!PreProcess(_importListResponse))
            {
                return(items);
            }

            var jsonResponse = JsonConvert.DeserializeObject <List <HeadphonesImportArtist> >(_importListResponse.Content);

            // no albums were return
            if (jsonResponse == null)
            {
                return(items);
            }

            foreach (var item in jsonResponse)
            {
                items.AddIfNotNull(new ImportListItemInfo
                {
                    Artist = item.ArtistName,
                    ArtistMusicBrainzId = item.ArtistId
                });
            }

            return(items);
        }
Beispiel #10
0
        public IList <ImportListMovie> ParseResponse(ImportListResponse importResponse)
        {
            _importResponse = importResponse;

            var movies = new List <ImportListMovie>();

            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 ImportListMovie()
                {
                    Title  = item.title,
                    ImdbId = item.imdb_id,
                });
            }

            return(movies);
        }
Beispiel #11
0
        public IList <ImportListMovie> ParseResponse(ImportListResponse importListResponse)
        {
            _importListResponse = importListResponse;

            var movies = new List <ImportListMovie>();

            if (!PreProcess(_importListResponse))
            {
                return(movies);
            }

            var jsonResponse = JsonConvert.DeserializeObject <CouchPotatoResponse>(_importListResponse.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 ImportListMovie()
                        {
                            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 ImportListMovie()
                            {
                                Title  = item.title,
                                ImdbId = item.info.imdb,
                                TmdbId = tmdbid
                            });
                        }
                    }
                }
            }

            return(movies);
        }
Beispiel #12
0
        public override IList <ImportListMovie> ParseResponse(ImportListResponse importResponse)
        {
            var movies = new List <ImportListMovie>();

            if (!PreProcess(importResponse))
            {
                return(movies);
            }

            var jsonResponse = JsonConvert.DeserializeObject <PersonCreditsResource>(importResponse.Content);

            // no movies were return
            if (jsonResponse == null)
            {
                return(movies);
            }

            var crewTypes = GetCrewDepartments();

            if (_settings.PersonCast)
            {
                foreach (var movie in jsonResponse.Cast)
                {
                    // Movies with no Year Fix
                    if (string.IsNullOrWhiteSpace(movie.ReleaseDate))
                    {
                        continue;
                    }

                    movies.AddIfNotNull(new ImportListMovie {
                        TmdbId = movie.Id
                    });
                }
            }

            if (crewTypes.Count > 0)
            {
                foreach (var movie in jsonResponse.Crew)
                {
                    // Movies with no Year Fix
                    if (string.IsNullOrWhiteSpace(movie.ReleaseDate))
                    {
                        continue;
                    }

                    if (crewTypes.Contains(movie.Department))
                    {
                        movies.AddIfNotNull(new ImportListMovie {
                            TmdbId = movie.Id
                        });
                    }
                }
            }

            return(movies);
        }
Beispiel #13
0
        protected virtual bool PreProcess(ImportListResponse importListResponse)
        {
            if (importListResponse.HttpResponse.StatusCode != HttpStatusCode.OK)
            {
                throw new ImportListException(importListResponse, "List API call resulted in an unexpected StatusCode [{0}]", importListResponse.HttpResponse.StatusCode);
            }

            if (importListResponse.HttpResponse.Headers.ContentType != null && importListResponse.HttpResponse.Headers.ContentType.Contains("text/html") &&
                importListResponse.HttpRequest.Headers.Accept != null && !importListResponse.HttpRequest.Headers.Accept.Contains("text/html"))
            {
                throw new ImportListException(importListResponse, "List responded with html content. Site is likely blocked or unavailable.");
            }

            return(true);
        }
Beispiel #14
0
        public virtual IList <ImportListMovie> ParseResponse(ImportListResponse importResponse)
        {
            var movies = new List <ImportListMovie>();

            if (!PreProcess(importResponse))
            {
                return(movies);
            }

            var jsonResponse = JsonConvert.DeserializeObject <MovieSearchResource>(importResponse.Content);

            // no movies were return
            if (jsonResponse == null)
            {
                return(movies);
            }

            return(jsonResponse.Results.SelectList(MapListMovie));
        }
Beispiel #15
0
        public override IList <ImportListMovie> ParseResponse(ImportListResponse importResponse)
        {
            _importResponse = importResponse;

            var movies = new List <ImportListMovie>();

            if (!PreProcess(_importResponse))
            {
                return(movies);
            }

            var jsonResponse = new List <TraktMovieResource>();

            if (_settings.TraktListType == (int)TraktPopularListType.Popular)
            {
                jsonResponse = JsonConvert.DeserializeObject <List <TraktMovieResource> >(_importResponse.Content);
            }
            else
            {
                jsonResponse = JsonConvert.DeserializeObject <List <TraktListResource> >(_importResponse.Content).SelectList(c => c.Movie);
            }

            // no movies were return
            if (jsonResponse == null)
            {
                return(movies);
            }

            foreach (var movie in jsonResponse)
            {
                movies.AddIfNotNull(new ImportListMovie()
                {
                    Title  = movie.Title,
                    ImdbId = movie.Ids.Imdb,
                    TmdbId = movie.Ids.Tmdb,
                    Year   = movie.Year ?? 0
                });
            }

            return(movies);
        }
Beispiel #16
0
        public override IList <ImportListItemInfo> ParseResponse(ImportListResponse importResponse)
        {
            _importResponse = importResponse;

            var listItems = new List <ImportListItemInfo>();

            if (!PreProcess(_importResponse))
            {
                return(listItems);
            }

            var jsonResponse = new List <TraktSeriesResource>();

            if (_settings.TraktListType == (int)TraktPopularListType.Popular)
            {
                jsonResponse = JsonConvert.DeserializeObject <List <TraktSeriesResource> >(_importResponse.Content);
            }
            else
            {
                jsonResponse = JsonConvert.DeserializeObject <List <TraktResponse> >(_importResponse.Content).SelectList(c => c.Show);
            }

            // no movies were return
            if (jsonResponse == null)
            {
                return(listItems);
            }

            foreach (var series in jsonResponse)
            {
                listItems.AddIfNotNull(new ImportListItemInfo()
                {
                    Title  = series.Title,
                    TvdbId = series.Ids.Tvdb.GetValueOrDefault(),
                });
            }

            return(listItems);
        }
Beispiel #17
0
        public virtual IList <ImportListItemInfo> ParseResponse(ImportListResponse importResponse)
        {
            List <PlexSectionItem> items;

            _importResponse = importResponse;

            var series = new List <ImportListItemInfo>();

            if (!PreProcess(_importResponse))
            {
                return(series);
            }

            items = Json.Deserialize <PlexResponse <PlexSectionResponse> >(_importResponse.Content)
                    .MediaContainer
                    .Items;

            foreach (var item in items)
            {
                var tvdbIdString = FindGuid(item.Guids, "tvdb");
                var tmdbIdString = FindGuid(item.Guids, "tmdb");
                var imdbId       = FindGuid(item.Guids, "imdb");

                int.TryParse(tvdbIdString, out int tvdbId);
                int.TryParse(tmdbIdString, out int tmdbId);

                series.Add(new ImportListItemInfo
                {
                    TvdbId = tvdbId,
                    TmdbId = tmdbId,
                    ImdbId = imdbId,
                    Title  = item.Title,
                    Year   = item.Year
                });
            }

            return(series);
        }
Beispiel #18
0
        public virtual IList <ImportListMovie> ParseResponse(ImportListResponse importListResponse)
        {
            var importResponse = importListResponse;

            var movies = new List <ImportListMovie>();

            if (!PreProcess(importResponse))
            {
                return(movies);
            }

            var jsonResponse = JsonConvert.DeserializeObject <List <MovieResource> >(importResponse.Content);

            // no movies were return
            if (jsonResponse == null)
            {
                return(movies);
            }

            return(jsonResponse.SelectList(m => new ImportListMovie {
                TmdbId = m.TmdbId
            }));
        }
Beispiel #19
0
        protected virtual bool PreProcess(ImportListResponse importListResponse)
        {
            try
            {
                var error = JsonConvert.DeserializeObject <RadarrErrors>(importListResponse.HttpResponse.Content);

                if (error != null && error.Errors != null && error.Errors.Count != 0)
                {
                    throw new RadarrListException(error);
                }
            }
            catch (JsonSerializationException)
            {
                //No error!
            }

            if (importListResponse.HttpResponse.StatusCode != System.Net.HttpStatusCode.OK)
            {
                throw new HttpException(importListResponse.HttpRequest, importListResponse.HttpResponse);
            }

            return(true);
        }
Beispiel #20
0
        public override IList <ImportListMovie> ParseResponse(ImportListResponse importListResponse)
        {
            var importResponse = importListResponse;

            var movies = new List <ImportListMovie>();

            if (!PreProcess(importResponse))
            {
                return(movies);
            }

            if (_settings.ListId.StartsWith("ls", StringComparison.OrdinalIgnoreCase))
            {
                //Parse TSV response from IMDB export
                var rows = importResponse.Content.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);

                movies = rows.Skip(1).SelectList(m => m.Split(',')).Where(m => m.Length > 1).SelectList(i => new ImportListMovie {
                    ImdbId = i[1]
                });

                return(movies);
            }
            else
            {
                var jsonResponse = JsonConvert.DeserializeObject <List <MovieResource> >(importResponse.Content);

                if (jsonResponse == null)
                {
                    return(movies);
                }

                return(jsonResponse.SelectList(m => new ImportListMovie {
                    TmdbId = m.TmdbId
                }));
            }
        }
Beispiel #21
0
 public ImportListException(ImportListResponse response, string message)
     : base(message)
 {
     _importListResponse = response;
 }
Beispiel #22
0
 public ImportListException(ImportListResponse response, string message, params object[] args)
     : base(message, args)
 {
     _importListResponse = response;
 }