subsyt/internal/metadata/art.go
Viktor Varland 09134c46c4
Some checks are pending
build / build (push) Waiting to run
refactor: split logic into distinct parts
2025-10-01 21:21:59 +02:00

86 lines
1.8 KiB
Go

package metadata
import (
"log"
"os"
"path/filepath"
"strings"
"git.meatbag.se/varl/subsyt/internal/dl"
"git.meatbag.se/varl/subsyt/internal/model"
)
func NormalizeEpisodeThumbnail(name string) string {
lower := strings.ToLower(name)
if strings.Contains(lower, "-thumb") {
return name
}
ext := filepath.Ext(name)
switch strings.ToLower(ext) {
case ".jpg", ".jpeg":
base := strings.TrimSuffix(name, ext)
return base + "-thumb" + ext
}
return name
}
func EnsureBanner(show model.Show, destDir string, dryRun bool) {
bannerPath := filepath.Join(destDir, "banner.jpg")
if _, err := os.Stat(bannerPath); err == nil {
log.Printf("%s has a banner, skipping download\n", show.Title)
return
}
if dryRun {
log.Printf("[dry-run] would download banner for %s\n", show.Title)
return
}
for index, thumb := range show.Thumbnails {
log.Println(index, thumb)
if thumb.Id == "banner_uncropped" {
log.Println("found banner candidate")
dl.Fetch(dl.Download{
Url: thumb.Url,
OutDir: destDir,
Name: "banner.jpg",
})
return
}
}
}
func EnsureFanart(show model.Show, destDir string, dryRun bool) {
fanartPath := filepath.Join(destDir, "fanart.jpg")
if _, err := os.Stat(fanartPath); err == nil {
log.Printf("%s has fanart, skipping download\n", show.Title)
return
}
if dryRun {
log.Printf("[dry-run] would download fanart for %s\n", show.Title)
return
}
c := model.Thumbnail{}
for index, thumb := range show.Thumbnails {
log.Println(index, thumb)
if thumb.Width > c.Width {
log.Println("found fanart candidate", thumb)
c = thumb
}
}
if c.Url == "" {
log.Printf("no fanart candidate for %s\n", show.Title)
return
}
dl.Fetch(dl.Download{
Url: c.Url,
OutDir: destDir,
Name: "fanart.jpg",
})
}