Move Video to media package
This commit is contained in:
23
handlers.go
23
handlers.go
@@ -11,6 +11,7 @@ import (
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
"ytdlp-site/media"
|
||||
|
||||
"github.com/labstack/echo/v4"
|
||||
"golang.org/x/crypto/bcrypt"
|
||||
@@ -493,7 +494,7 @@ func processOriginal(originalID uint) {
|
||||
// check if there is an original video
|
||||
hasOriginalVideo := true
|
||||
hasOriginalAudio := true
|
||||
var video Video
|
||||
var video media.Video
|
||||
var audio Audio
|
||||
err := db.Where("source = ?", "original").Where("original_id = ?", originalID).First(&video).Error
|
||||
if err == gorm.ErrRecordNotFound {
|
||||
@@ -625,7 +626,7 @@ func startDownload(originalID uint, videoURL string, audioOnly bool) {
|
||||
return
|
||||
}
|
||||
|
||||
video := Video{
|
||||
video := media.Video{
|
||||
OriginalID: originalID,
|
||||
Filename: dlFilename,
|
||||
Source: "original",
|
||||
@@ -725,7 +726,7 @@ func videoHandler(c echo.Context) error {
|
||||
return c.Redirect(http.StatusSeeOther, "/videos")
|
||||
}
|
||||
|
||||
var videos []Video
|
||||
var videos []media.Video
|
||||
db.Where("original_id = ?", id).
|
||||
Order("CASE WHEN source = 'original' THEN 0 ELSE 1 END, height ASC").
|
||||
Find(&videos)
|
||||
@@ -814,7 +815,7 @@ func deleteTranscodes(originalID int) {
|
||||
}
|
||||
|
||||
func deleteTranscodedVideos(originalID int) {
|
||||
var videos []Video
|
||||
var videos []media.Video
|
||||
db.Where("original_id = ?", originalID).Where("source = ?", "transcode").Find(&videos)
|
||||
for _, video := range videos {
|
||||
path := filepath.Join(getDataDir(), video.Filename)
|
||||
@@ -824,11 +825,11 @@ func deleteTranscodedVideos(originalID int) {
|
||||
log.Errorln("error removing", path, err)
|
||||
}
|
||||
}
|
||||
db.Delete(&Video{}, "original_id = ? AND source = ?", originalID, "transcode")
|
||||
db.Delete(&media.Video{}, "original_id = ? AND source = ?", originalID, "transcode")
|
||||
}
|
||||
|
||||
func deleteOriginalVideos(originalID int) {
|
||||
var videos []Video
|
||||
var videos []media.Video
|
||||
db.Where("original_id = ?", originalID).Where("source = ?", "original").Find(&videos)
|
||||
for _, video := range videos {
|
||||
path := filepath.Join(getDataDir(), video.Filename)
|
||||
@@ -838,7 +839,7 @@ func deleteOriginalVideos(originalID int) {
|
||||
fmt.Println("error removing", path, err)
|
||||
}
|
||||
}
|
||||
db.Delete(&Video{}, "original_id = ? AND source = ?", originalID, "original")
|
||||
db.Delete(&media.Video{}, "original_id = ? AND source = ?", originalID, "original")
|
||||
}
|
||||
|
||||
func deleteAudiosWithSource(originalID int, source string) {
|
||||
@@ -879,7 +880,7 @@ func deleteVideoHandler(c echo.Context) error {
|
||||
referrer = "/"
|
||||
}
|
||||
|
||||
var video Video
|
||||
var video media.Video
|
||||
result := db.First(&video, id)
|
||||
if result.Error != nil {
|
||||
log.Errorln("error retrieving video", id, result.Error)
|
||||
@@ -893,7 +894,7 @@ func deleteVideoHandler(c echo.Context) error {
|
||||
log.Errorln("coudn't remove", videoPath, err)
|
||||
}
|
||||
|
||||
if err := db.Delete(&Video{}, id).Error; err != nil {
|
||||
if err := db.Delete(&media.Video{}, id).Error; err != nil {
|
||||
log.Errorln("error deleting video record", id, err)
|
||||
}
|
||||
return c.Redirect(http.StatusSeeOther, referrer)
|
||||
@@ -934,7 +935,7 @@ func transcodeToVideoHandler(c echo.Context) error {
|
||||
referrer = "/"
|
||||
}
|
||||
|
||||
var video Video
|
||||
var video media.Video
|
||||
err := db.Where("source = ?", "original").Where("original_id = ?", originalId).First(&video).Error
|
||||
if err == gorm.ErrRecordNotFound {
|
||||
log.Errorf("no video record for original %d: %v", originalId, err)
|
||||
@@ -956,7 +957,7 @@ func transcodeToAudioHandler(c echo.Context) error {
|
||||
// check if there is an original video
|
||||
hasOriginalVideo := true
|
||||
hasOriginalAudio := true
|
||||
var video Video
|
||||
var video media.Video
|
||||
var audio Audio
|
||||
err := db.Where("source = ?", "original").Where("original_id = ?", originalId).First(&video).Error
|
||||
if err == gorm.ErrRecordNotFound {
|
||||
|
3
main.go
3
main.go
@@ -8,6 +8,7 @@ import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"time"
|
||||
"ytdlp-site/media"
|
||||
|
||||
"github.com/gorilla/sessions"
|
||||
"github.com/labstack/echo/v4"
|
||||
@@ -79,7 +80,7 @@ func main() {
|
||||
sqlDB.SetMaxOpenConns(1)
|
||||
|
||||
// Migrate the schema
|
||||
db.AutoMigrate(&Original{}, &Video{}, &Audio{}, &User{}, &TempURL{}, &Transcode{})
|
||||
db.AutoMigrate(&Original{}, &media.Video{}, &Audio{}, &User{}, &TempURL{}, &Transcode{})
|
||||
go PeriodicCleanup()
|
||||
|
||||
// create a user
|
||||
|
23
media/media.go
Normal file
23
media/media.go
Normal file
@@ -0,0 +1,23 @@
|
||||
package media
|
||||
|
||||
import "gorm.io/gorm"
|
||||
|
||||
type Status string
|
||||
|
||||
const (
|
||||
Transcoding Status = "transcoding"
|
||||
)
|
||||
|
||||
type Video struct {
|
||||
gorm.Model
|
||||
OriginalID uint // Original.ID
|
||||
Source string // "original", "transcode"
|
||||
Filename string
|
||||
Width uint
|
||||
Height uint
|
||||
FPS float64
|
||||
Length float64
|
||||
Size int64
|
||||
Type string
|
||||
Codec string
|
||||
}
|
14
models.go
14
models.go
@@ -34,20 +34,6 @@ type Original struct {
|
||||
Video bool // audio download requested
|
||||
}
|
||||
|
||||
type Video struct {
|
||||
gorm.Model
|
||||
OriginalID uint // Original.ID
|
||||
Source string // "original", "transcode"
|
||||
Filename string
|
||||
Width uint
|
||||
Height uint
|
||||
FPS float64
|
||||
Length float64
|
||||
Size int64
|
||||
Type string
|
||||
Codec string
|
||||
}
|
||||
|
||||
type Transcode struct {
|
||||
gorm.Model
|
||||
Status string // "pending", "running", "failed"
|
||||
|
@@ -8,6 +8,7 @@ import (
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"time"
|
||||
"ytdlp-site/media"
|
||||
|
||||
"github.com/google/uuid"
|
||||
"gorm.io/gorm"
|
||||
@@ -70,7 +71,7 @@ func videoToVideo(transID uint, height uint, srcFilepath string) {
|
||||
db.First(&orig, "id = ?", trans.OriginalID)
|
||||
|
||||
// create video record
|
||||
video := Video{OriginalID: orig.ID, Source: "transcode", Filename: dstFilename}
|
||||
video := media.Video{OriginalID: orig.ID, Source: "transcode", Filename: dstFilename}
|
||||
|
||||
fileSize, err := getSize(dstFilepath)
|
||||
if err == nil {
|
||||
@@ -262,7 +263,7 @@ func transcodePending() {
|
||||
|
||||
if trans.SrcKind == "video" {
|
||||
|
||||
var srcVideo Video
|
||||
var srcVideo media.Video
|
||||
err = db.First(&srcVideo, "id = ?", trans.SrcID).Error
|
||||
if err != nil {
|
||||
fmt.Println("no such source video for video Transcode", trans)
|
||||
|
Reference in New Issue
Block a user