From 429466e258c9228483ae8928f66fd52cec1178eb Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Wed, 21 Dec 2016 00:25:57 +0100 Subject: privmsg --- href.go | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) (limited to 'href.go') diff --git a/href.go b/href.go index 918a2f2..5efa71c 100644 --- a/href.go +++ b/href.go @@ -2,19 +2,17 @@ package main import ( "errors" + "fmt" "log" "net/http" "strings" - irc "github.com/fluffle/goirc/client" "golang.org/x/net/html" "golang.org/x/net/html/charset" ) var errNotHTML = errors.New("not HTML content") -const maxLen = 500 - func title(n *html.Node) (s string) { if n.Type == html.ElementNode && n.Data == "title" { for c := n.FirstChild; c != nil; c = c.NextSibling { @@ -55,7 +53,7 @@ func getTitle(uri string) (string, error) { return title(doc), nil } -func links(s string) (ret []string) { +func getLinks(s string) (ret []string) { for _, v := range strings.Fields(s) { switch { case strings.HasPrefix(v, "www"): @@ -68,17 +66,20 @@ func links(s string) (ret []string) { return } -func Links(conn *irc.Conn, line *irc.Line) { - for _, v := range links(line.Text()) { - t, err := getTitle(v) - if err != nil { - log.Println(err) - } - if t != "" { - if len(t) > maxLen { - t = t[:maxLen] + "..." +func links(msg chan string) chan string { + c := make(chan string) + go func() { + for l := range c { + for _, v := range getLinks(l) { + t, err := getTitle(v) + if err != nil { + log.Println(err) + } + if t != "" { + msg <- fmt.Sprint("Title:", t) + } } - conn.Notice(line.Target(), "Title: "+t) } - } + }() + return c } -- cgit v1.2.3