aboutsummaryrefslogtreecommitdiff
path: root/tools/charcrawler/crawler/acd_anime.go
diff options
context:
space:
mode:
authorJan C <jan@ruken.pw>2016-03-29 16:08:41 (UTC)
committerJan C <jan@ruken.pw>2016-03-29 16:08:41 (UTC)
commitb601ea312d2c08560fcb70312536e6ba61d09bf4 (patch)
tree6490675fc6ee77ceacf1b760eea1d5380cbb0f7c /tools/charcrawler/crawler/acd_anime.go
parente0e59e9ca817f1e3c2091cf1b8ac370419fec8aa (diff)
parentae4f7f89849c4e94b388aabdb28d8f9f110df3c2 (diff)
Merge branch 'master' of ssh://projekte.fagott.pw/grilist
Diffstat (limited to 'tools/charcrawler/crawler/acd_anime.go')
-rw-r--r--tools/charcrawler/crawler/acd_anime.go44
1 files changed, 44 insertions, 0 deletions
diff --git a/tools/charcrawler/crawler/acd_anime.go b/tools/charcrawler/crawler/acd_anime.go
new file mode 100644
index 0000000..c697b43
--- /dev/null
+++ b/tools/charcrawler/crawler/acd_anime.go
@@ -0,0 +1,44 @@
1package crawler
2
3import (
4 "log"
5 "strconv"
6 "strings"
7
8 "github.com/PuerkitoBio/goquery"
9)
10
11type ACDAnimeCrawler struct{}
12
13func (a ACDAnimeCrawler) Name() string {
14 return "ACDAnime"
15}
16
17func (a ACDAnimeCrawler) Crawl(id int) (CharacterData, error) {
18 c := make(CharacterData)
19 doc, err := goquery.NewDocument("http://www.animecharactersdatabase.com/series.php?id=" + strconv.Itoa(id))
20 if err != nil {
21 log.Println(err)
22 return nil, CrawlError
23 }
24 text := doc.Text()
25 if strings.Contains(text, "bad series : try") {
26 return nil, CharacterNotFound
27 }
28 if strings.Contains(text, "Your IP has been blocked") {
29 return nil, Banned
30 }
31 tds := doc.Find("#besttable > table > tbody > tr > td")
32 val, _ := tds.Eq(0).Find("img").Attr("src")
33 c["__thumb"] = val
34 tds.Eq(1).Find("tr").Each(func(i int, s *goquery.Selection) {
35 key := s.Find("th").Text()
36 value := s.Find("td").Text()
37 if key == "Home Page" {
38 val, _ = s.Find("td > a").Attr("href")
39 value = val
40 }
41 c[key] = value
42 })
43 return c, nil
44}