better hentai, cleanup, fixes

This commit is contained in:
Master Kwoth 2016-01-28 16:52:39 +01:00
parent 32e62186a9
commit f48265d419
3 changed files with 58 additions and 17 deletions

View File

@ -155,7 +155,6 @@ namespace NadekoBot.Classes.Music {
Console.WriteLine("Canceling buffer token"); Console.WriteLine("Canceling buffer token");
} }
} catch (Exception ex) { Console.WriteLine($"Canceling buffer token failed {ex}"); } } catch (Exception ex) { Console.WriteLine($"Canceling buffer token failed {ex}"); }
Console.WriteLine("Waiting");
await Task.Delay(1000); await Task.Delay(1000);
} }

View File

@ -371,6 +371,7 @@ namespace NadekoBot.Modules
.Description("Sets a user for through-bot communication. Only works if server is set.**Owner only**.") .Description("Sets a user for through-bot communication. Only works if server is set.**Owner only**.")
.Parameter("name", ParameterType.Unparsed) .Parameter("name", ParameterType.Unparsed)
.Do(async e => { .Do(async e => {
if (e.User.Id != NadekoBot.OwnerID) return;
commsUser = commsServer?.FindUsers(e.GetArg("name")).FirstOrDefault(); commsUser = commsServer?.FindUsers(e.GetArg("name")).FirstOrDefault();
if (commsUser != null) if (commsUser != null)
await e.Send("User for comms set."); await e.Send("User for comms set.");
@ -382,6 +383,7 @@ namespace NadekoBot.Modules
.Description("Sets a server for through-bot communication.**Owner only**.") .Description("Sets a server for through-bot communication.**Owner only**.")
.Parameter("server", ParameterType.Unparsed) .Parameter("server", ParameterType.Unparsed)
.Do(async e => { .Do(async e => {
if (e.User.Id != NadekoBot.OwnerID) return;
commsServer = client.FindServers(e.GetArg("server")).FirstOrDefault(); commsServer = client.FindServers(e.GetArg("server")).FirstOrDefault();
if (commsServer != null) if (commsServer != null)
await e.Send("Server for comms set."); await e.Send("Server for comms set.");

View File

@ -105,25 +105,33 @@ namespace NadekoBot.Modules
}); });
cgb.CreateCommand("~hentai") cgb.CreateCommand("~hentai")
.Description("Shows a random image from danbooru with a given tag. Tag is optional but preffered.\n**Usage**: ~hentai yuri") .Description("Shows a random NSFW hentai image from gelbooru and danbooru with a given tag. Tag is optional but preffered.\n**Usage**: ~hentai yuri")
.Parameter("tag", ParameterType.Unparsed) .Parameter("tag", ParameterType.Unparsed)
.Do(async e => { .Do(async e => {
try { string tag = e.GetArg("tag");
var rng = new Random(); if (tag == null)
var tag = e.GetArg("tag"); tag = "";
await e.Send(":heart: Gelbooru: " + GetGelbooruImageLink(tag));
if (tag == "loli") //loli doesn't work for some reason atm await e.Send(":heart: Danbooru: " + GetDanbooruImageLink(tag));
tag = "flat_chest"; });
cgb.CreateCommand("~danbooru")
var webpage = MakeRequestAndGetResponse($"http://danbooru.donmai.us/posts?page={ rng.Next(0, 30) }&tags={ tag }"); .Description("Shows a random hentai image from danbooru with a given tag. Tag is optional but preffered.\n**Usage**: ~hentai yuri")
var matches = Regex.Matches(webpage, "data-large-file-url=\"(?<id>.*)\""); .Parameter("tag", ParameterType.Unparsed)
.Do(async e => {
await e.Send($"http://danbooru.donmai.us{ matches[rng.Next(0, matches.Count)].Groups["id"].Value }".ShortenUrl()); string tag = e.GetArg("tag");
} catch (Exception) { if (tag == null)
await e.Send("Error ;("); tag = "";
} await e.Send(GetDanbooruImageLink(tag));
});
cgb.CreateCommand("~gelbooru")
.Description("Shows a random hentai image from gelbooru with a given tag. Tag is optional but preffered.\n**Usage**: ~hentai yuri")
.Parameter("tag", ParameterType.Unparsed)
.Do(async e => {
string tag = e.GetArg("tag");
if (tag == null)
tag = "";
await e.Send(GetGelbooruImageLink(tag));
}); });
cgb.CreateCommand("lmgtfy") cgb.CreateCommand("lmgtfy")
.Description("Google something for an idiot.") .Description("Google something for an idiot.")
.Parameter("ffs", ParameterType.Unparsed) .Parameter("ffs", ParameterType.Unparsed)
@ -226,6 +234,38 @@ namespace NadekoBot.Modules
return toReturn; return toReturn;
} }
public string GetDanbooruImageLink(string tag) {
try {
var rng = new Random();
if (tag == "loli") //loli doesn't work for some reason atm
tag = "flat_chest";
var webpage = MakeRequestAndGetResponse($"http://danbooru.donmai.us/posts?page={ rng.Next(0, 30) }&tags={ tag.Replace(" ","_") }");
var matches = Regex.Matches(webpage, "data-large-file-url=\"(?<id>.*?)\"");
return $"http://danbooru.donmai.us{ matches[rng.Next(0, matches.Count)].Groups["id"].Value }".ShortenUrl();
} catch (Exception) {
return null;
}
}
public string GetGelbooruImageLink(string tag) {
try {
var rng = new Random();
var url = $"http://gelbooru.com/index.php?page=post&s=list&pid={ rng.Next(0, 15) * 42 }&tags={ tag.Replace(" ", "_") }";
var webpage = MakeRequestAndGetResponse(url); // first extract the post id and go to that posts page
var matches = Regex.Matches(webpage, "span id=\"s(?<id>\\d*)\"");
var postLink = $"http://gelbooru.com/index.php?page=post&s=view&id={ matches[rng.Next(0, matches.Count)].Groups["id"].Value }";
webpage = MakeRequestAndGetResponse(postLink);
//now extract the image from post page
var match = Regex.Match(webpage, "\"(?<url>http://simg4.gelbooru.com//images.*?)\"");
return match.Groups["url"].Value;
} catch (Exception) {
return null;
}
}
public static string ShortenUrl(string url) public static string ShortenUrl(string url)
{ {
if (NadekoBot.GoogleAPIKey == null || NadekoBot.GoogleAPIKey == "") return url; if (NadekoBot.GoogleAPIKey == null || NadekoBot.GoogleAPIKey == "") return url;