private static string ExtractBody(string body, string paramStart, XmlNode n) { string strStart = string.Empty; switch (paramStart) { case "Original Title": strStart = XmlConvert.DecodeName(n.SelectSingleNodeFast("Details/KeyStartOTitle").InnerText); break; case "Translated Title": strStart = XmlConvert.DecodeName(n.SelectSingleNodeFast("Details/KeyStartTTitle").InnerText); break; case "URL cover": strStart = XmlConvert.DecodeName(n.SelectSingleNodeFast("Details/KeyStartImg").InnerText); break; case "Rate 1": strStart = XmlConvert.DecodeName(n.SelectSingleNodeFast("Details/KeyStartRate").InnerText); break; case "Rate 2": strStart = XmlConvert.DecodeName(n.SelectSingleNodeFast("Details/KeyStartRate2").InnerText); break; case "Synopsys": strStart = XmlConvert.DecodeName(n.SelectSingleNodeFast("Details/KeyStartSyn").InnerText); break; case "Director": strStart = XmlConvert.DecodeName(n.SelectSingleNodeFast("Details/KeyStartRealise").InnerText); break; case "Producer": strStart = XmlConvert.DecodeName(n.SelectSingleNodeFast("Details/KeyStartProduct").InnerText); break; case "Actors": strStart = XmlConvert.DecodeName(n.SelectSingleNodeFast("Details/KeyStartCredits").InnerText); break; case "Country": strStart = XmlConvert.DecodeName(n.SelectSingleNodeFast("Details/KeyStartCountry").InnerText); break; case "Genre": strStart = XmlConvert.DecodeName(n.SelectSingleNodeFast("Details/KeyStartGenre").InnerText); break; case "Year": strStart = XmlConvert.DecodeName(n.SelectSingleNodeFast("Details/KeyStartYear").InnerText); break; case "Comment": strStart = XmlConvert.DecodeName(n.SelectSingleNodeFast("Details/KeyStartComment").InnerText); break; case "Language": strStart = XmlConvert.DecodeName(n.SelectSingleNodeFast("Details/KeyStartLanguage").InnerText); break; case "Tagline": strStart = XmlConvert.DecodeName(n.SelectSingleNodeFast("Details/KeyStartTagline").InnerText); break; case "Certification": strStart = XmlConvert.DecodeName(n.SelectSingleNodeFast("Details/KeyStartCertification").InnerText); break; } if (strStart.Length > 0 && body.Length > 0) return body.Substring(body.IndexOf(strStart) + strStart.Length - 1); else return body; }
// e.g. item = "Generic3" public string Load(XmlNode n, string item) { ScriptNode = n; string strGrabResult = string.Empty; #region load the parameters from script Stopwatch watch = new Stopwatch(); watch.Reset(); watch.Start(); try { DisplayName = XmlConvert.DecodeName(n.SelectSingleNodeFast("Details/KeyStart" + item).Attributes["DisplayName"].InnerText); } catch (Exception) { DisplayName = item; // set this as default, if there is no DisplayName defined (yet) - backwardcompatibility ! } Start = XmlConvert.DecodeName(n.SelectSingleNodeFast("Details/KeyStart" + item).InnerText); End = XmlConvert.DecodeName(n.SelectSingleNodeFast("Details/KeyEnd" + item).InnerText); Index = XmlConvert.DecodeName(n.SelectSingleNodeFast("Details/Key" + item + "Index").InnerText); Page = XmlConvert.DecodeName(n.SelectSingleNodeFast("Details/Key" + item + "Page").InnerText); Param1 = XmlConvert.DecodeName(n.SelectSingleNodeFast("Details/KeyStart" + item).Attributes["Param1"].InnerText); Param2 = XmlConvert.DecodeName(n.SelectSingleNodeFast("Details/KeyStart" + item).Attributes["Param2"].InnerText); try { Param3 = XmlConvert.DecodeName(n.SelectSingleNodeFast("Details/Key" + item + "RegExp").InnerText); } catch (Exception) { Param3 = ""; } try { MaxItems = XmlConvert.DecodeName(n.SelectSingleNodeFast("Details/Key" + item + "MaxItems").InnerText); } catch (Exception) { MaxItems = ""; } try { Language = XmlConvert.DecodeName(n.SelectSingleNodeFast("Details/Key" + item + "Language").InnerText); } catch (Exception) { Language = ""; } try { GrabRoles = (XmlConvert.DecodeName(n.SelectSingleNodeFast("Details/Key" + item + "GrabRoles").InnerText).ToLower() == "true"); } catch (Exception) { GrabRoles = false; } // new method for script loading: foreach (Data.GrabberScript.DetailRow detail in grabberscript.Detail.Where(detail => detail.Name == item)) { DisplayName = detail.Name.Length > 1 ? detail.Name : item; // set this as default, if there is no DisplayName defined (yet) - backwardcompatibility ! Start = detail.Start; End = detail.End; Index = detail.Index; Page = detail.SourcePage; Param1 = detail.Param1; Param2 = detail.Param2; Param3 = detail.Param3; MaxItems = detail.MaxItems; Language = detail.Filter; GrabRoles = detail.GetRoles; break; } #endregion // load the Body page content first to get the data Body = PageBody(Page); #region grab the data from the Body - can be result or loading new page //// Overrides from MyFilms plugin: //if (!string.IsNullOrEmpty(personLimit)) MaxItems = personLimit.ToString(); //if (!string.IsNullOrEmpty(getRoles)) GrabRoles = (getRoles.ToLower() == "true"); // Overrides from MyFilms plugin: //if (!string.IsNullOrEmpty(PreferredLanguage)) strLanguage = PreferredLanguage; //if (!string.IsNullOrEmpty(TitleLimit)) strMaxItems = TitleLimit.ToString(); //if (!string.IsNullOrEmpty(PersonLimit)) strMaxItems = PersonLimit.ToString(); string allNames = string.Empty; string allRoles = string.Empty; if (Param1.Length > 0 || Param3.Length > 0) { // strGrabResult = GrabUtil.FindWithAction(ExtractBody(Body, Index, n), Start, End, Param1, Param2, Param3, MaxItems, Language, out allNames, out allRoles).Trim(); strGrabResult = GrabUtil.FindWithAction(ExtractBody(Body, Index, n), Start, End, Param1, Param2, Param3, MaxItems, Language, out allNames, out allRoles, GrabRoles).Trim(); AllNames = allNames; AllRoles = allRoles; } else { strGrabResult = GrabUtil.Find(ExtractBody(Body, Index, n), Start, End).Trim(); AllNames = string.Empty; AllRoles = string.Empty; } //strGrabResult = strGrabResult.Replace("\n", ""); strGrabResult = GrabUtil.StripIllegalXmlChars(strGrabResult, "1.0"); // strTemp = strTemp.Replace("&", "&").Replace("<", "<").Replace(">", ">").Replace("\"", """); // strTemp = strTemp.Replace("&", "&").Replace("<", "<").Replace(">", ">").Replace("\"", """).Replace("'", "'"); // strGrabResult = strGrabResult.Replace("\n", ""); // removed, as it seems, the "newlines" replacements for #LF# didn't work in AMC and MP strGrabResult = GrabUtil.TrimSpaces(strGrabResult); if (strGrabResult.Length == 0) strGrabResult = ""; #endregion watch.Stop(); Usage++; Runtime = "(" + watch.ElapsedMilliseconds + " ms)"; Result = strGrabResult; return Result; }