65 lines
1.6 KiB
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)
|
||
|
}
|