86 lines
1.8 KiB
Go
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",
|
|
})
|
|
}
|