Initial playlist delete
This commit is contained in:
98
handlers.go
98
handlers.go
@@ -706,7 +706,7 @@ func startPlaylist(id uint, url string, audioOnly bool) {
|
|||||||
original := Original{
|
original := Original{
|
||||||
Title: entry.Title,
|
Title: entry.Title,
|
||||||
URL: entry.URL,
|
URL: entry.URL,
|
||||||
Status: Pending,
|
Status: StatusNotStarted,
|
||||||
Video: !audioOnly,
|
Video: !audioOnly,
|
||||||
Audio: audioOnly,
|
Audio: audioOnly,
|
||||||
Playlist: true,
|
Playlist: true,
|
||||||
@@ -886,12 +886,12 @@ func videoRestartHandler(c echo.Context) error {
|
|||||||
return c.Redirect(http.StatusSeeOther, "/videos")
|
return c.Redirect(http.StatusSeeOther, "/videos")
|
||||||
}
|
}
|
||||||
|
|
||||||
func deleteTranscodes(originalID int) {
|
func deleteTranscodes(originalID uint) {
|
||||||
log.Debugln("Delete Transcode entries for Original", originalID)
|
log.Debugln("Delete Transcode entries for Original", originalID)
|
||||||
db.Delete(&Transcode{}, "original_id = ?", originalID)
|
db.Delete(&Transcode{}, "original_id = ?", originalID)
|
||||||
}
|
}
|
||||||
|
|
||||||
func deleteTranscodedVideos(originalID int) {
|
func deleteTranscodedVideos(originalID uint) {
|
||||||
var videos []media.Video
|
var videos []media.Video
|
||||||
db.Where("original_id = ?", originalID).Where("source = ?", "transcode").Find(&videos)
|
db.Where("original_id = ?", originalID).Where("source = ?", "transcode").Find(&videos)
|
||||||
for _, video := range videos {
|
for _, video := range videos {
|
||||||
@@ -905,7 +905,7 @@ func deleteTranscodedVideos(originalID int) {
|
|||||||
db.Delete(&media.Video{}, "original_id = ? AND source = ?", originalID, "transcode")
|
db.Delete(&media.Video{}, "original_id = ? AND source = ?", originalID, "transcode")
|
||||||
}
|
}
|
||||||
|
|
||||||
func deleteOriginalVideos(originalID int) {
|
func deleteOriginalVideos(originalID uint) {
|
||||||
var videos []media.Video
|
var videos []media.Video
|
||||||
db.Where("original_id = ?", originalID).Where("source = ?", "original").Find(&videos)
|
db.Where("original_id = ?", originalID).Where("source = ?", "original").Find(&videos)
|
||||||
for _, video := range videos {
|
for _, video := range videos {
|
||||||
@@ -919,7 +919,7 @@ func deleteOriginalVideos(originalID int) {
|
|||||||
db.Delete(&media.Video{}, "original_id = ? AND source = ?", originalID, "original")
|
db.Delete(&media.Video{}, "original_id = ? AND source = ?", originalID, "original")
|
||||||
}
|
}
|
||||||
|
|
||||||
func deleteAudiosWithSource(originalID int, source string) {
|
func deleteAudiosWithSource(originalID uint, source string) {
|
||||||
var audios []media.Audio
|
var audios []media.Audio
|
||||||
db.Where("original_id = ?", originalID).Where("source = ?", source).Find(&audios)
|
db.Where("original_id = ?", originalID).Where("source = ?", source).Find(&audios)
|
||||||
for _, audio := range audios {
|
for _, audio := range audios {
|
||||||
@@ -933,11 +933,10 @@ func deleteAudiosWithSource(originalID int, source string) {
|
|||||||
db.Delete(&media.Audio{}, "original_id = ? AND source = ?", originalID, source)
|
db.Delete(&media.Audio{}, "original_id = ? AND source = ?", originalID, source)
|
||||||
}
|
}
|
||||||
|
|
||||||
func deleteOriginalHandler(c echo.Context) error {
|
func deleteOriginal(id uint) error {
|
||||||
id, _ := strconv.Atoi(c.Param("id"))
|
|
||||||
var orig Original
|
var orig Original
|
||||||
if err := db.First(&orig, id).Error; err != nil {
|
if err := db.First(&orig, id).Error; err != nil {
|
||||||
return c.Redirect(http.StatusSeeOther, "/videos")
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
deleteTranscodes(id)
|
deleteTranscodes(id)
|
||||||
@@ -947,32 +946,50 @@ func deleteOriginalHandler(c echo.Context) error {
|
|||||||
deleteAudiosWithSource(id, "transcode")
|
deleteAudiosWithSource(id, "transcode")
|
||||||
|
|
||||||
db.Delete(&orig)
|
db.Delete(&orig)
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func deleteOriginalHandler(c echo.Context) error {
|
||||||
|
id, _ := strconv.ParseUint(c.Param("id"), 10, 64)
|
||||||
|
deleteOriginal(uint(id))
|
||||||
return c.Redirect(http.StatusSeeOther, "/videos")
|
return c.Redirect(http.StatusSeeOther, "/videos")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// delete Video entry and associated file
|
||||||
|
func deleteVideo(id int) error {
|
||||||
|
var video media.Video
|
||||||
|
result := db.First(&video, id)
|
||||||
|
if result.Error != nil {
|
||||||
|
log.Errorln("error retrieving video", id, result.Error)
|
||||||
|
return result.Error
|
||||||
|
}
|
||||||
|
|
||||||
|
videoPath := filepath.Join(getDataDir(), video.Filename)
|
||||||
|
log.Debugln("remove", videoPath)
|
||||||
|
err := os.Remove(videoPath)
|
||||||
|
if err != nil {
|
||||||
|
log.Errorln("coudn't remove", videoPath, err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := db.Delete(&media.Video{}, id).Error; err != nil {
|
||||||
|
log.Errorln("error deleting video record", id, err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func deleteVideoHandler(c echo.Context) error {
|
func deleteVideoHandler(c echo.Context) error {
|
||||||
id, _ := strconv.Atoi(c.Param("id"))
|
id, _ := strconv.Atoi(c.Param("id"))
|
||||||
referrer := c.Request().Referer()
|
referrer := c.Request().Referer()
|
||||||
if referrer == "" {
|
if referrer == "" {
|
||||||
referrer = "/"
|
referrer = "/"
|
||||||
}
|
}
|
||||||
|
err := deleteVideo(id)
|
||||||
var video media.Video
|
|
||||||
result := db.First(&video, id)
|
|
||||||
if result.Error != nil {
|
|
||||||
log.Errorln("error retrieving video", id, result.Error)
|
|
||||||
return c.Redirect(http.StatusSeeOther, referrer)
|
|
||||||
}
|
|
||||||
|
|
||||||
videoPath := filepath.Join(getDataDir(), video.Filename)
|
|
||||||
log.Debugln("remove", videoPath)
|
|
||||||
err := os.Remove(videoPath)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Errorln("coudn't remove", videoPath, err)
|
log.Errorln("delete video error", id, err)
|
||||||
}
|
|
||||||
|
|
||||||
if err := db.Delete(&media.Video{}, id).Error; err != nil {
|
|
||||||
log.Errorln("error deleting video record", id, err)
|
|
||||||
}
|
}
|
||||||
return c.Redirect(http.StatusSeeOther, referrer)
|
return c.Redirect(http.StatusSeeOther, referrer)
|
||||||
}
|
}
|
||||||
@@ -1068,11 +1085,11 @@ func tempHandler(c echo.Context) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func processHandler(c echo.Context) error {
|
func processHandler(c echo.Context) error {
|
||||||
id, _ := strconv.Atoi(c.Param("id")) // FIXME: strconv.ParseUint?
|
id, _ := strconv.ParseUint(c.Param("id"), 10, 64) // FIXME: strconv.ParseUint?
|
||||||
|
|
||||||
deleteTranscodes(id)
|
deleteTranscodes(uint(id))
|
||||||
deleteAudiosWithSource(id, "transcode")
|
deleteAudiosWithSource(uint(id), "transcode")
|
||||||
deleteTranscodedVideos(id)
|
deleteTranscodedVideos(uint(id))
|
||||||
|
|
||||||
err := SetOriginalStatus(uint(id), DownloadCompleted)
|
err := SetOriginalStatus(uint(id), DownloadCompleted)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -1105,6 +1122,31 @@ func playlistHandler(c echo.Context) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func deletePlaylistHandler(c echo.Context) error {
|
func deletePlaylistHandler(c echo.Context) error {
|
||||||
|
id := c.Param("id")
|
||||||
|
|
||||||
|
// delete all originals
|
||||||
|
var originals []Original
|
||||||
|
err := db.Model(&Original{}).
|
||||||
|
Where("playlist = ?", true).
|
||||||
|
Where("playlist_id = ?", id).
|
||||||
|
Find(&originals).Error
|
||||||
|
if err != nil {
|
||||||
|
log.Errorln(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, original := range originals {
|
||||||
|
err := deleteOriginal(original.ID)
|
||||||
|
if err != nil {
|
||||||
|
log.Errorln(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// delete playlist entry
|
||||||
|
err = db.Delete(&Playlist{}, id).Error
|
||||||
|
if err != nil {
|
||||||
|
log.Errorln(err)
|
||||||
|
}
|
||||||
|
|
||||||
referrer := c.Request().Referer()
|
referrer := c.Request().Referer()
|
||||||
if referrer == "" {
|
if referrer == "" {
|
||||||
referrer = "/videos"
|
referrer = "/videos"
|
||||||
|
@@ -14,6 +14,7 @@ import (
|
|||||||
type OriginalStatus string
|
type OriginalStatus string
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
StatusNotStarted OriginalStatus = "not started"
|
||||||
Pending OriginalStatus = "pending"
|
Pending OriginalStatus = "pending"
|
||||||
Metadata OriginalStatus = "metadata"
|
Metadata OriginalStatus = "metadata"
|
||||||
Downloading OriginalStatus = "downloading"
|
Downloading OriginalStatus = "downloading"
|
||||||
|
Reference in New Issue
Block a user