From 580a514ce5c648a72c3d4deda0eec8cf07c026b3 Mon Sep 17 00:00:00 2001 From: runebaas Date: Thu, 25 Jun 2020 15:12:41 +0200 Subject: [PATCH] Rework the media provider --- .../Commands/Randomness/RandomAnimals.cs | 24 ++-- Geekbot.net/Lib/Media/IMediaProvider.cs | 9 +- Geekbot.net/Lib/Media/MediaProvider.cs | 135 +++++------------- Geekbot.net/Lib/Media/MediaType.cs | 14 ++ Geekbot.net/Program.cs | 2 +- Geekbot.net/Storage/{pinguins => penguins} | 24 ++-- 6 files changed, 72 insertions(+), 136 deletions(-) create mode 100644 Geekbot.net/Lib/Media/MediaType.cs rename Geekbot.net/Storage/{pinguins => penguins} (99%) diff --git a/Geekbot.net/Commands/Randomness/RandomAnimals.cs b/Geekbot.net/Commands/Randomness/RandomAnimals.cs index 8562908..47b6ea6 100644 --- a/Geekbot.net/Commands/Randomness/RandomAnimals.cs +++ b/Geekbot.net/Commands/Randomness/RandomAnimals.cs @@ -18,7 +18,7 @@ namespace Geekbot.net.Commands.Randomness [Summary("Get a random panda image")] public async Task Panda() { - await ReplyAsync("", false, Eb(_mediaProvider.GetPanda())); + await ReplyAsync("", false, Eb(_mediaProvider.GetMedia(MediaType.Panda))); } [Command("croissant", RunMode = RunMode.Async)] @@ -26,50 +26,50 @@ namespace Geekbot.net.Commands.Randomness [Summary("Get a random croissant image")] public async Task Croissant() { - await ReplyAsync("", false, Eb(_mediaProvider.GetCrossant())); + await ReplyAsync("", false, Eb(_mediaProvider.GetMedia(MediaType.Croissant))); } [Command("pumpkin", RunMode = RunMode.Async)] [Summary("Get a random pumpkin image")] public async Task Pumpkin() { - await ReplyAsync("", false, Eb(_mediaProvider.GetPumpkin())); + await ReplyAsync("", false, Eb(_mediaProvider.GetMedia(MediaType.Pumpkin))); } [Command("squirrel", RunMode = RunMode.Async)] [Summary("Get a random squirrel image")] public async Task Squirrel() { - await ReplyAsync("", false, Eb(_mediaProvider.GetSquirrel())); + await ReplyAsync("", false, Eb(_mediaProvider.GetMedia(MediaType.Squirrel))); } [Command("turtle", RunMode = RunMode.Async)] [Summary("Get a random turtle image")] public async Task Turtle() { - await ReplyAsync("", false, Eb(_mediaProvider.GetTurtle())); + await ReplyAsync("", false, Eb(_mediaProvider.GetMedia(MediaType.Turtle))); } - [Command("pinguin", RunMode = RunMode.Async)] - [Alias("pingu")] - [Summary("Get a random pinguin image")] - public async Task Pinguin() + [Command("penguin", RunMode = RunMode.Async)] + [Alias("pengu")] + [Summary("Get a random penguin image")] + public async Task Penguin() { - await ReplyAsync("", false, Eb(_mediaProvider.GetPinguin())); + await ReplyAsync("", false, Eb(_mediaProvider.GetMedia(MediaType.Penguin))); } [Command("fox", RunMode = RunMode.Async)] [Summary("Get a random fox image")] public async Task Fox() { - await ReplyAsync("", false, Eb(_mediaProvider.GetFox())); + await ReplyAsync("", false, Eb(_mediaProvider.GetMedia(MediaType.Fox))); } [Command("dab", RunMode = RunMode.Async)] [Summary("Get a random dab image")] public async Task Dab() { - await ReplyAsync("", false, Eb(_mediaProvider.GetDab())); + await ReplyAsync("", false, Eb(_mediaProvider.GetMedia(MediaType.Dab))); } private static Embed Eb(string image) diff --git a/Geekbot.net/Lib/Media/IMediaProvider.cs b/Geekbot.net/Lib/Media/IMediaProvider.cs index 33a0d7c..63c0f41 100644 --- a/Geekbot.net/Lib/Media/IMediaProvider.cs +++ b/Geekbot.net/Lib/Media/IMediaProvider.cs @@ -2,13 +2,6 @@ { public interface IMediaProvider { - string GetPanda(); - string GetCrossant(); - string GetSquirrel(); - string GetPumpkin(); - string GetTurtle(); - string GetPinguin(); - string GetFox(); - string GetDab(); + string GetMedia(MediaType type); } } \ No newline at end of file diff --git a/Geekbot.net/Lib/Media/MediaProvider.cs b/Geekbot.net/Lib/Media/MediaProvider.cs index f7ea9df..45524de 100644 --- a/Geekbot.net/Lib/Media/MediaProvider.cs +++ b/Geekbot.net/Lib/Media/MediaProvider.cs @@ -1,133 +1,62 @@ using System; using System.IO; using Geekbot.net.Lib.Logger; +using Geekbot.net.Lib.RandomNumberGenerator; namespace Geekbot.net.Lib.Media { public class MediaProvider : IMediaProvider { - private readonly Random _random; + private readonly IRandomNumberGenerator _random; private readonly IGeekbotLogger _logger; private string[] _pandaImages; private string[] _croissantImages; private string[] _squirrelImages; private string[] _pumpkinImages; private string[] _turtlesImages; - private string[] _pinguinImages; + private string[] _penguinImages; private string[] _foxImages; private string[] _dabImages; - public MediaProvider(IGeekbotLogger logger) + public MediaProvider(IGeekbotLogger logger, IRandomNumberGenerator random) { - _random = new Random(); + _random = random; _logger = logger; logger.Information(LogSource.Geekbot, "Loading Media Files"); ; - LoadPandas(); - BakeCroissants(); - LoadSquirrels(); - LoadPumpkins(); - LoadTurtles(); - LoadPinguins(); - LoadFoxes(); - LoadDab(); - } - - private void LoadPandas() - { - var rawLinks = File.ReadAllText(Path.GetFullPath("./Storage/pandas")); - _pandaImages = rawLinks.Split("\n"); - _logger.Trace(LogSource.Geekbot, $"Loaded {_pandaImages.Length} Panda Images"); - } - - private void BakeCroissants() - { - var rawLinks = File.ReadAllText(Path.GetFullPath("./Storage/croissant")); - _croissantImages = rawLinks.Split("\n"); - _logger.Trace(LogSource.Geekbot, $"Loaded {_croissantImages.Length} Croissant Images"); - } - - private void LoadSquirrels() - { - var rawLinks = File.ReadAllText(Path.GetFullPath("./Storage/squirrel")); - _squirrelImages = rawLinks.Split("\n"); - _logger.Trace(LogSource.Geekbot, $"Loaded {_squirrelImages.Length} Squirrel Images"); - } - - private void LoadPumpkins() - { - var rawLinks = File.ReadAllText(Path.GetFullPath("./Storage/pumpkin")); - _pumpkinImages = rawLinks.Split("\n"); - _logger.Trace(LogSource.Geekbot, $"Loaded {_pumpkinImages.Length} Pumpkin Images"); - } - - private void LoadTurtles() - { - var rawLinks = File.ReadAllText(Path.GetFullPath("./Storage/turtles")); - _turtlesImages = rawLinks.Split("\n"); - _logger.Trace(LogSource.Geekbot, $"Loaded {_turtlesImages.Length} Turtle Images"); - } - - private void LoadPinguins() - { - var rawLinks = File.ReadAllText(Path.GetFullPath("./Storage/pinguins")); - _pinguinImages = rawLinks.Split("\n"); - _logger.Trace(LogSource.Geekbot, $"Loaded {_pinguinImages.Length} Pinguin Images"); - } - - private void LoadFoxes() - { - var rawLinks = File.ReadAllText(Path.GetFullPath("./Storage/foxes")); - _foxImages = rawLinks.Split("\n"); - _logger.Trace(LogSource.Geekbot, $"Loaded {_foxImages.Length} Foxes Images"); - } - - private void LoadDab() - { - var rawLinks = File.ReadAllText(Path.GetFullPath("./Storage/dab")); - _dabImages = rawLinks.Split("\n"); - _logger.Trace(LogSource.Geekbot, $"Loaded {_dabImages.Length} Dab Images"); + LoadMedia("./Storage/pandas", ref _pandaImages); + LoadMedia("./Storage/croissant", ref _croissantImages); + LoadMedia("./Storage/squirrel", ref _squirrelImages); + LoadMedia("./Storage/pumpkin", ref _pumpkinImages); + LoadMedia("./Storage/turtles", ref _turtlesImages); + LoadMedia("./Storage/penguins", ref _penguinImages); + LoadMedia("./Storage/foxes", ref _foxImages); + LoadMedia("./Storage/dab", ref _dabImages); } - public string GetPanda() + private void LoadMedia(string path, ref string[] storage) { - return _pandaImages[_random.Next(0, _pandaImages.Length)]; + var rawLinks = File.ReadAllText(Path.GetFullPath(path)); + storage = rawLinks.Split("\n"); + _logger.Trace(LogSource.Geekbot, $"Loaded {storage.Length} Images from ${path}"); } - - public string GetCrossant() + + public string GetMedia(MediaType type) { - return _croissantImages[_random.Next(0, _croissantImages.Length)]; - } - - public string GetSquirrel() - { - return _squirrelImages[_random.Next(0, _squirrelImages.Length)]; - } - - public string GetPumpkin() - { - return _pumpkinImages[_random.Next(0, _pumpkinImages.Length)]; - } - - public string GetTurtle() - { - return _turtlesImages[_random.Next(0, _turtlesImages.Length)]; - } - - public string GetPinguin() - { - return _pinguinImages[_random.Next(0, _pinguinImages.Length)]; - } - - public string GetFox() - { - return _foxImages[_random.Next(0, _foxImages.Length)]; - } - - public string GetDab() - { - return _dabImages[_random.Next(0, _dabImages.Length)]; + var collection = type switch + { + MediaType.Panda => _pandaImages, + MediaType.Croissant => _croissantImages, + MediaType.Squirrel => _squirrelImages, + MediaType.Pumpkin => _pumpkinImages, + MediaType.Turtle => _turtlesImages, + MediaType.Penguin => _penguinImages, + MediaType.Fox => _foxImages, + MediaType.Dab => _dabImages + }; + + return collection[_random.Next(0, collection.Length)]; } } } \ No newline at end of file diff --git a/Geekbot.net/Lib/Media/MediaType.cs b/Geekbot.net/Lib/Media/MediaType.cs new file mode 100644 index 0000000..aee317b --- /dev/null +++ b/Geekbot.net/Lib/Media/MediaType.cs @@ -0,0 +1,14 @@ +namespace Geekbot.net.Lib.Media +{ + public enum MediaType + { + Panda, + Croissant, + Squirrel, + Pumpkin, + Turtle, + Penguin, + Fox, + Dab + } +} \ No newline at end of file diff --git a/Geekbot.net/Program.cs b/Geekbot.net/Program.cs index 3d98ad9..c96e2f5 100755 --- a/Geekbot.net/Program.cs +++ b/Geekbot.net/Program.cs @@ -160,13 +160,13 @@ namespace Geekbot.net _reactionListener = new ReactionListener(_databaseInitializer.Initialize()); _guildSettingsManager = new GuildSettingsManager(_databaseInitializer.Initialize()); var fortunes = new FortunesProvider(_logger); - var mediaProvider = new MediaProvider(_logger); var malClient = new MalClient(_globalSettings, _logger); var levelCalc = new LevelCalc(); var emojiConverter = new EmojiConverter(); var mtgManaConverter = new MtgManaConverter(); var wikipediaClient = new WikipediaClient(); var randomNumberGenerator = new RandomNumberGenerator(); + var mediaProvider = new MediaProvider(_logger, randomNumberGenerator); var kvMemoryStore = new KvInInMemoryStore(); var translationHandler = new TranslationHandler(_logger, _guildSettingsManager); var errorHandler = new ErrorHandler(_logger, translationHandler, _runParameters); diff --git a/Geekbot.net/Storage/pinguins b/Geekbot.net/Storage/penguins similarity index 99% rename from Geekbot.net/Storage/pinguins rename to Geekbot.net/Storage/penguins index 631f9d0..d38d853 100644 --- a/Geekbot.net/Storage/pinguins +++ b/Geekbot.net/Storage/penguins @@ -1,13 +1,13 @@ -https://i.ytimg.com/vi/Qr6sULJnu2o/maxresdefault.jpg -https://www.apex-expeditions.com/wp-content/uploads/2015/08/newzealandSlider_Macquarie_ElephantSealKingPenguins_GRiehle_1366x601.jpg -https://www.birdlife.org/sites/default/files/styles/1600/public/slide.jpg?itok=HRhQfA1S -http://experimentexchange.com/wp-content/uploads/2016/07/penguins-fact.jpg -http://images.mentalfloss.com/sites/default/files/styles/mf_image_16x9/public/istock-511366776.jpg?itok=cWhdWNZ8&resize=1100x619 -https://www.thevaporplace.ch/media/catalog/product/cache/1/thumbnail/800x800/9df78eab33525d08d6e5fb8d27136e95/a/t/atopack_penguin-15.jpg -https://www.superfastbusiness.com/wp-content/uploads/2015/10/real-time-penguin-algorithm-featured.jpg -http://www.antarctica.gov.au/__data/assets/image/0011/147737/varieties/antarctic.jpg -https://vignette.wikia.nocookie.net/robloxcreepypasta/images/1/11/AAEAAQAAAAAAAAdkAAAAJDc3YzkyYjJhLTYyZjctNDY2Mi04M2VjLTg4NjY4ZjgwYzRmNg.png/revision/latest?cb=20180207200526 -https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcR3xV0lhpZuhT8Nmm6LaITsppZ7VfWcWXuyu2cPHrlv_dt_M92K5g -http://goboiano.com/wp-content/uploads/2017/04/Penguin-Kemeno-Friends-Waifu.jpg -https://cdn.yoast.com/app/uploads/2015/10/Penguins_1200x628.png +https://i.ytimg.com/vi/Qr6sULJnu2o/maxresdefault.jpg +https://www.apex-expeditions.com/wp-content/uploads/2015/08/newzealandSlider_Macquarie_ElephantSealKingPenguins_GRiehle_1366x601.jpg +https://www.birdlife.org/sites/default/files/styles/1600/public/slide.jpg?itok=HRhQfA1S +http://experimentexchange.com/wp-content/uploads/2016/07/penguins-fact.jpg +http://images.mentalfloss.com/sites/default/files/styles/mf_image_16x9/public/istock-511366776.jpg?itok=cWhdWNZ8&resize=1100x619 +https://www.thevaporplace.ch/media/catalog/product/cache/1/thumbnail/800x800/9df78eab33525d08d6e5fb8d27136e95/a/t/atopack_penguin-15.jpg +https://www.superfastbusiness.com/wp-content/uploads/2015/10/real-time-penguin-algorithm-featured.jpg +http://www.antarctica.gov.au/__data/assets/image/0011/147737/varieties/antarctic.jpg +https://vignette.wikia.nocookie.net/robloxcreepypasta/images/1/11/AAEAAQAAAAAAAAdkAAAAJDc3YzkyYjJhLTYyZjctNDY2Mi04M2VjLTg4NjY4ZjgwYzRmNg.png/revision/latest?cb=20180207200526 +https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcR3xV0lhpZuhT8Nmm6LaITsppZ7VfWcWXuyu2cPHrlv_dt_M92K5g +http://goboiano.com/wp-content/uploads/2017/04/Penguin-Kemeno-Friends-Waifu.jpg +https://cdn.yoast.com/app/uploads/2015/10/Penguins_1200x628.png https://images.justwatch.com/backdrop/8611153/s1440/pingu \ No newline at end of file