Caching anime and manga seraches. Club disband error message fixed.

This commit is contained in:
Master Kwoth 2017-09-15 02:42:51 +02:00
parent 25258a0c61
commit 16fd835d4b
5 changed files with 36 additions and 16 deletions

View File

@ -11,10 +11,14 @@ namespace NadekoBot.Modules.Searches.Services
public class AnimeSearchService : INService public class AnimeSearchService : INService
{ {
private readonly Logger _log; private readonly Logger _log;
private readonly IDataCache _cache;
private readonly HttpClient _http;
public AnimeSearchService() public AnimeSearchService(IDataCache cache)
{ {
_log = LogManager.GetCurrentClassLogger(); _log = LogManager.GetCurrentClassLogger();
_cache = cache;
_http = new HttpClient();
} }
public async Task<AnimeResult> GetAnimeData(string query) public async Task<AnimeResult> GetAnimeData(string query)
@ -25,11 +29,16 @@ namespace NadekoBot.Modules.Searches.Services
{ {
var link = "https://aniapi.nadekobot.me/anime/" + Uri.EscapeDataString(query.Replace("/", " ")); var link = "https://aniapi.nadekobot.me/anime/" + Uri.EscapeDataString(query.Replace("/", " "));
using (var http = new HttpClient()) link = link.ToLowerInvariant();
var (ok, data) = await _cache.TryGetAnimeDataAsync(link).ConfigureAwait(false);
if (!ok)
{ {
var res = await http.GetStringAsync(link).ConfigureAwait(false); data = await _http.GetStringAsync(link).ConfigureAwait(false);
return JsonConvert.DeserializeObject<AnimeResult>(res); await _cache.SetAnimeDataAsync(link, data).ConfigureAwait(false);
} }
return JsonConvert.DeserializeObject<AnimeResult>(data);
} }
catch catch
{ {
@ -44,12 +53,17 @@ namespace NadekoBot.Modules.Searches.Services
try try
{ {
var link = "https://aniapi.nadekobot.me/manga/" + Uri.EscapeDataString(query.Replace("/", " ")); var link = "https://aniapi.nadekobot.me/manga/" + Uri.EscapeDataString(query.Replace("/", " "));
using (var http = new HttpClient()) link = link.ToLowerInvariant();
var (ok, data) = await _cache.TryGetAnimeDataAsync(link).ConfigureAwait(false);
if (!ok)
{ {
var res = await http.GetStringAsync(link).ConfigureAwait(false); data = await _http.GetStringAsync(link).ConfigureAwait(false);
return JsonConvert.DeserializeObject<MangaResult>(res); await _cache.SetAnimeDataAsync(link, data).ConfigureAwait(false);
} }
return JsonConvert.DeserializeObject<MangaResult>(data);
} }
catch catch
{ {

View File

@ -282,7 +282,7 @@ namespace NadekoBot.Modules.Xp
} }
else else
{ {
await ReplyErrorLocalized("club_disaband_error").ConfigureAwait(false); await ReplyErrorLocalized("club_disband_error").ConfigureAwait(false);
} }
} }

View File

@ -242,13 +242,6 @@ namespace NadekoBot
#if GLOBAL_NADEKO #if GLOBAL_NADEKO
isPublicNadeko = true; isPublicNadeko = true;
#endif #endif
//_log.Info(string.Join(", ", CommandService.Commands
// .Distinct(x => x.Name + x.Module.Name)
// .SelectMany(x => x.Aliases)
// .GroupBy(x => x)
// .Where(x => x.Count() > 1)
// .Select(x => x.Key + $"({x.Count()})")));
//unload modules which are not available on the public bot //unload modules which are not available on the public bot
if(isPublicNadeko) if(isPublicNadeko)

View File

@ -11,6 +11,8 @@ namespace NadekoBot.Services
{ {
ConnectionMultiplexer Redis { get; } ConnectionMultiplexer Redis { get; }
Task<(bool Success, byte[] Data)> TryGetImageDataAsync(string key); Task<(bool Success, byte[] Data)> TryGetImageDataAsync(string key);
Task<(bool Success, string Data)> TryGetAnimeDataAsync(string key);
Task SetImageDataAsync(string key, byte[] data); Task SetImageDataAsync(string key, byte[] data);
Task SetAnimeDataAsync(string link, string data);
} }
} }

View File

@ -25,5 +25,16 @@ namespace NadekoBot.Services.Impl
{ {
return _db.StringSetAsync("image_" + key, data); return _db.StringSetAsync("image_" + key, data);
} }
public async Task<(bool Success, string Data)> TryGetAnimeDataAsync(string key)
{
string x = await _db.StringGetAsync("anime_" + key);
return (x != null, x);
}
public Task SetAnimeDataAsync(string key, string data)
{
return _db.StringSetAsync("anime_" + key, data);
}
} }
} }