51 lines
1.3 KiB
Go
51 lines
1.3 KiB
Go
package anime
|
|
|
|
import (
|
|
"seanime/internal/util"
|
|
)
|
|
|
|
type (
|
|
// Playlist holds the data from models.PlaylistEntry
|
|
Playlist struct {
|
|
DbId uint `json:"dbId"` // DbId is the database ID of the models.PlaylistEntry
|
|
Name string `json:"name"` // Name is the name of the playlist
|
|
LocalFiles []*LocalFile `json:"localFiles"` // LocalFiles is a list of local files in the playlist, in order
|
|
}
|
|
)
|
|
|
|
// NewPlaylist creates a new Playlist instance
|
|
func NewPlaylist(name string) *Playlist {
|
|
return &Playlist{
|
|
Name: name,
|
|
LocalFiles: make([]*LocalFile, 0),
|
|
}
|
|
}
|
|
|
|
func (pd *Playlist) SetLocalFiles(lfs []*LocalFile) {
|
|
pd.LocalFiles = lfs
|
|
}
|
|
|
|
// AddLocalFile adds a local file to the playlist
|
|
func (pd *Playlist) AddLocalFile(localFile *LocalFile) {
|
|
pd.LocalFiles = append(pd.LocalFiles, localFile)
|
|
}
|
|
|
|
// RemoveLocalFile removes a local file from the playlist
|
|
func (pd *Playlist) RemoveLocalFile(path string) {
|
|
for i, lf := range pd.LocalFiles {
|
|
if lf.GetNormalizedPath() == util.NormalizePath(path) {
|
|
pd.LocalFiles = append(pd.LocalFiles[:i], pd.LocalFiles[i+1:]...)
|
|
return
|
|
}
|
|
}
|
|
}
|
|
|
|
func (pd *Playlist) LocalFileExists(path string, lfs []*LocalFile) bool {
|
|
for _, lf := range lfs {
|
|
if lf.GetNormalizedPath() == util.NormalizePath(path) {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|