on-demand transcoding with concurrency limit

This commit is contained in:
Carl Pearson
2024-10-18 15:21:33 -06:00
parent da720508b1
commit 459e899efe
9 changed files with 241 additions and 134 deletions

14
originals/init.go Normal file
View File

@@ -0,0 +1,14 @@
package originals
import "github.com/sirupsen/logrus"
var log *logrus.Logger
func Init(logger *logrus.Logger) error {
log = logger.WithFields(logrus.Fields{
"component": "originals",
}).Logger
return nil
}
func Fini() {}

View File

@@ -1,6 +1,11 @@
package originals
import "gorm.io/gorm"
import (
"ytdlp-site/database"
"ytdlp-site/transcodes"
"gorm.io/gorm"
)
type Status string
@@ -29,6 +34,29 @@ type Original struct {
PlaylistID uint // Playlist.ID (if part of a playlist)
}
func SetStatus(db *gorm.DB, id uint, status Status) error {
func SetStatus(id uint, status Status) error {
db := database.Get()
log.Debugln("original", id, "status -> ", status)
return db.Model(&Original{}).Where("id = ?", id).Update("status", status).Error
}
// if there is an active transcode for this original,
// set the status to transcode. otherwise ,to completed
func SetStatusTranscodingOrCompleted(id uint) error {
db := database.Get()
var count int64
err := db.Model(&transcodes.Transcode{}).Where("original_id = ?", id).Count(&count).Error
if err != nil {
return err
}
if count > 0 {
log.Debugln("found transcodes for original", id)
return SetStatus(id, StatusTranscoding)
} else {
log.Debugln("no transcodes for original", id)
return SetStatus(id, StatusCompleted)
}
}