private static void RunCommands(object obj) { // todo: copied code switch (obj) { case ContextMenuCommand c1: { var c = (IIntegrated)c1; RunIntegrated(c, ContextMenuCommand.Add, ContextMenuCommand.Remove); break; } case PathCommand c1: { var c = (IIntegrated)c1; RunIntegrated(c, PathCommand.Add, PathCommand.Remove); break; } case CreateSauceNaoCommand c: { var acc = SauceNao.CreateAccount(c.Auto); CliOutput.WriteInfo("Account information:"); var accStr = acc.ToString(); var output = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\saucenao_account.txt"; File.WriteAllText(output, accStr); Console.WriteLine(accStr); CliOutput.WriteInfo("Adding key to cfg file"); RuntimeInfo.Config.SauceNaoAuth = acc.ApiKey; RuntimeInfo.Config.WriteToFile(); break; } case ResetCommand c: { ResetCommand.RunReset(c.All); break; } case InfoCommand c: { InfoCommand.Show(); break; } } }
public async Task SauceNaoAsync() { var messages = await Context.Channel.GetMessagesAsync(100).Flatten(); string url = ""; foreach (var attach in messages) { if (attach.Attachments.Count > 0) { url = attach.Attachments.FirstOrDefault().ProxyUrl ?? attach.Attachments.FirstOrDefault().Url; if (url != null) { break; } } if (attach.Embeds.Count > 0) { url = attach.Embeds.FirstOrDefault().Thumbnail.HasValue ? attach.Embeds.FirstOrDefault().Thumbnail.Value.Url : attach.Embeds.FirstOrDefault().Url; if (url != null) { break; } } } if (url == null) { await ReplyEmbedAsync(2, "Error: No images/attachments found", "Try reposting the image."); return; } if (IsOversized(url)) { await ReplyEmbedAsync(2, "Error: Oversized image", "Image cannot be 15MB or higher."); return; } string Token = cyanConfig["tokens:SauceNAO"]; if (string.IsNullOrWhiteSpace(Token)) { throw new Exception("SauceNAO API key missing."); } var sauceNao = new SauceNao(Token); SauceNaoSettings.ResultCount = 1; try { var response = await sauceNao.GetSourceAsync(url); if (response == null) { return; } foreach (var results in response.Results) { if (double.Parse(results.ResultInfo.Similarity) >= 65.00) { if (!string.IsNullOrWhiteSpace(results.ResultData.PixivId.ToString()) && !string.IsNullOrWhiteSpace(results.ResultData.PixivMemberName)) { await ReplyEmbedAsync(1, "Result found:", "Pixiv: \"" + results.ResultData.Title + "\"\n" + "Artist: " + results.ResultData.PixivMemberName + "\n" + results.ResultData.Urls[0]); } else { await ReplyEmbedAsync(1, "Result found:", "```prolog\n" + "Similarity: '" + results.ResultInfo.Similarity + "%'\n" + "Title: '" + results.ResultData.Title + "'\n" + "Creator: '" + results.ResultData.ImageCreator + "'\n" + "Source: '" + results.ResultData.ImageSource + "'\n" + "Url: ['" + results.ResultData.Urls[0] + "']\n```"); } } else { await ReplyEmbedAsync(2, "Error: Similarity too low", "No results found."); } } } catch { await ReplyEmbedAsync(2, "Error: Unhandled Exception", "Try going directly to SauceNAO:\n" + "http://saucenao.com/search.php?db=999&url=" + url); } }