Exemple #1
0
 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;
 }
Exemple #2
0
            // 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("&", "&amp;").Replace("<", "&lt;").Replace(">", "&gt;").Replace("\"", "&quot;"); // strTemp = strTemp.Replace("&", "&amp;").Replace("<", "&lt;").Replace(">", "&gt;").Replace("\"", "&quot;").Replace("'", "&apos;");
                // 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;
            }