hugo-medialog/internal/peliculas/controller.go

65 lines
1.6 KiB
Go

// internal/peliculas/controller.go
package peliculas
import (
"fmt"
"hugo-medialog/utils"
"os"
"path/filepath"
"gopkg.in/yaml.v3"
)
func LoadPeliculas(obsidianPath string) ([]Pelicula, error) {
moviesFile := filepath.Join(obsidianPath, "pelis.yml.md")
fileData, err := os.ReadFile(moviesFile)
if err != nil {
return nil, err
}
var peliculas []Pelicula
err = yaml.Unmarshal(fileData, &peliculas)
if err != nil {
return nil, err
}
return peliculas, nil
}
func ProcessPeliculas(peliculas []Pelicula) error {
for _, pelicula := range peliculas {
fmt.Printf("Título: %s, Puntuación: %.1f, Fecha: %s\n",
pelicula.Title, pelicula.Rate, pelicula.Date)
// Aquí se pueden hacer las llamadas a APIs externas (IMDb, Fanart.tv)
// y generar el markdown en base a las plantillas.
err := generatePeliculaMarkdown(pelicula)
if err != nil {
return err
}
}
return nil
}
func generatePeliculaMarkdown(pelicula Pelicula) error {
templatePath := filepath.Join(os.Getenv("TEMPLATES_DIR"), "pelicula.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", pelicula.Title))
data := map[string]interface{}{
"Title": pelicula.Title,
"Link": "https://imdb.com/enlace", // Obtener el enlace de IMDb
"Subtitle": pelicula.Year,
"Year": pelicula.Year,
"Rate": pelicula.Rate,
"Image": pelicula.Image,
"Poster": pelicula.Poster,
"Background": pelicula.Background,
"Date": pelicula.Date,
}
return utils.GenerateMarkdown(templatePath, outputPath, data)
}