private static void SetTitleYearLength(Isan isan, string text) { var match = TitleYearLengthRegex.Match(text); isan.Title = match.Groups[1].Value.Trim(); isan.Year = Int32.Parse(match.Groups[2].Value.Trim()); isan.LengthMin = Int32.Parse(match.Groups[3].Value.Trim()); }
public void TestParseUncheckedIsan() { const string uncheckedNumber = "00000000E0AA000000000001"; var isan = Isan.TryParse(uncheckedNumber); Assert.IsNotNull(isan); Assert.AreEqual(isan.Root, "00000000E0AA"); Assert.AreEqual(isan.Episode, "0000"); Assert.AreEqual(isan.Version, "00000001"); }
public void TestParseCheckedIsanWithAlphaCheckDigits() { const string checkedNumber = "00000000E0660000A00000000S"; var isan = Isan.TryParse(checkedNumber); Assert.IsNotNull(isan); Assert.AreEqual(isan.Root, "00000000E066"); Assert.AreEqual(isan.Episode, "0000"); Assert.AreEqual(isan.Version, "00000000"); }
private static void TryPopulate(Isan isan, string text) { if (string.IsNullOrWhiteSpace(text)) { return; } var title = text.StripLeadingIsan().Trim(); if (Isan.IsIsan(text)) { Logger.DebugFormat("Full V-ISAN: {0}", text); } if (IsTitleYearLength(title)) { SetTitleYearLength(isan, title); } }
private void Populate(Isan isan, [CanBeNull] CQ dom) { if (_token.IsCancelled || dom == null) { return; } var titles = dom[".title"]; titles.ForEach(delegate(IDomObject o) { var innerText = (o.InnerText ?? "").UnescapeHtml().Trim(); var fullText = o.Render().StripHtml().UnescapeHtml().Trim(); TryPopulate(isan, innerText); TryPopulate(isan, fullText); }); }
private void SetParent(VIsan vIsan, CQ dom) { if (_token.IsCancelled || dom == null) { return; } var titles = dom["a[href*=\"javascript:publicDisplayWork\"]"]; titles.ForEach(delegate(IDomObject o) { var href = (o.GetAttribute("href") ?? "").Trim(); if (Isan.IsIsan(href)) { vIsan.Parent = Isan.TryParse(href); } }); }
private CQ GetDom(Isan isan) { if (_token.IsCancelled) { return(null); } string status; status = string.Format("Querying isan.org for {0} {1}...", isan is VIsan ? "V-ISAN" : "ISAN", isan.NumberFormatted); _token.ReportProgress(100.0 * _numRequests / TotalRequests, status); var numberEscaped = Uri.EscapeUriString(isan.Number); var url = string.Format(IsanLookupUrl, numberEscaped); CQ dom = CQ.CreateFromUrl(url, new ServerConfig { UserAgent = UserAgent, Timeout = Timeout }); status = string.Format("Got response from isan.org for {0} {1}...", isan is VIsan ? "V-ISAN" : "ISAN", isan.NumberFormatted); _token.ReportProgress(100.0 * (++_numRequests) / TotalRequests, status); return(dom); }
private static string GetIsanText(Isan isan) { if (isan == null) { return(null); } var lines = new List <string>(); lines.Add(isan.IsSearchable ? "Valid:" : "Invalid:"); lines.Add(""); lines.Add(isan.NumberFormatted); lines.Add(""); if (!string.IsNullOrWhiteSpace(isan.Title)) { lines.Add(string.Format("{0} ({1} - {2} min)", isan.Title, isan.Year, isan.LengthMin)); } else { lines.Add("(no title/year/runtime found)"); } return(string.Join(Environment.NewLine, lines)); }