Adding way to merge LPs
This commit is contained in:
parent
a1e2b5e683
commit
bc76465c82
|
@ -43,6 +43,9 @@ type LetsPlay struct {
|
||||||
PosterB sql.NullString
|
PosterB sql.NullString
|
||||||
Aired time.Time `sql:"default:null"`
|
Aired time.Time `sql:"default:null"`
|
||||||
|
|
||||||
|
MergeID sql.NullInt64
|
||||||
|
MergeSeason sql.NullInt64
|
||||||
|
|
||||||
Episodes []Episode
|
Episodes []Episode
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -79,7 +82,6 @@ type Episode struct {
|
||||||
|
|
||||||
Slug sql.NullString `sql:"not null;unique_index"`
|
Slug sql.NullString `sql:"not null;unique_index"`
|
||||||
Name sql.NullString `sql:"not null"`
|
Name sql.NullString `sql:"not null"`
|
||||||
Season sql.NullInt64 `sql:"not null"`
|
|
||||||
Episode sql.NullInt64 `sql:"not null"`
|
Episode sql.NullInt64 `sql:"not null"`
|
||||||
ThumbS sql.NullString
|
ThumbS sql.NullString
|
||||||
ThumbB sql.NullString
|
ThumbB sql.NullString
|
||||||
|
@ -89,6 +91,7 @@ type Episode struct {
|
||||||
Rating sql.NullFloat64
|
Rating sql.NullFloat64
|
||||||
Votes sql.NullInt64
|
Votes sql.NullInt64
|
||||||
Duration sql.NullInt64
|
Duration sql.NullInt64
|
||||||
|
Season sql.NullInt64 `sql:"not null;default:1"`
|
||||||
}
|
}
|
||||||
|
|
||||||
var Db gorm.DB
|
var Db gorm.DB
|
||||||
|
@ -102,6 +105,11 @@ func InitDb(connection string) (error) {
|
||||||
}
|
}
|
||||||
Db.LogMode(false)
|
Db.LogMode(false)
|
||||||
|
|
||||||
|
Db.Model(&LetsPlay{}).AddForeignKey("author_id", "authors(id)", "RESTRICT", "RESTRICT")
|
||||||
|
Db.Model(&LetsTest{}).AddForeignKey("author_id", "authors(id)", "RESTRICT", "RESTRICT")
|
||||||
|
Db.Model(&Episode{}).AddForeignKey("author_id", "authors(id)", "RESTRICT", "RESTRICT")
|
||||||
|
Db.Model(&Episode{}).AddForeignKey("lets_play_id", "lets_plays(id)", "RESTRICT", "RESTRICT")
|
||||||
|
|
||||||
Db.AutoMigrate(&Author{}, &LetsPlay{}, &LetsTest{}, &Episode{})
|
Db.AutoMigrate(&Author{}, &LetsPlay{}, &LetsTest{}, &Episode{})
|
||||||
|
|
||||||
return err
|
return err
|
||||||
|
@ -168,6 +176,16 @@ func (l *LetsPlay) BeforeSave() (err error) {
|
||||||
} else {
|
} else {
|
||||||
l.PosterB.Valid = true
|
l.PosterB.Valid = true
|
||||||
}
|
}
|
||||||
|
if l.MergeID.Int64 == 0 {
|
||||||
|
l.MergeID.Valid = false
|
||||||
|
} else {
|
||||||
|
l.MergeID.Valid = true
|
||||||
|
}
|
||||||
|
if l.MergeSeason.Int64 == 0 {
|
||||||
|
l.MergeSeason.Valid = false
|
||||||
|
} else {
|
||||||
|
l.MergeSeason.Valid = true
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,10 @@ var aslug string
|
||||||
var youtubeid string
|
var youtubeid string
|
||||||
var poster string
|
var poster string
|
||||||
|
|
||||||
|
var newslug string
|
||||||
|
var oldslug string
|
||||||
|
var newseason int64
|
||||||
|
|
||||||
func InitCli() {
|
func InitCli() {
|
||||||
flag.StringVar(&mode, "mode", "", "Specifies the action to be done. Can be add_lt and merge_lps")
|
flag.StringVar(&mode, "mode", "", "Specifies the action to be done. Can be add_lt and merge_lps")
|
||||||
|
|
||||||
|
@ -31,6 +35,11 @@ func InitCli() {
|
||||||
flag.StringVar(&aslug, "author", "", "Author slug")
|
flag.StringVar(&aslug, "author", "", "Author slug")
|
||||||
flag.StringVar(&youtubeid, "youtube", "", "YouTube ID of the video")
|
flag.StringVar(&youtubeid, "youtube", "", "YouTube ID of the video")
|
||||||
flag.StringVar(&poster, "poster", "", "Poster URL that should be used")
|
flag.StringVar(&poster, "poster", "", "Poster URL that should be used")
|
||||||
|
|
||||||
|
// For merge_lps
|
||||||
|
flag.StringVar(&newslug, "newslug", "", "Slug of the final LP")
|
||||||
|
flag.StringVar(&oldslug, "oldslug", "", "Current slug of LP to be merged")
|
||||||
|
flag.Int64Var(&newseason, "newseason", 0, "Season the episodes of the old LP will become")
|
||||||
}
|
}
|
||||||
|
|
||||||
func DoCli() {
|
func DoCli() {
|
||||||
|
@ -43,7 +52,10 @@ func DoCli() {
|
||||||
}
|
}
|
||||||
ParseCliLT()
|
ParseCliLT()
|
||||||
} else if mode == "merge_lps" {
|
} else if mode == "merge_lps" {
|
||||||
|
if (oldslug == "" || newslug == "" || newseason == 0) {
|
||||||
|
log.Fatalf("oldslug, newslug, newseason must be specified")
|
||||||
|
}
|
||||||
|
MergeLPs()
|
||||||
}
|
}
|
||||||
os.Exit(0)
|
os.Exit(0)
|
||||||
}
|
}
|
||||||
|
@ -101,3 +113,18 @@ func ParseCliLT() {
|
||||||
log.Printf("ERR LT %s: Could not be added to databse (%+v)", slug, err)
|
log.Printf("ERR LT %s: Could not be added to databse (%+v)", slug, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func MergeLPs() {
|
||||||
|
var OldLP database.LetsPlay
|
||||||
|
var NewLP database.LetsPlay
|
||||||
|
database.Db.Where("slug = ?", oldslug).First(&OldLP)
|
||||||
|
database.Db.Where("slug = ?", newslug).First(&NewLP)
|
||||||
|
|
||||||
|
database.Db.Exec("UPDATE episodes SET season=? WHERE lets_play_id = ?", newseason, OldLP.ID)
|
||||||
|
database.Db.Exec("UPDATE episodes SET lets_play_id=? WHERE lets_play_id = ?", NewLP.ID, OldLP.ID)
|
||||||
|
|
||||||
|
OldLP.MergeID.Int64 = int64(NewLP.ID)
|
||||||
|
OldLP.MergeSeason.Int64 = newseason
|
||||||
|
|
||||||
|
database.Db.Save(&OldLP)
|
||||||
|
}
|
|
@ -69,7 +69,13 @@ func ParseEpisode(i int, s *goquery.Selection) {
|
||||||
ur, _ = url.Parse(u)
|
ur, _ = url.Parse(u)
|
||||||
var LP database.LetsPlay
|
var LP database.LetsPlay
|
||||||
database.Db.Where("slug = ?", path.Base(ur.Path)).First(&LP)
|
database.Db.Where("slug = ?", path.Base(ur.Path)).First(&LP)
|
||||||
|
if LP.MergeID.Valid == false {
|
||||||
EP.LetsPlayID = LP.ID
|
EP.LetsPlayID = LP.ID
|
||||||
|
EP.Season.Int64 = 1
|
||||||
|
} else {
|
||||||
|
EP.LetsPlayID = uint(LP.MergeID.Int64)
|
||||||
|
EP.Season.Int64 = LP.MergeSeason.Int64
|
||||||
|
}
|
||||||
res, err := GetHTTPResource(gu)
|
res, err := GetHTTPResource(gu)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("ERR EP %s: Request failed (%+v)", slug, err)
|
log.Printf("ERR EP %s: Request failed (%+v)", slug, err)
|
||||||
|
|
|
@ -83,7 +83,13 @@ func ParseFeedEpisode(u string) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if LP.MergeID.Valid == false {
|
||||||
EP.LetsPlayID = LP.ID
|
EP.LetsPlayID = LP.ID
|
||||||
|
EP.Season.Int64 = 1
|
||||||
|
} else {
|
||||||
|
EP.LetsPlayID = uint(LP.MergeID.Int64)
|
||||||
|
EP.Season.Int64 = LP.MergeSeason.Int64
|
||||||
|
}
|
||||||
res, err := GetHTTPResource(u)
|
res, err := GetHTTPResource(u)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("ERR RS %s: Request failed (%+v)", slug, err)
|
log.Printf("ERR RS %s: Request failed (%+v)", slug, err)
|
||||||
|
@ -106,7 +112,6 @@ func ParseFeedEpisode(u string) {
|
||||||
log.Printf("WAR RSS %s: Name does not match RegEx", slug)
|
log.Printf("WAR RSS %s: Name does not match RegEx", slug)
|
||||||
EP.Episode.Int64 = 0
|
EP.Episode.Int64 = 0
|
||||||
}
|
}
|
||||||
EP.Season.Int64 = 1
|
|
||||||
doc.Find(".article > p").Each(func(i int, s *goquery.Selection) {
|
doc.Find(".article > p").Each(func(i int, s *goquery.Selection) {
|
||||||
EP.Descr.String += s.Text() + "\n"
|
EP.Descr.String += s.Text() + "\n"
|
||||||
})
|
})
|
||||||
|
|
|
@ -70,6 +70,12 @@ func PostAdminLetsPlay(c *gin.Context) {
|
||||||
if id, err := strconv.ParseUint(c.PostForm("authorid"), 10, 0); err == nil {
|
if id, err := strconv.ParseUint(c.PostForm("authorid"), 10, 0); err == nil {
|
||||||
LP.AuthorID = uint(id)
|
LP.AuthorID = uint(id)
|
||||||
}
|
}
|
||||||
|
if mergeid, err := strconv.ParseUint(c.PostForm("mergeid"), 10, 0); err == nil {
|
||||||
|
LP.MergeID.Int64 = int64(mergeid)
|
||||||
|
}
|
||||||
|
if mergeseason, err := strconv.ParseUint(c.PostForm("mergeseason"), 10, 0); err == nil {
|
||||||
|
LP.MergeSeason.Int64 = int64(mergeseason)
|
||||||
|
}
|
||||||
LP.Slug.String = c.PostForm("slug")
|
LP.Slug.String = c.PostForm("slug")
|
||||||
LP.Name.String = c.PostForm("name")
|
LP.Name.String = c.PostForm("name")
|
||||||
if c.PostForm("posters") == "" && !strings.HasPrefix(c.PostForm("posterb"), "/") {
|
if c.PostForm("posters") == "" && !strings.HasPrefix(c.PostForm("posterb"), "/") {
|
||||||
|
|
|
@ -9,6 +9,12 @@
|
||||||
<label>
|
<label>
|
||||||
AuthorID <input type="text" name="authorid" value="{{ .LP.AuthorID }}">
|
AuthorID <input type="text" name="authorid" value="{{ .LP.AuthorID }}">
|
||||||
</label>
|
</label>
|
||||||
|
<label>
|
||||||
|
MergeID <input type="text" name="mergeid" value="{{ .LP.MergeID.Int64 }}">
|
||||||
|
</label>
|
||||||
|
<label>
|
||||||
|
MergeSeason <input type="text" name="mergeseason" value="{{ .LP.MergeSeason.Int64 }}">
|
||||||
|
</label>
|
||||||
<label>
|
<label>
|
||||||
Slug <input type="text" name="slug" value="{{ .LP.Slug.String }}">
|
Slug <input type="text" name="slug" value="{{ .LP.Slug.String }}">
|
||||||
</label>
|
</label>
|
||||||
|
|
|
@ -31,7 +31,7 @@ func GetIndex(c *gin.Context) {
|
||||||
|
|
||||||
func GetLps(c *gin.Context) {
|
func GetLps(c *gin.Context) {
|
||||||
var LPs []database.LetsPlay
|
var LPs []database.LetsPlay
|
||||||
database.Db.Where("aired IS NOT NULL").Order("name asc").Find(&LPs)
|
database.Db.Where("aired IS NOT NULL and merge_id IS NULL").Order("name asc").Find(&LPs)
|
||||||
var data []gin.H
|
var data []gin.H
|
||||||
for _, LP := range LPs {
|
for _, LP := range LPs {
|
||||||
var AT database.Author
|
var AT database.Author
|
||||||
|
@ -235,7 +235,7 @@ func GetLEpisode(c *gin.Context) {
|
||||||
//No EP in URL
|
//No EP in URL
|
||||||
var EPs []database.Episode
|
var EPs []database.Episode
|
||||||
var AT database.Author
|
var AT database.Author
|
||||||
database.Db.Model(&LP).Order("episode asc").Related(&EPs)
|
database.Db.Model(&LP).Order("season asc").Order("episode asc").Related(&EPs)
|
||||||
database.Db.Model(&LP).Related(&AT)
|
database.Db.Model(&LP).Related(&AT)
|
||||||
var DEP []gin.H
|
var DEP []gin.H
|
||||||
for _, EP := range EPs {
|
for _, EP := range EPs {
|
||||||
|
|
Loading…
Reference in a new issue