Rework the media provider

This commit is contained in:
runebaas 2020-06-25 15:12:41 +02:00
parent cc22774729
commit 580a514ce5
No known key found for this signature in database
GPG key ID: 2677AF508D0300D6
6 changed files with 72 additions and 136 deletions

View file

@ -18,7 +18,7 @@ namespace Geekbot.net.Commands.Randomness
[Summary("Get a random panda image")] [Summary("Get a random panda image")]
public async Task Panda() public async Task Panda()
{ {
await ReplyAsync("", false, Eb(_mediaProvider.GetPanda())); await ReplyAsync("", false, Eb(_mediaProvider.GetMedia(MediaType.Panda)));
} }
[Command("croissant", RunMode = RunMode.Async)] [Command("croissant", RunMode = RunMode.Async)]
@ -26,50 +26,50 @@ namespace Geekbot.net.Commands.Randomness
[Summary("Get a random croissant image")] [Summary("Get a random croissant image")]
public async Task Croissant() public async Task Croissant()
{ {
await ReplyAsync("", false, Eb(_mediaProvider.GetCrossant())); await ReplyAsync("", false, Eb(_mediaProvider.GetMedia(MediaType.Croissant)));
} }
[Command("pumpkin", RunMode = RunMode.Async)] [Command("pumpkin", RunMode = RunMode.Async)]
[Summary("Get a random pumpkin image")] [Summary("Get a random pumpkin image")]
public async Task Pumpkin() public async Task Pumpkin()
{ {
await ReplyAsync("", false, Eb(_mediaProvider.GetPumpkin())); await ReplyAsync("", false, Eb(_mediaProvider.GetMedia(MediaType.Pumpkin)));
} }
[Command("squirrel", RunMode = RunMode.Async)] [Command("squirrel", RunMode = RunMode.Async)]
[Summary("Get a random squirrel image")] [Summary("Get a random squirrel image")]
public async Task Squirrel() public async Task Squirrel()
{ {
await ReplyAsync("", false, Eb(_mediaProvider.GetSquirrel())); await ReplyAsync("", false, Eb(_mediaProvider.GetMedia(MediaType.Squirrel)));
} }
[Command("turtle", RunMode = RunMode.Async)] [Command("turtle", RunMode = RunMode.Async)]
[Summary("Get a random turtle image")] [Summary("Get a random turtle image")]
public async Task Turtle() public async Task Turtle()
{ {
await ReplyAsync("", false, Eb(_mediaProvider.GetTurtle())); await ReplyAsync("", false, Eb(_mediaProvider.GetMedia(MediaType.Turtle)));
} }
[Command("pinguin", RunMode = RunMode.Async)] [Command("penguin", RunMode = RunMode.Async)]
[Alias("pingu")] [Alias("pengu")]
[Summary("Get a random pinguin image")] [Summary("Get a random penguin image")]
public async Task Pinguin() public async Task Penguin()
{ {
await ReplyAsync("", false, Eb(_mediaProvider.GetPinguin())); await ReplyAsync("", false, Eb(_mediaProvider.GetMedia(MediaType.Penguin)));
} }
[Command("fox", RunMode = RunMode.Async)] [Command("fox", RunMode = RunMode.Async)]
[Summary("Get a random fox image")] [Summary("Get a random fox image")]
public async Task Fox() public async Task Fox()
{ {
await ReplyAsync("", false, Eb(_mediaProvider.GetFox())); await ReplyAsync("", false, Eb(_mediaProvider.GetMedia(MediaType.Fox)));
} }
[Command("dab", RunMode = RunMode.Async)] [Command("dab", RunMode = RunMode.Async)]
[Summary("Get a random dab image")] [Summary("Get a random dab image")]
public async Task Dab() public async Task Dab()
{ {
await ReplyAsync("", false, Eb(_mediaProvider.GetDab())); await ReplyAsync("", false, Eb(_mediaProvider.GetMedia(MediaType.Dab)));
} }
private static Embed Eb(string image) private static Embed Eb(string image)

View file

@ -2,13 +2,6 @@
{ {
public interface IMediaProvider public interface IMediaProvider
{ {
string GetPanda(); string GetMedia(MediaType type);
string GetCrossant();
string GetSquirrel();
string GetPumpkin();
string GetTurtle();
string GetPinguin();
string GetFox();
string GetDab();
} }
} }

View file

@ -1,133 +1,62 @@
using System; using System;
using System.IO; using System.IO;
using Geekbot.net.Lib.Logger; using Geekbot.net.Lib.Logger;
using Geekbot.net.Lib.RandomNumberGenerator;
namespace Geekbot.net.Lib.Media namespace Geekbot.net.Lib.Media
{ {
public class MediaProvider : IMediaProvider public class MediaProvider : IMediaProvider
{ {
private readonly Random _random; private readonly IRandomNumberGenerator _random;
private readonly IGeekbotLogger _logger; private readonly IGeekbotLogger _logger;
private string[] _pandaImages; private string[] _pandaImages;
private string[] _croissantImages; private string[] _croissantImages;
private string[] _squirrelImages; private string[] _squirrelImages;
private string[] _pumpkinImages; private string[] _pumpkinImages;
private string[] _turtlesImages; private string[] _turtlesImages;
private string[] _pinguinImages; private string[] _penguinImages;
private string[] _foxImages; private string[] _foxImages;
private string[] _dabImages; private string[] _dabImages;
public MediaProvider(IGeekbotLogger logger) public MediaProvider(IGeekbotLogger logger, IRandomNumberGenerator random)
{ {
_random = new Random(); _random = random;
_logger = logger; _logger = logger;
logger.Information(LogSource.Geekbot, "Loading Media Files"); logger.Information(LogSource.Geekbot, "Loading Media Files");
; ;
LoadPandas(); LoadMedia("./Storage/pandas", ref _pandaImages);
BakeCroissants(); LoadMedia("./Storage/croissant", ref _croissantImages);
LoadSquirrels(); LoadMedia("./Storage/squirrel", ref _squirrelImages);
LoadPumpkins(); LoadMedia("./Storage/pumpkin", ref _pumpkinImages);
LoadTurtles(); LoadMedia("./Storage/turtles", ref _turtlesImages);
LoadPinguins(); LoadMedia("./Storage/penguins", ref _penguinImages);
LoadFoxes(); LoadMedia("./Storage/foxes", ref _foxImages);
LoadDab(); LoadMedia("./Storage/dab", ref _dabImages);
}
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");
} }
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)]; var collection = type switch
} {
MediaType.Panda => _pandaImages,
public string GetSquirrel() MediaType.Croissant => _croissantImages,
{ MediaType.Squirrel => _squirrelImages,
return _squirrelImages[_random.Next(0, _squirrelImages.Length)]; MediaType.Pumpkin => _pumpkinImages,
} MediaType.Turtle => _turtlesImages,
MediaType.Penguin => _penguinImages,
public string GetPumpkin() MediaType.Fox => _foxImages,
{ MediaType.Dab => _dabImages
return _pumpkinImages[_random.Next(0, _pumpkinImages.Length)]; };
}
return collection[_random.Next(0, collection.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)];
} }
} }
} }

View file

@ -0,0 +1,14 @@
namespace Geekbot.net.Lib.Media
{
public enum MediaType
{
Panda,
Croissant,
Squirrel,
Pumpkin,
Turtle,
Penguin,
Fox,
Dab
}
}

View file

@ -160,13 +160,13 @@ namespace Geekbot.net
_reactionListener = new ReactionListener(_databaseInitializer.Initialize()); _reactionListener = new ReactionListener(_databaseInitializer.Initialize());
_guildSettingsManager = new GuildSettingsManager(_databaseInitializer.Initialize()); _guildSettingsManager = new GuildSettingsManager(_databaseInitializer.Initialize());
var fortunes = new FortunesProvider(_logger); var fortunes = new FortunesProvider(_logger);
var mediaProvider = new MediaProvider(_logger);
var malClient = new MalClient(_globalSettings, _logger); var malClient = new MalClient(_globalSettings, _logger);
var levelCalc = new LevelCalc(); var levelCalc = new LevelCalc();
var emojiConverter = new EmojiConverter(); var emojiConverter = new EmojiConverter();
var mtgManaConverter = new MtgManaConverter(); var mtgManaConverter = new MtgManaConverter();
var wikipediaClient = new WikipediaClient(); var wikipediaClient = new WikipediaClient();
var randomNumberGenerator = new RandomNumberGenerator(); var randomNumberGenerator = new RandomNumberGenerator();
var mediaProvider = new MediaProvider(_logger, randomNumberGenerator);
var kvMemoryStore = new KvInInMemoryStore(); var kvMemoryStore = new KvInInMemoryStore();
var translationHandler = new TranslationHandler(_logger, _guildSettingsManager); var translationHandler = new TranslationHandler(_logger, _guildSettingsManager);
var errorHandler = new ErrorHandler(_logger, translationHandler, _runParameters); var errorHandler = new ErrorHandler(_logger, translationHandler, _runParameters);

View file

@ -1,13 +1,13 @@
https://i.ytimg.com/vi/Qr6sULJnu2o/maxresdefault.jpg 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.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 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://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 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.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 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 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://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 https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcR3xV0lhpZuhT8Nmm6LaITsppZ7VfWcWXuyu2cPHrlv_dt_M92K5g
http://goboiano.com/wp-content/uploads/2017/04/Penguin-Kemeno-Friends-Waifu.jpg 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://cdn.yoast.com/app/uploads/2015/10/Penguins_1200x628.png
https://images.justwatch.com/backdrop/8611153/s1440/pingu https://images.justwatch.com/backdrop/8611153/s1440/pingu