Blacker.Scraper.MangaStream.GetAvailableChapters C# (CSharp) Метод

GetAvailableChapters() публичный Метод

public GetAvailableChapters ( IMangaRecord manga ) : IEnumerable
manga IMangaRecord
Результат IEnumerable
        public IEnumerable<IChapterRecord> GetAvailableChapters(IMangaRecord manga)
        {
            if (manga == null)
                throw new ArgumentNullException("manga");
            if (manga.Scraper != ScraperGuid)
                throw new ArgumentException("Manga record is not for " + Name, "manga");

            var cacheKey = ChapterCacheKey + manga.MangaName + manga.Url;

            var cached = _cache[cacheKey] as IEnumerable<ChapterRecord>;
            if (cached != null) // if chapters are already in cache return them
                return cached;

            var records = new List<ChapterRecord>();
            var document = WebHelper.GetHtmlDocument(manga.Url);

            var chapterAnchors = document.SelectNodes(@"//div[contains(@class, ""main-body"")]//table/tr/td/a");
            if (chapterAnchors == null)
            {
                throw new ParserException("Could not find expected elements on website.", document.InnerHtml);
            }

            foreach (var chapterAnchor in chapterAnchors)
            {
                var url = GetFullUrl(chapterAnchor.Attributes["href"].Value);

                records.Add(new ChapterRecord(ScraperGuid, url)
                {
                    ChapterName = CleanupText(chapterAnchor.InnerText),
                    Url = url,
                    MangaRecord = manga
                });
            }

            // save to cache
            _cache[cacheKey] = records;

            return records;
        }