func GetTitle(rawuri string) string { var index int ext := rawuri[strings.LastIndex(rawuri, "//")+2:] if index = strings.LastIndex(ext, "/"); index > 0 { ext = ext[index+1:] if index = strings.Index(ext, "."); index > -1 { ext = ext[index+1:] allow := []string{"htm", "html", "asp", "aspx", "php", "php3", "php5"} if !lib.HasElementString(allow, ext) { logger.Debug(fmt.Sprintf("[web.GetTitle()] Not an OK file extension: %s -> %s", rawuri, ext)) return "" } } } body, err := Get(&rawuri) if err != "" { return "" } r, regErr := regexp.Compile("<title?[^>]+>([^<]+)<\\/title>") if regErr != nil { logger.Error("[web.GetTitle()] Couldn't compile regex title regex") return "" } if title := r.FindString(string(body)); title != "" { rooturl := rawuri[strings.Index(rawuri, "//")+2:] if index = strings.Index(rooturl, "/"); index > -1 { rooturl = rooturl[:index] } return fmt.Sprintf("%s ~ %s", html.UnescapeString(lib.StripHtml(title)), rooturl) } return "" }
func Register(bot *irc.IRC) { defer logger.Info(lib.TimeTrack(lib.TimeNow(), "Loading the Google plugin")) events.CmdListen(&events.CmdListener{ Commands: []string{"google", "g"}, Help: "Googles stuff~", Syntax: bot.Config.Prefix + "g <search terms>", Callback: func(input *events.Params) { g := web.Google(input.Data, 1) if g.Error != "" { bot.Say(input.Context, g.Error) return } bot.Say(input.Context, fmt.Sprintf("%s ~ %s ~ %s", g.Results.Data[0].Title, g.Results.Data[0].URL, lib.StripHtml(g.Results.Data[0].Content))) }}) }