Adding CLI with add_lt mode
This commit is contained in:
parent
180d966486
commit
d6ac82fabf
103
gparser/cli.go
Normal file
103
gparser/cli.go
Normal file
|
@ -0,0 +1,103 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
"log"
|
||||||
|
"time"
|
||||||
|
"flag"
|
||||||
|
|
||||||
|
"github.com/ChannelMeter/iso8601duration"
|
||||||
|
|
||||||
|
"git.1750studios.com/gronkhDE/gogronkh/config"
|
||||||
|
"git.1750studios.com/gronkhDE/gogronkh/database"
|
||||||
|
"git.1750studios.com/gronkhDE/gogronkh/image"
|
||||||
|
"git.1750studios.com/gronkhDE/gogronkh/youtube"
|
||||||
|
)
|
||||||
|
|
||||||
|
var mode string
|
||||||
|
|
||||||
|
var slug string
|
||||||
|
var name string
|
||||||
|
var aslug string
|
||||||
|
var youtubeid string
|
||||||
|
var poster string
|
||||||
|
|
||||||
|
func InitCli() {
|
||||||
|
flag.StringVar(&mode, "mode", "", "Specifies the action to be done. Can be add_lt and merge_lps")
|
||||||
|
|
||||||
|
// For add_lt
|
||||||
|
flag.StringVar(&slug, "slug", "", "Slug as it would be on gronkh.de")
|
||||||
|
flag.StringVar(&name, "name", "", "Name as it would be on gronkh.de")
|
||||||
|
flag.StringVar(&aslug, "author", "", "Author slug")
|
||||||
|
flag.StringVar(&youtubeid, "youtube", "", "YouTube ID of the video")
|
||||||
|
flag.StringVar(&poster, "poster", "", "Poster URL that should be used")
|
||||||
|
}
|
||||||
|
|
||||||
|
func DoCli() {
|
||||||
|
flag.Parse()
|
||||||
|
|
||||||
|
if mode != "" {
|
||||||
|
if mode == "add_lt" {
|
||||||
|
if (slug == "" || name == "" || aslug == "" || youtubeid == "" || poster == "") {
|
||||||
|
log.Fatalf("slug, name, author, youtube, poster must be specified")
|
||||||
|
}
|
||||||
|
ParseCliLT()
|
||||||
|
} else if mode == "merge_lps" {
|
||||||
|
|
||||||
|
}
|
||||||
|
os.Exit(0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func ParseCliLT() {
|
||||||
|
var err error
|
||||||
|
var LT database.LetsTest
|
||||||
|
LT.Slug.String = slug
|
||||||
|
LT.Name.String = name
|
||||||
|
LT.PosterS.String, LT.PosterB.String, err = image.ResizeCover(poster)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("WAR LT %s: Error resizing cover: %+v", slug, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
var AT database.Author
|
||||||
|
database.Db.Where("slug = ?", aslug).First(&AT)
|
||||||
|
LT.AuthorID = AT.ID
|
||||||
|
|
||||||
|
LT.Youtube.String = youtubeid
|
||||||
|
ytres, err := youtube.GetVideos([]string {"snippet", "statistics", "status", "contentDetails"}, []string {LT.Youtube.String}, config.C.YoutubeKey)
|
||||||
|
if err != nil || len(ytres.Items) == 0 || ytres.Items[0].Status.UploadStatus != "processed" {
|
||||||
|
log.Printf("ERR LT %s: Video %s is private (%+v)", slug, LT.Youtube.String, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
LT.Descr.String = ytres.Items[0].Snippet.Description
|
||||||
|
|
||||||
|
if thumb, ok := ytres.Items[0].Snippet.Thumbnails["maxres"]; ok {
|
||||||
|
LT.ThumbS.String, LT.ThumbB.String, err = image.ResizeThumb(thumb.Url)
|
||||||
|
} else if thumb, ok := ytres.Items[0].Snippet.Thumbnails["high"]; ok {
|
||||||
|
LT.ThumbS.String, LT.ThumbB.String, err = image.ResizeThumb(thumb.Url)
|
||||||
|
}
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("WAR LT %s: Error resizing thumbnail: %+v", slug, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
LT.Aired, err = time.Parse(time.RFC3339Nano, ytres.Items[0].Snippet.PublishedAt)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("ERR LT %s: Failed to parse aired", slug)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
dur, err := duration.FromString(ytres.Items[0].ContentDetails.Duration)
|
||||||
|
if err == nil {
|
||||||
|
LT.Duration.Int64 = int64(dur.ToDuration().Seconds())
|
||||||
|
} else {
|
||||||
|
log.Printf("ERR LT %s: Failed to parse duration", slug)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
LT.Rating.Float64, LT.Votes.Int64 = youtube.GetRatingAndVotesWithRes(ytres)
|
||||||
|
|
||||||
|
if err := database.Db.Create(<).Error; err != nil {
|
||||||
|
log.Printf("ERR LT %s: Could not be added to databse (%+v)", slug, err)
|
||||||
|
}
|
||||||
|
}
|
|
@ -35,6 +35,9 @@ func main() {
|
||||||
|
|
||||||
err = database.InitDb(config.C.DatabaseConnection)
|
err = database.InitDb(config.C.DatabaseConnection)
|
||||||
|
|
||||||
|
InitCli()
|
||||||
|
DoCli()
|
||||||
|
|
||||||
ParseAll()
|
ParseAll()
|
||||||
|
|
||||||
StartCron()
|
StartCron()
|
||||||
|
|
Loading…
Reference in a new issue