コード例 #1
0
        private static void LoadScripts()
        {
            try
            {
                _metadataExtractorCustomCategories = new ConcurrentBag <string>();

                //Load latest version of scripts
                Assembly assembly = Assembly.GetExecutingAssembly();
                Dictionary <string, List <ScriptableScraperMovieMatcher> > matchers = new Dictionary <string, List <ScriptableScraperMovieMatcher> >();
                List <string> categories = new List <string>();
                Dictionary <int, ScriptableScript> scripts = new Dictionary <int, ScriptableScript>();
                foreach (var file in Directory.EnumerateFiles(Path.Combine(Path.GetDirectoryName(assembly.Location), "MovieScraperScripts\\"), "*.xml"))
                {
                    var script = new ScriptableScript();
                    if (script.Load(file))
                    {
                        if (string.IsNullOrEmpty(script.Category))
                        {
                            script.Category = MEDIA_CATEGORY_NAME_MOVIE;
                        }

                        if (!scripts.ContainsKey(script.ScriptID))
                        {
                            scripts.Add(script.ScriptID, script);
                        }
                        else if (Version.TryParse(scripts[script.ScriptID].Version, out var curVer) && Version.TryParse(script.Version, out var newVer) && newVer > curVer)
                        {
                            scripts[script.ScriptID] = script;
                        }
                    }
                }

                //Categorize scripts
                foreach (var script in scripts.Values)
                {
                    if (!matchers.ContainsKey(script.Category))
                    {
                        matchers.Add(script.Category, new List <ScriptableScraperMovieMatcher>());
                    }
                    matchers[script.Category].Add(new ScriptableScraperMovieMatcher(script));
                }

                //Register movie matchers
                foreach (var matcher in matchers)
                {
                    if (!matcher.Key.Equals(MEDIA_CATEGORY_NAME_MOVIE, StringComparison.OrdinalIgnoreCase))
                    {
                        if (!categories.Contains(matcher.Key))
                        {
                            //Store custom MDE movie category
                            categories.Add(matcher.Key);
                            _metadataExtractorCustomCategories.Add(matcher.Key);
                        }
                    }

                    OnlineMatcherService.RegisterMovieMatchers(matcher.Value.ToArray(), matcher.Key);
                }
            }
            catch (Exception ex)
            {
                ServiceRegistration.Get <ILogger>().Error("ScriptableMetadataExtractor: Error initializing scripts", ex);
            }
        }
コード例 #2
0
 public static void Launch(ScriptableScript script)
 {
     Instance.Run(script.Get());
 }