hugo-medialog/internal/movies/controller.go

64 lines
1.4 KiB
Go
Raw Normal View History

2024-10-09 09:12:44 +00:00
// internal/movies/controller.go
package movies
import (
"fmt"
"hugo-medialog/utils"
"os"
"path/filepath"
"gopkg.in/yaml.v3"
)
func LoadMovies() ([]Movie, error) {
moviesFile := os.Getenv("OBSIDIAN_MOVIES_FILE")
fileData, err := os.ReadFile(moviesFile)
if err != nil {
return nil, err
}
var movies []Movie
err = yaml.Unmarshal(fileData, &movies)
if err != nil {
return nil, err
}
return movies, nil
}
func ProcessMovies(movies []Movie) error {
for _, movie := range movies {
fmt.Printf("Título: %s, Puntuación: %.1f, Fecha: %s\n",
movie.Title, movie.Rate, movie.Date)
// API Calls
err := generateMovieMarkdown(movie)
if err != nil {
return err
}
}
return nil
}
func generateMovieMarkdown(movie Movie) error {
templatePath := filepath.Join(os.Getenv("TEMPLATES_DIR"), "movie.md.tpl")
outputDir := os.Getenv("MARKDOWN_OUTPUT_DIR")
if err := utils.CreateDirIfNotExists(outputDir); err != nil {
return err
}
outputPath := filepath.Join(outputDir, fmt.Sprintf("%s.md", movie.Title))
data := map[string]interface{}{
"Title": movie.Title,
"Link": "https://imdb.com/enlace",
"Subtitle": movie.Year,
"Year": movie.Year,
"Rate": movie.Rate,
"Image": movie.Image,
"Poster": movie.Poster,
"Background": movie.Background,
"Date": movie.Date,
}
return utils.GenerateMarkdown(templatePath, outputPath, data)
}