2015-09-25 22:33:55 +00:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"log"
|
|
|
|
"net/url"
|
|
|
|
"path"
|
|
|
|
|
|
|
|
"github.com/PuerkitoBio/goquery"
|
|
|
|
|
|
|
|
"git.1750studios.com/gronkhDE/gogronkh/config"
|
|
|
|
"git.1750studios.com/gronkhDE/gogronkh/database"
|
|
|
|
"git.1750studios.com/gronkhDE/gogronkh/image"
|
|
|
|
"git.1750studios.com/gronkhDE/gogronkh/youtube"
|
|
|
|
)
|
|
|
|
|
|
|
|
// Parse new authors
|
|
|
|
func ParseAuthors() {
|
|
|
|
res, err := GetHTTPResource(config.C.GronkhUrl + "/lets-player")
|
|
|
|
if err != nil {
|
|
|
|
log.Printf("ERR AT Page: Request failed (%+v)", err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
doc, err := goquery.NewDocumentFromResponse(res)
|
|
|
|
if err != nil {
|
|
|
|
log.Printf("ERR AT Page: Document failure (%+v)", err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
// Parse the Episodes
|
|
|
|
doc.Find("div.column > a").Each(func(i int, s *goquery.Selection) {
|
|
|
|
wg.Add(1)
|
2016-02-27 11:57:14 +00:00
|
|
|
go ParseAuthor(i, s)
|
2015-09-25 22:33:55 +00:00
|
|
|
})
|
|
|
|
wg.Wait()
|
|
|
|
}
|
|
|
|
|
2016-02-27 11:57:14 +00:00
|
|
|
func ParseAuthor(i int, s *goquery.Selection) {
|
2015-09-25 22:33:55 +00:00
|
|
|
defer wg.Done()
|
|
|
|
u, _ := s.Attr("href")
|
|
|
|
ur, _ := url.Parse(u)
|
|
|
|
slug := path.Base(ur.Path)
|
|
|
|
var count int
|
|
|
|
if database.Db.Model(database.Author{}).Where("slug = ?", slug).Count(&count); count > 0 {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
var AT database.Author
|
|
|
|
AT.Slug.String = slug
|
|
|
|
AT.Name.String, _ = s.Attr("title")
|
|
|
|
res, err := GetHTTPResource(config.C.GronkhUrl + u)
|
|
|
|
if err != nil {
|
|
|
|
log.Printf("ERR AT %s: Request failed (%+v)", slug, err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
doc, err := goquery.NewDocumentFromResponse(res)
|
|
|
|
if err != nil {
|
|
|
|
log.Printf("ERR AT %s: Document failure (%+v)", slug, err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
if AT.Name.String == "Honeyball" {
|
|
|
|
AT.Youtube.String = "UCwF-rMpz0gbgWZIbrgGXuGQ"
|
|
|
|
} else {
|
|
|
|
ytna, _ := doc.Find("iframe#fr").Attr("src")
|
|
|
|
ytn, _ := url.Parse(ytna)
|
|
|
|
ytname := ytn.Query().Get("p")
|
|
|
|
AT.Youtube.String, _ = youtube.GetChannelId(ytname, config.C.YoutubeKey)
|
|
|
|
}
|
|
|
|
ytres, _ := youtube.GetChannel([]string {"snippet", "brandingSettings"}, AT.Youtube.String, config.C.YoutubeKey)
|
|
|
|
AT.AvatarS.String, AT.AvatarB.String, err = image.ResizeAvatar(ytres.Items[0].Snippet.Thumbnails["high"].Url)
|
|
|
|
if err != nil {
|
|
|
|
log.Printf("WAR AT %s: Error resizing avatar: %+v", slug, err)
|
|
|
|
}
|
|
|
|
if fa, ok := ytres.Items[0].BrandingSettings.Image["bannerTvHighImageUrl"]; ok {
|
|
|
|
AT.FanArtS.String, AT.FanArtB.String, err = image.ResizeFanArt(fa)
|
|
|
|
} else if fa, ok := ytres.Items[0].BrandingSettings.Image["bannerTvImageUrl"]; ok {
|
|
|
|
AT.FanArtS.String, AT.FanArtB.String, err = image.ResizeFanArt(fa)
|
|
|
|
}
|
|
|
|
if err != nil {
|
|
|
|
log.Printf("WAR AT %s: Error resizing fanart: %+v", slug, err)
|
|
|
|
}
|
|
|
|
if err := database.Db.Create(&AT).Error; err != nil {
|
|
|
|
log.Printf("ERR AT %s: Could not be added to databse (%+v)", slug, err)
|
|
|
|
} else {
|
|
|
|
log.Printf("SUC AT %s: Added to database", slug)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Update authors
|
|
|
|
func UpdateAuthors() {
|
|
|
|
var ATs []database.Author
|
|
|
|
var count int
|
|
|
|
database.Db.Find(&ATs).Count(&count)
|
|
|
|
for _, AT := range ATs {
|
|
|
|
wg.Add(1)
|
2016-02-27 11:57:14 +00:00
|
|
|
go UpdateAuthor(AT)
|
2015-09-25 22:33:55 +00:00
|
|
|
}
|
|
|
|
wg.Wait()
|
|
|
|
}
|
|
|
|
|
2016-02-27 11:57:14 +00:00
|
|
|
func UpdateAuthor(AT database.Author) {
|
2015-09-25 22:33:55 +00:00
|
|
|
defer wg.Done()
|
|
|
|
ytres, err := youtube.GetChannel([]string {"snippet", "brandingSettings"}, AT.Youtube.String, config.C.YoutubeKey)
|
|
|
|
AT.AvatarS.String, AT.AvatarB.String, err = image.ResizeAvatar(ytres.Items[0].Snippet.Thumbnails["high"].Url)
|
|
|
|
if err != nil {
|
|
|
|
log.Printf("WAR AT %s: Error resizing avatar: %+v", AT.Slug.String, err)
|
|
|
|
}
|
|
|
|
if fa, ok := ytres.Items[0].BrandingSettings.Image["bannerTvHighImageUrl"]; ok {
|
|
|
|
AT.FanArtS.String, AT.FanArtB.String, err = image.ResizeFanArt(fa)
|
|
|
|
} else if fa, ok := ytres.Items[0].BrandingSettings.Image["bannerTvImageUrl"]; ok {
|
|
|
|
AT.FanArtS.String, AT.FanArtB.String, err = image.ResizeFanArt(fa)
|
|
|
|
}
|
|
|
|
if err != nil {
|
|
|
|
log.Printf("WAR AT %s: Error resizing fanart: %+v", AT.Slug.String, err)
|
|
|
|
}
|
|
|
|
if err := database.Db.Save(&AT).Error; err != nil {
|
|
|
|
log.Printf("ERR AT %s: Could not be updated in database (%+v)", AT.Slug.String, err)
|
|
|
|
} else {
|
|
|
|
log.Printf("SUC AT %s: Updated in database", AT.Slug.String)
|
|
|
|
}
|
2015-09-26 11:45:14 +00:00
|
|
|
}
|