Пример #1
0
        /// <summary>
        /// Processes the config file by loading extra settings and then executing the ProcessPass procedure on each pass node.
        /// </summary>
        /// <param name="FileName"></param>
        public void ProcessConfigFile(string FileName)
        {
            LoadPlayOnSettings();
            try
            {
                XmlDocument Config = new XmlDocument();
                Config.Load(FileName);
                XmlNode SettingsNode = Config.SelectSingleNode("playpass/settings");
                if (SettingsNode != null)
                {
                    ServerHost = PlaySharp.Util.GetNodeAttributeValue(SettingsNode, "server", ServerHost);
                    ServerPort = int.Parse(PlaySharp.Util.GetNodeAttributeValue(SettingsNode, "port", ServerPort.ToString()));
                }

                PlayOn PlayOn = new PlayOn(ServerHost, ServerPort);

                XmlNode PassesNode = Config.SelectSingleNode("playpass/passes");
                if (PassesNode == null)
                {
                    throw new Exception("A passes node was found in the config file");
                }

                _MaxRunTime = TimeSpan.Parse(PlaySharp.Util.GetNodeAttributeValue(PassesNode, "max", _MaxRunTime.ToString(@"hh\:mm\:ss")));
                WriteLog("Max Run Time: " + _MaxRunTime);

                foreach (XmlNode PassNode in PassesNode.SelectNodes("pass"))
                {
                    ProcessPass(PlayOn, PassNode);
                }
            }
            catch (Exception ex)
            {
                WriteLog("Error processing config file: " + ex.Message.ToString());
            }
        }
Пример #2
0
 public PlayPassProcessor(PlayOn playOn, ILogManager logManager, IQueueValidator queueValidator)
 {
     _playOn         = playOn;
     _logManager     = logManager;
     _queueValidator = queueValidator;
 }
Пример #3
0
        /// <summary>
        /// Executes the search and queue function on a pass node in the config file.
        /// </summary>
        /// <param name="PassNode">A pass node from the config file.</param>
        void ProcessPass(PlayOn PlayOn, XmlNode PassNode)
        {
            PlayOnItem CurrItem = PlayOn.GetCatalog();

            if (Util.GetNodeAttributeValue(PassNode, "enabled", "0") == "1")
            {
                WriteLog("=== Processing {0} ===", Util.GetNodeAttributeValue(PassNode, "description"));
                try
                {
                    foreach (XmlNode Node in PassNode.ChildNodes)
                    {
                        string MatchPattern   = Util.GetNodeAttributeValue(Node, "name");
                        string ExcludePattern = Util.GetNodeAttributeValue(Node, "exclude");
                        bool   FoundItem      = false;
                        if (!(CurrItem is PlayOnFolder))
                        {
                            continue;
                        }
                        if (Node.Name == "scan")
                        {
                            WriteLog("   SEARCH: \"{0}\"", MatchPattern);
                            foreach (PlayOnItem ChildItem in ((PlayOnFolder)CurrItem).Items)
                            {
                                if (ChildItem is PlayOnFolder)
                                {
                                    if (VerboseMode)
                                    {
                                        WriteLog("  COMPARE: \"{0}\"", ChildItem.Name);
                                    }
                                    if (Util.MatchesPattern(ChildItem.Name, ExcludePattern))
                                    {
                                        WriteLog("  EXCLUDE: \"{0}\"", ChildItem.Name);
                                    }
                                    else if (Util.MatchesPattern(ChildItem.Name, MatchPattern))
                                    {
                                        if (VerboseMode)
                                        {
                                            WriteLog("    MATCH: " + ChildItem.Name);
                                        }
                                        FoundItem = true;
                                        CurrItem  = ChildItem;
                                        break;
                                    }
                                }
                            }
                            if (!FoundItem)
                            {
                                WriteLog(" NO MATCH: \"{0}\"", MatchPattern);
                            }
                        }
                        else if (Node.Name == "queue")
                        {
                            WriteLog("   SEARCH: \"{0}\"", MatchPattern);
                            foreach (PlayOnItem ChildItem in ((PlayOnFolder)CurrItem).Items)
                            {
                                if (ChildItem is PlayOnVideo)
                                {
                                    if (VerboseMode)
                                    {
                                        WriteLog("  COMPARE: \"{0}\"", ChildItem.Name);
                                    }
                                    if (Util.MatchesPattern(ChildItem.Name, ExcludePattern))
                                    {
                                        WriteLog("  EXCLUDE: \"{0}\"", ChildItem.Name);
                                    }
                                    else if (Util.MatchesPattern(ChildItem.Name, MatchPattern))
                                    {
                                        if (VerboseMode)
                                        {
                                            WriteLog("    MATCH: {0}", ChildItem.Name);
                                        }
                                        QueueMedia((PlayOnVideo)ChildItem);
                                        FoundItem = true;
                                    }
                                }
                            }
                            if (!FoundItem)
                            {
                                WriteLog(" NO MATCH: \"{0}\"", MatchPattern);
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    WriteLog("Error processing pass: " + ex.Message.ToString());
                }
            }
        }