Exemplo n.º 1
0
        private static List <Show> GetShows(ILogger logger)
        {
            var config = Config.GetInstance();
            CacheManagerBase fileCache;

            if (config.TranslatorCacheSettings != null)
            {
                fileCache = new FileCacheManager(config.TranslatorCacheSettings.OutputFile);
            }
            else
            {
                fileCache = new DummyCacheManager();
            }
            var lst = new List <Show>();

            if (config.Grabbers.Count == 0)
            {
                Console.WriteLine("No grabbers defined in config");
            }
            else
            {
                foreach (var grabber in config.Grabbers)
                {
                    try
                    {
                        var a = Assembly.LoadFrom(grabber.Path);
                        foreach (var t in a.GetTypes())
                        {
                            if (t.IsSubclassOf(typeof(GrabberBase)))
                            {
                                var gb    = (GrabberBase)Activator.CreateInstance(t);
                                var shows = gb.Grab(grabber.Parameters, Logger);
                                if (!string.IsNullOrEmpty(grabber.ChannelPrefix))
                                {
                                    shows.ForEach(x => x.Channel = grabber.ChannelPrefix + x.Channel);
                                }
                                if (grabber.Translation != null)
                                {
                                    Logger.WriteEntry("Starting translation of " + t.FullName, LogType.Info);
                                    var g = new GoogleTranslator(fileCache);
                                    g.TranslateShows(shows, grabber.Translation.From, grabber.Translation.To, logger);
                                    Logger.WriteEntry("Finished translation of " + t.FullName, LogType.Info);
                                }
                                lst.AddRange(shows);
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        Logger.WriteEntry("error on grabber " + grabber.Path + " " + ex.Message, LogType.Error);
                        if (config.HaltOnGrabberError)
                        {
                            throw ex;
                        }
                    }
                }
            }

            return(lst);
        }