示例#1
0
        static void Main(string[] args)
        {
            // Create and load themes
            CreateDefaultThemes();
            List <Theme> themes = LoadAllThemes().ToList();

            LogoProcessor processor = new LogoProcessor {
                DesignsFolder = "..\\..\\..\\..\\Designs"
            };

            foreach (Theme theme in themes)
            {
                // Test 1: From file
                ProcessFile(processor, "1_plus_1_International", theme);

                // Test 2: From repository
                using (var repo = new LogoRepository {
                    RepositoryUrl = REPOSITORY_URL
                })
                {
                    // Parallel async processing
                    var results = repo.Download(new[] { "Das Erste hd", "sat.1", "zdf hd", "animal planet hd", "discovery channel" });
                    Task.WaitAll(results.Select(channelAndStream => ProcessStream(processor, channelAndStream.Value, channelAndStream.Key, theme)).ToArray());

                    // Synchronous processing
                    var stream = repo.Download("zdf");
                    ProcessStream(processor, stream, "zdf", theme);
                }
            }
        }
示例#2
0
    static void Main(string[] args)
    {
      // Create and load themes
      CreateDefaultThemes();
      List<Theme> themes = LoadAllThemes().ToList();

      LogoProcessor processor = new LogoProcessor { DesignsFolder = "..\\..\\..\\..\\Designs" };

      foreach (Theme theme in themes)
      {
        // Test 1: From file
        ProcessFile(processor, "1_plus_1_International", theme);

        // Test 2: From repository
        using (var repo = new LogoRepository { RepositoryUrl = REPOSITORY_URL })
        {
          // Parallel async processing
          var results = repo.Download(new[] { "Das Erste hd", "sat.1", "zdf hd", "animal planet hd", "discovery channel" });
          Task.WaitAll(results.Select(channelAndStream => ProcessStream(processor, channelAndStream.Value, channelAndStream.Key, theme)).ToArray());

          // Synchronous processing
          var stream = repo.Download("zdf");
          ProcessStream(processor, stream, "zdf", theme);
        }
      }
    }
        /// <summary>
        /// Gets a list of <see cref="FanArtImage"/>s for a requested <paramref name="mediaType"/>, <paramref name="fanArtType"/> and <paramref name="name"/>.
        /// The name can be: Series name, Actor name, Artist name depending on the <paramref name="mediaType"/>.
        /// </summary>
        /// <param name="mediaType">Requested FanArtMediaType</param>
        /// <param name="fanArtType">Requested FanArtType</param>
        /// <param name="name">Requested name of Series, Actor, Artist...</param>
        /// <param name="maxWidth">Maximum width for image. <c>0</c> returns image in original size.</param>
        /// <param name="maxHeight">Maximum height for image. <c>0</c> returns image in original size.</param>
        /// <param name="singleRandom">If <c>true</c> only one random image URI will be returned</param>
        /// <param name="result">Result if return code is <c>true</c>.</param>
        /// <returns><c>true</c> if at least one match was found.</returns>
        public bool TryGetFanArt(string mediaType, string fanArtType, string name, int maxWidth, int maxHeight, bool singleRandom, out IList <IResourceLocator> result)
        {
            result = null;
            if (mediaType != FanArtMediaTypes.ChannelTv && mediaType != FanArtMediaTypes.ChannelRadio)
            {
                return(false);
            }

            try
            {
                string designsFolder = FileUtils.BuildAssemblyRelativePath("Designs");

                ChannelType  logoChannelType = mediaType == FanArtMediaTypes.ChannelTv ? ChannelType.Tv : ChannelType.Radio;
                ThemeHandler themeHandler    = new ThemeHandler();
                Theme        theme           = themeHandler.Load(Path.Combine(designsFolder, _settings.LogoTheme));

                string logoFolder   = Path.Combine(_dataFolder, string.Format("{0}-{1}-{2}", logoChannelType, theme.DesignName, theme.ThemeName));
                string logoFileName = Path.Combine(logoFolder, FileUtils.GetSafeFilename(string.Format("{0}.png", name)));

                if (!Directory.Exists(logoFolder))
                {
                    Directory.CreateDirectory(logoFolder);
                }

                if (File.Exists(logoFileName))
                {
                    result = new List <IResourceLocator> {
                        new ResourceLocator(ResourcePath.BuildBaseProviderPath(LocalFsResourceProviderBase.LOCAL_FS_RESOURCE_PROVIDER_ID, logoFileName))
                    };
                    return(true);
                }

                LogoProcessor processor = new LogoProcessor {
                    DesignsFolder = designsFolder
                };

                // From repository
                using (var repo = new LogoRepository {
                    RepositoryUrl = _settings.RepositoryUrl
                })
                {
                    var stream = repo.Download(name, logoChannelType, _country.TwoLetterISORegionName);
                    if (stream == null)
                    {
                        return(false);
                    }
                    using (stream)
                        if (processor.CreateLogo(theme, stream, logoFileName))
                        {
                            result = new List <IResourceLocator> {
                                new ResourceLocator(ResourcePath.BuildBaseProviderPath(LocalFsResourceProviderBase.LOCAL_FS_RESOURCE_PROVIDER_ID, logoFileName))
                            };
                            return(true);
                        }
                }
            }
            catch (Exception ex)
            {
                ServiceRegistration.Get <ILogger>().Error("SlimTv Logos: Error processing logo image.", ex);
            }
            return(false);
        }
        /// <summary>
        /// Gets a list of <see cref="FanArtImage"/>s for a requested <paramref name="mediaType"/>, <paramref name="fanArtType"/> and <paramref name="name"/>.
        /// The name can be: Series name, Actor name, Artist name depending on the <paramref name="mediaType"/>.
        /// </summary>
        /// <param name="mediaType">Requested FanArtMediaType</param>
        /// <param name="fanArtType">Requested FanArtType</param>
        /// <param name="name">Requested name of Series, Actor, Artist...</param>
        /// <param name="maxWidth">Maximum width for image. <c>0</c> returns image in original size.</param>
        /// <param name="maxHeight">Maximum height for image. <c>0</c> returns image in original size.</param>
        /// <param name="singleRandom">If <c>true</c> only one random image URI will be returned</param>
        /// <param name="result">Result if return code is <c>true</c>.</param>
        /// <returns><c>true</c> if at least one match was found.</returns>
        public bool TryGetFanArt(string mediaType, string fanArtType, string name, int maxWidth, int maxHeight, bool singleRandom, out IList <IResourceLocator> result)
        {
            result = null;
            if (mediaType != FanArtMediaTypes.ChannelTv && mediaType != FanArtMediaTypes.ChannelRadio)
            {
                return(false);
            }

            try
            {
                string designsFolder = _designsFolder ?? FileUtils.BuildAssemblyRelativePath("Designs");

                ChannelType  logoChannelType = mediaType == FanArtMediaTypes.ChannelTv ? ChannelType.Tv : ChannelType.Radio;
                ThemeHandler themeHandler    = new ThemeHandler();
                Theme        theme           = themeHandler.Load(Path.Combine(designsFolder, _settings.LogoTheme));

                string logoFolder   = Path.Combine(_dataFolder, string.Format("{0}-{1}-{2}", logoChannelType, theme.DesignName, theme.ThemeName));
                string logoFileName = Path.Combine(logoFolder, FileUtils.GetSafeFilename(string.Format("{0}.png", name)));

                if (!Directory.Exists(logoFolder))
                {
                    Directory.CreateDirectory(logoFolder);
                }

                if (File.Exists(logoFileName) && IsCacheValid(theme, logoFileName))
                {
                    return(BuildLogoResourceLocatorAndReturn(ref result, logoFileName));
                }

                LogoProcessor processor = new LogoProcessor {
                    DesignsFolder = designsFolder
                };

                // From repository
                using (var repo = new LogoRepository {
                    RepositoryUrl = _settings.RepositoryUrl
                })
                {
                    var stream = repo.Download(name, logoChannelType, _country.TwoLetterISORegionName);
                    if (stream == null)
                    {
                        return(BuildLogoResourceLocatorAndReturn(ref result, logoFileName));
                    }
                    using (stream)
                    {
                        // First download and process the new logo, but keep the existing file if something fails.
                        string tmpLogoFileName = Path.ChangeExtension(logoFileName, ".tmplogo");
                        if (processor.CreateLogo(theme, stream, tmpLogoFileName))
                        {
                            if (File.Exists(logoFileName))
                            {
                                File.Delete(logoFileName);
                            }
                            File.Move(tmpLogoFileName, logoFileName);
                        }
                        return(BuildLogoResourceLocatorAndReturn(ref result, logoFileName));
                    }
                }
            }
            catch (Exception ex)
            {
                ServiceRegistration.Get <ILogger>().Error("SlimTv Logos: Error processing logo image.", ex);
            }
            return(false);
        }
示例#5
0
 public IEnumerable <Logo> Get()
 {
     return(LogoRepository.FindAll());
 }
示例#6
0
        public bool CreateDefaults()
        {
            bool aboutIsEmpty = AboutRepository.IsEmpty().GetAwaiter().GetResult();

            //aboutIsEmpty = false;
            if (aboutIsEmpty == false)
            {
                return(false);
            }
            if (aboutIsEmpty)
            {
                try
                {
                    var newAbout = new About
                    {
                        created_at = DateTime.Now,
                        updated_at = DateTime.Now,
                        photo      = $@"http://res.cloudinary.com/djqq6o8su/image/upload/mkvg51472rnjves4etg0",
                        title      = "Mr Photographer",
                        desc       = "Photographer based in Somewhere"
                    };
                    AboutRepository.Insert(newAbout);
                    SaveAsync().GetAwaiter().GetResult();
                }
                catch (Exception e)
                {
                    Console.WriteLine("{0} Exception caught.", e);
                }
            }
            bool galleryIsEmpty = GalleryRepository.IsEmpty().GetAwaiter().GetResult();

            //galleryIsEmpty = false;
            if (galleryIsEmpty)
            {
                try
                {
                    string[] names = new string[] { "People", "Landscape" };
                    foreach (var name in names)
                    {
                        var newItem = new Gallery
                        {
                            created_at = DateTime.Now,
                            updated_at = DateTime.Now,
                            name       = name
                        };
                        GalleryRepository.Insert(newItem);
                    }
                    SaveAsync().GetAwaiter().GetResult();
                }
                catch (Exception e)
                {
                    Console.WriteLine("{0} Exception caught.", e);
                }
            }
            bool linkIsEmpty = LinkRepository.IsEmpty().GetAwaiter().GetResult();

            //linkIsEmpty = false;
            if (linkIsEmpty)
            {
                try
                {
                    string[] names = new string[] { "yourfacebookname", "yourinsntagramname", "yourtwittername", "youryourtubename" };
                    foreach (var name in names)
                    {
                        var newItem = new Link
                        {
                            created_at = DateTime.Now,
                            updated_at = DateTime.Now,
                            name       = name
                        };
                        LinkRepository.Insert(newItem);
                    }
                    SaveAsync().GetAwaiter().GetResult();
                }
                catch (Exception e)
                {
                    Console.WriteLine("{0} Exception caught.", e);
                }
            }
            bool logoIsEmpty = LogoRepository.IsEmpty().GetAwaiter().GetResult();

            //logoIsEmpty = false;
            if (logoIsEmpty)
            {
                try
                {
                    string[] photos = new string[] { "http://res.cloudinary.com/djqq6o8su/image/upload/iwrwnlkuxlbypgdn05kp" };
                    foreach (var photo in photos)
                    {
                        var newItem = new Logo
                        {
                            created_at = DateTime.Now,
                            updated_at = DateTime.Now,
                            photo      = photo
                        };
                        LogoRepository.Insert(newItem);
                    }
                    SaveAsync().GetAwaiter().GetResult();
                }
                catch (Exception e)
                {
                    Console.WriteLine("{0} Exception caught.", e);
                }
            }
            bool slideIsEmpty = SlideRepository.IsEmpty().GetAwaiter().GetResult();

            //slideIsEmpty = false;
            if (slideIsEmpty)
            {
                try
                {
                    string[] names = new string[]
                    {
                        "http://res.cloudinary.com/djqq6o8su/image/upload/rrcbpzjxm5mesjptu9lc",
                        "http://res.cloudinary.com/djqq6o8su/image/upload/iib9veyowj3wpyirbmlo",
                        "http://res.cloudinary.com/djqq6o8su/image/upload/qgo6zbmwwd0kyanaoynz"
                    };
                    foreach (var name in names)
                    {
                        var newItem = new Slide
                        {
                            created_at = DateTime.Now,
                            updated_at = DateTime.Now,
                            name       = name
                        };
                        SlideRepository.Insert(newItem);
                    }
                    SaveAsync().GetAwaiter().GetResult();
                }
                catch (Exception e)
                {
                    Console.WriteLine("{0} Exception caught.", e);
                }
            }
            bool photoIsEmpty = PhotoRepository.IsEmpty().GetAwaiter().GetResult();

            //photoIsEmpty = false;
            if (photoIsEmpty)
            {
                try
                {
                    string[] names = new string[]
                    {
                        "http://res.cloudinary.com/djqq6o8su/image/upload/tub2v7olse0lwbq9vzrv",
                        "http://res.cloudinary.com/djqq6o8su/image/upload/hvxogea37wkzqv5o6kkv",
                        "http://res.cloudinary.com/djqq6o8su/image/upload/dp62d2vwochkoy2y82ee",
                        "http://res.cloudinary.com/djqq6o8su/image/upload/lifml3ceohhebylxgue6",
                        "http://res.cloudinary.com/djqq6o8su/image/upload/ki6pdlhihsvaakimfnml",
                        "http://res.cloudinary.com/djqq6o8su/image/upload/itwquw92jfpht6yi1ilk",
                        "http://res.cloudinary.com/djqq6o8su/image/upload/jplpld8tp4bxvskdpdzr"
                    };
                    string[] names2 = new string[]
                    {
                        "http://res.cloudinary.com/djqq6o8su/image/upload/vp8ahga7g1h8f6zx2d0x",
                        "http://res.cloudinary.com/djqq6o8su/image/upload/ozljewvxh83ahvob1aml",
                        "http://res.cloudinary.com/djqq6o8su/image/upload/tgrcyaoqx8jwi7mksakd",
                        "http://res.cloudinary.com/djqq6o8su/image/upload/nnsii3wvw6gn40qcldwf",
                        "http://res.cloudinary.com/djqq6o8su/image/upload/e23tgxmvw8jkeje3apjk",
                        "http://res.cloudinary.com/djqq6o8su/image/upload/tb0rpo4gvhxv0cyyb31z",
                        "http://res.cloudinary.com/djqq6o8su/image/upload/k90gojfb903m7hoknvs5",
                        "http://res.cloudinary.com/djqq6o8su/image/upload/yqmqqvltyfgt6wbza9zg",
                        "http://res.cloudinary.com/djqq6o8su/image/upload/vrlwiz6u8gcrygbruzw3",
                        "http://res.cloudinary.com/djqq6o8su/image/upload/xapqjqz9vs5kwhqh0cr5"
                    };
                    var galleryPeople    = GalleryRepository.GetAsync(item => item.name == "People").GetAwaiter().GetResult().FirstOrDefault();
                    var galleryLandscape = GalleryRepository.GetAsync(item => item.name == "Landscape").GetAwaiter().GetResult().FirstOrDefault();
                    foreach (var name in names)
                    {
                        var newItem = new Photo
                        {
                            created_at = DateTime.Now,
                            updated_at = DateTime.Now,
                            name       = name,
                            Gallery    = galleryPeople
                        };
                        PhotoRepository.Insert(newItem);
                    }
                    foreach (var name in names2)
                    {
                        var newItem = new Photo
                        {
                            created_at = DateTime.Now,
                            updated_at = DateTime.Now,
                            name       = name,
                            Gallery    = galleryLandscape
                        };
                        PhotoRepository.Insert(newItem);
                    }
                    SaveAsync().GetAwaiter().GetResult();
                }
                catch (Exception e)
                {
                    Console.WriteLine("{0} Exception caught.", e);
                }
            }

            bool userIsEmpty = UserManager.Users.Count() == 0;

            if (userIsEmpty)
            {
                //var user = new ApplicationUser
                //{
                //    ApiToken = "some",
                //    UserName = "******",
                //    Email = "*****@*****.**",
                //    EmailConfirmed = true,
                //    DateAdd = DateTime.Now,
                //    DateUpd = DateTime.Now
                //};
                //await UserManager.CreateAsync(user, "admin");
                ApplicationDbInitializer.SeedRoles(RoleManager);
                ApplicationDbInitializer.SeedUsers(UserManager, appSettings);
                //await SaveAsync();
                //new SignInManager<User>().SignInAsync
                //UserManager.Users.ToList().ForEach( async(user)=> {
                //    await _userManager.DeleteAsync(user);
                //});
            }

            if (aboutIsEmpty || galleryIsEmpty || linkIsEmpty || logoIsEmpty || photoIsEmpty || slideIsEmpty || userIsEmpty)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }