ytdl-web/app/models/video.go

35 lines
738 B
Go
Raw Normal View History

2023-08-14 18:14:08 -04:00
package models
import (
"github.com/samber/lo"
2023-05-23 18:44:05 -04:00
"go.fifitido.net/ytdl-web/ytdl/metadata"
)
type Video struct {
2023-05-23 18:44:05 -04:00
Meta *metadata.Metadata
Formats []metadata.Format
}
2023-08-14 18:14:08 -04:00
func GetVideosFromMetadata(meta *metadata.Metadata) []Video {
2023-05-23 19:35:52 -04:00
if meta.IsPlaylist() {
2023-05-23 18:44:05 -04:00
return lo.Map(meta.Entries, func(video metadata.Metadata, _ int) Video {
2023-08-14 18:14:08 -04:00
return GetVideosFromMetadata(&video)[0]
})
}
2023-05-23 18:44:05 -04:00
formats := lo.Filter(meta.Formats, func(item metadata.Format, _ int) bool {
return item.ACodec != "none" && item.VCodec != "none" && item.Protocol != "m3u8_native"
})
for i, j := 0, len(formats)-1; i < j; i, j = i+1, j-1 {
formats[i], formats[j] = formats[j], formats[i]
}
return []Video{
{
Meta: meta,
Formats: formats,
},
}
}