internal override IChapter[] GetChapters(Series Series, string SeriesPageHtml)
        {
            var Document = Parser.Parse(SeriesPageHtml);

            var Node = Document.QuerySelector("#updates");
            var Nodes = Node.QuerySelectorAll("tr a");
            var Timenodes = Node.QuerySelectorAll("td.time");
            var Output = Nodes.Zip(Timenodes, (d, e) => new Chapter(Series, new Uri(RootUri, d.Attributes["href"].Value), d.TextContent) { Updated = e.TextContent.Trim() }).ToArray();

            //Eatmanga has dummy entries for not yet released chapters, prune them.
            Output = Output.Where(d => d.FirstPageUri.ToString().Contains("http://eatmanga.com/upcoming/") == false).Reverse().ToArray();
            return Output;
        }
        internal override IChapter[] GetChapters(Series series, string seriesPageHtml)
        {
            var document = Parser.Parse(seriesPageHtml);

            var containerNode = document.QuerySelector("section.section-chapter div.container div.row:nth-child(2)");
            var linkNodes = containerNode.QuerySelectorAll("div.col-xs-9").Skip(1).ToArray();
            linkNodes = linkNodes.Select(d => d.QuerySelector("a")).ToArray();
            var dateNodes = containerNode.QuerySelectorAll("div.col-xs-3").Skip(1).ToArray();

            var output = linkNodes.Zip(dateNodes, (d, e) => new Chapter(series, new Uri(RootUri, d.Attributes["href"].Value), d.TextContent.Trim()) { Updated = e.TextContent.Trim() })
                .Reverse().ToArray();
            return output;
        }
        internal override IChapter[] GetChapters(Series series, string seriesPageHtml)
        {
            var document = Parser.Parse(seriesPageHtml);
            var tableNode = document.QuerySelector("table.table-striped") as AngleSharp.Dom.Html.IHtmlTableElement;
            var rows = tableNode.QuerySelectorAll("tr").Skip(1);
            var output = rows.Select(d =>
            {
                var linkNode = d.QuerySelector("a");
                var datenode = d.QuerySelectorAll("td").Skip(1);
                var chapter = new Chapter(series, new Uri(linkNode.Attributes["href"].Value), linkNode.TextContent) { Updated = datenode.First().TextContent.Trim() };
                return chapter;
            }).Reverse().ToArray();

            return output;
        }
        internal override ISeries[] GetDefaultSeries(string mangaIndexPageHtml)
        {
            var document = Parser.Parse(mangaIndexPageHtml);

            var containerNode = document.QuerySelector("div.container");
            containerNode = containerNode.QuerySelector("div.row:nth-child(3)");
            var seriesDivs = containerNode.QuerySelectorAll("div.col-md-2");

            var output = seriesDivs.Select(d =>
            {
                var linkNode = d.QuerySelector("a");
                var titleNode = d.QuerySelector("div.manga-details");
                var series = new Series(this, new Uri(RootUri, linkNode.Attributes["href"].Value), titleNode.TextContent.Trim()) { Updated = SeriesUpdatedValue };
                return series;
            }).OrderBy(d => d.Title).ToArray();
            return output;
        }
        internal override IChapter[] GetChapters(Series series, string seriesPageHtml)
        {
            var document = Parser.Parse(seriesPageHtml);

            var table = document.QuerySelector("table");
            var rows = table.QuerySelectorAll("tr").Skip(1);
            var output = rows.Select(d =>
            {
                var linknode = d.QuerySelector("a.chapterLink");
                var titleNode = linknode.QuerySelector("b");
                var dateNode = d.QuerySelector("td.chapterDate");
                var chapter = new Chapter(series, new Uri(RootUri, linknode.Attributes["href"].Value), titleNode.TextContent.Trim()) { Updated = dateNode.TextContent.Trim() };
                return chapter;
            }).Reverse().ToArray();

            return output;
        }
        internal override IChapter[] GetChapters(Series Series, string SeriesPageHtml)
        {
            var Document = Parser.Parse(SeriesPageHtml);

            var Node = Document.QuerySelector("div.manga_detail");
            Node = Node.QuerySelector("div.detail_list ul");
            var Nodes = Node.QuerySelectorAll("a.color_0077");

            var Output = Nodes.Select(d =>
            {
                string Title = d.TextContent;
                Title = Regex.Replace(Title, @"^[\r\n\s\t]+", string.Empty);
                Title = Regex.Replace(Title, @"[\r\n\s\t]+$", string.Empty);
                var Chapter = new Chapter(Series, new Uri(RootUri, d.Attributes["href"].Value), Title);
                return Chapter;
            }).Reverse().ToArray();

            return Output.ToArray();
        }
        internal override void GetSeriesInfo(Series series, string seriesPageHtml)
        {
            var document = Parser.Parse(seriesPageHtml);

            var imgNode = document.QuerySelector("div.mangaImage2 img");
            series.CoverImageUri = new Uri(RootUri, imgNode.Attributes["src"].Value);

            var infoBoxNode = document.QuerySelectorAll("div.rightBox")[1];
            var headerNodes = infoBoxNode.QuerySelectorAll("h4");

            var yearHeader = headerNodes.First(d => d.TextContent == "Year of release");
            series.Release = yearHeader.NextSibling.TextContent;

            var linkNodes = infoBoxNode.QuerySelectorAll("a").ToArray();
            var authorNode = linkNodes.First(d => d.Attributes["href"].Value.Contains("?author="));
            series.Author = authorNode.TextContent;

            var tagNodes = linkNodes.Where(d => d.Attributes["href"].Value.Contains("?categoriesInc=")).ToArray();
            series.Tags = string.Join(", ", tagNodes.Select(d => d.TextContent));

            var descriptionNode = document.QuerySelector("h2#mangaDescription");
            series.Description = descriptionNode.TextContent.Trim();
        }
 internal override void GetSeriesInfo(Series Series, string SeriesPageHtml)
 {
     Series.Description = string.Empty;
 }
        internal override void GetSeriesInfo(Series series, string seriesPageHtml)
        {
            var document = Parser.Parse(seriesPageHtml);

            var imageNode = document.QuerySelector("div.manga-cover center img");
            series.CoverImageUri = new Uri(RootUri, imageNode.Attributes["src"].Value);

            var detailsNode = document.QuerySelector("div.manga-data");
            var linkNodes = detailsNode.QuerySelectorAll("a").ToArray();
            var headerNodes = detailsNode.QuerySelectorAll("b").ToArray();

            var yearHeader = headerNodes.First(d => d.TextContent == "Year of Release: ");
            series.Release = yearHeader.NextSibling.TextContent;

            var authorHeader = headerNodes.First(d => d.TextContent == "Author: ");
            series.Author = authorHeader.NextSibling.TextContent;

            var tagNodes = linkNodes.Where(d => d.HasAttribute("href")).Where(d => d.Attributes["href"].Value.Contains("/manga-directory/")).ToArray();
            series.Tags = string.Join(", ", tagNodes.Select(d => d.TextContent));

            var descriptionHeader = headerNodes.First(d => d.TextContent == "Sypnosis: ");
            series.Description = descriptionHeader.NextSibling.NextSibling.TextContent.Trim();
        }
 internal override void GetSeriesInfo(Series series, string seriesPageHtml)
 {
 }
        protected override Series[] GetSeriesFromSearch(string searchPageHtml)
        {
            var document = Parser.Parse(searchPageHtml);

            var table = document.QuerySelector("#mangaList");
            var rows = table.QuerySelectorAll("tr").Skip(1).ToArray();

            if (rows.Length == 1 && rows[0].TextContent.Contains("No results found"))
            {
                return new Series[0];
            }

            var output = rows.Select(d =>
            {
                var links = d.QuerySelectorAll("a");
                var seriesLink = links.First();
                var updatesLink = links.Last();
                var updateText = updatesLink.TextContent.Replace('\n', ' ').Trim();
                var series = new Series(this, new Uri(RootUri, seriesLink.Attributes["href"].Value), seriesLink.TextContent.Trim()) { Updated = updateText };
                return series;
            }).OrderBy(d => d.Title).ToArray();

            return output;
        }