subsyt/internal/metadata/art.go
Viktor Varland 6ff2d53c2d
Some checks are pending
build / build (push) Waiting to run
feat: use rss to fetch list of videos
This uses RSS to fetch a list of videos to avoid the vid being invisible
due to "restrictions", then downloads the videos one-by-one instead of
scraping and parsing the channel page using yt-dlp.

We lose metadata for the entire channel (show-level) so introducing a
hack to download just the metadata of a channel.
2025-09-08 22:30:57 +02:00

77 lines
1.7 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 episodeImage(path string) {
if strings.Contains(path, "-thumb") {
log.Printf("thumbnail detected '%s'\n", path)
return
}
thumb := strings.Replace(path, ".jpg", "-thumb.jpg", 1)
log.Printf("renaming thumbnail from '%s' to '%s'\n", path, thumb)
err := os.Rename(path, thumb)
if err != nil {
log.Printf("failed to rename '%s' to '%s\n'", path, thumb)
}
}
func showPoster(path string, show_dir string) {
poster := filepath.Join(show_dir, "poster.jpg")
log.Printf("renaming show image from '%s' to '%s'\n", path, poster)
err := os.Rename(path, poster)
if err != nil {
log.Printf("failed to rename '%s' to '%s\n'", path, poster)
}
}
func showBanner(show model.Show, showDir string) {
_, err := os.Stat(filepath.Join(showDir, "banner.jpg"))
if err == nil {
log.Printf("%s has a banner, skipping download\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: showDir,
Name: "banner.jpg",
})
}
}
}
func showFanart(show model.Show, showDir string) {
_, err := os.Stat(filepath.Join(showDir, "fanart.jpg"))
if err == nil {
log.Printf("%s has fanart, skipping download\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
}
}
dl.Fetch(dl.Download{
Url: c.Url,
OutDir: showDir,
Name: "fanart.jpg",
})
}