From 16b7e40a6ab10ae81d46fa10575fdcdea970516e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=CC=81scar=20M=2E=20Lage?= Date: Wed, 9 Oct 2024 11:12:44 +0200 Subject: [PATCH] Refactor --- env.sample | 10 ++- internal/books/controller.go | 2 + internal/{libros => books}/model.go | 7 +- internal/games/controller.go | 2 + internal/{videojuegos => games}/model.go | 7 +- internal/libros/controller.go | 0 internal/movies/controller.go | 63 ++++++++++++++++++ internal/{musica => movies}/model.go | 7 +- .../{peliculas => movies}/services/fanart.go | 0 internal/music/controller.go | 2 + internal/{peliculas => music}/model.go | 7 +- internal/musica/controller.go | 0 internal/peliculas/controller.go | 64 ------------------- internal/series/controller.go | 2 + internal/series/model.go | 1 + internal/videojuegos/controller.go | 0 main.go | 17 ++--- obsidian/{libros.yml.md => books.yml.md} | 0 obsidian/{videojuegos.yml.md => games.yml.md} | 0 obsidian/{pelis.yml.md => movies.yml.md} | 0 obsidian/{musica.yml.md => music.yml.md} | 0 templates/{libro.md.tpl => book.md.tpl} | 0 templates/{videojuego.md.tpl => game.md.tpl} | 0 templates/{musica.md.tpl => movie.md.tpl} | 0 templates/{pelicula.md.tpl => music.md.tpl} | 0 utils/config.go | 1 + 26 files changed, 103 insertions(+), 89 deletions(-) create mode 100644 internal/books/controller.go rename internal/{libros => books}/model.go (83%) create mode 100644 internal/games/controller.go rename internal/{videojuegos => games}/model.go (83%) delete mode 100644 internal/libros/controller.go create mode 100644 internal/movies/controller.go rename internal/{musica => movies}/model.go (81%) rename internal/{peliculas => movies}/services/fanart.go (100%) create mode 100644 internal/music/controller.go rename internal/{peliculas => music}/model.go (81%) delete mode 100644 internal/musica/controller.go delete mode 100644 internal/peliculas/controller.go delete mode 100644 internal/videojuegos/controller.go rename obsidian/{libros.yml.md => books.yml.md} (100%) rename obsidian/{videojuegos.yml.md => games.yml.md} (100%) rename obsidian/{pelis.yml.md => movies.yml.md} (100%) rename obsidian/{musica.yml.md => music.yml.md} (100%) rename templates/{libro.md.tpl => book.md.tpl} (100%) rename templates/{videojuego.md.tpl => game.md.tpl} (100%) rename templates/{musica.md.tpl => movie.md.tpl} (100%) rename templates/{pelicula.md.tpl => music.md.tpl} (100%) diff --git a/env.sample b/env.sample index 3dbe54b..50d6a5b 100644 --- a/env.sample +++ b/env.sample @@ -5,10 +5,14 @@ ISBNDB_API_KEY=your_isbndb_api_key FANART_API_KEY=your_fanart_api_key SPOTIFY_API_KEY=your_spotify_api_key -# Ruta a los archivos de Obsidian -OBSIDIAN_YAML_PATH=/ruta/a/tu/vault/obsidian/ +# PATH to Obisdian files where the information is +OBSIDIAN_BOOKS_FILE=/path/to/your/obsidian/books.yml.md +OBSIDIAN_GAMES_FILE=/path/to/your/obsidian/games.yml.md +OBSIDIAN_MOVIES_FILE=/path/to/your/obsidian/movies.yml.md +OBSIDIAN_MUSIC_FILE=/path/to/your/obsidian/music.yml.md +OBSIDIAN_SERIES_FILE=/path/to/your/obsidian/series.yml.md -# Directorios +# Other directories MARKDOWN_OUTPUT_DIR=output/markdown IMAGES_OUTPUT_DIR=output/images TEMPLATES_DIR=templates diff --git a/internal/books/controller.go b/internal/books/controller.go new file mode 100644 index 0000000..57dc335 --- /dev/null +++ b/internal/books/controller.go @@ -0,0 +1,2 @@ +// internal/books/controller.go + diff --git a/internal/libros/model.go b/internal/books/model.go similarity index 83% rename from internal/libros/model.go rename to internal/books/model.go index 2d3ef90..f311532 100644 --- a/internal/libros/model.go +++ b/internal/books/model.go @@ -1,6 +1,7 @@ -package libros +// internal/books/model.go +package books -type Libro struct { +type Book struct { Title string `yaml:"title"` Author string `yaml:"author"` Link string `yaml:"link"` @@ -14,4 +15,4 @@ type Libro struct { Tags []string } -type Libros []Libro +type Books []Book diff --git a/internal/games/controller.go b/internal/games/controller.go new file mode 100644 index 0000000..57f50b9 --- /dev/null +++ b/internal/games/controller.go @@ -0,0 +1,2 @@ +// internal/games/controller.go + diff --git a/internal/videojuegos/model.go b/internal/games/model.go similarity index 83% rename from internal/videojuegos/model.go rename to internal/games/model.go index 83ccfa0..7d16edd 100644 --- a/internal/videojuegos/model.go +++ b/internal/games/model.go @@ -1,6 +1,7 @@ -package videojuegos +// internal/games/model.go +package games -type Videojuego struct { +type Game struct { Title string `yaml:"title"` Link string `yaml:"link"` Subtitle string `yaml:"subtitle"` @@ -14,4 +15,4 @@ type Videojuego struct { Tags []string } -type Videojuegos []Videojuego +type Games []Game diff --git a/internal/libros/controller.go b/internal/libros/controller.go deleted file mode 100644 index e69de29..0000000 diff --git a/internal/movies/controller.go b/internal/movies/controller.go new file mode 100644 index 0000000..b9ea508 --- /dev/null +++ b/internal/movies/controller.go @@ -0,0 +1,63 @@ +// 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) +} diff --git a/internal/musica/model.go b/internal/movies/model.go similarity index 81% rename from internal/musica/model.go rename to internal/movies/model.go index 02ad56e..d1e012c 100644 --- a/internal/musica/model.go +++ b/internal/movies/model.go @@ -1,6 +1,7 @@ -package musica +// internal/movies/model.go +package movies -type Musica struct { +type Movie struct { Title string `yaml:"title"` Subtitle string `yaml:"subtitle"` Link string `yaml:"link"` @@ -13,4 +14,4 @@ type Musica struct { Tags []string } -type Musicas []Musica +type Movies []Movie diff --git a/internal/peliculas/services/fanart.go b/internal/movies/services/fanart.go similarity index 100% rename from internal/peliculas/services/fanart.go rename to internal/movies/services/fanart.go diff --git a/internal/music/controller.go b/internal/music/controller.go new file mode 100644 index 0000000..8a05937 --- /dev/null +++ b/internal/music/controller.go @@ -0,0 +1,2 @@ +// internal/music/controller.go + diff --git a/internal/peliculas/model.go b/internal/music/model.go similarity index 81% rename from internal/peliculas/model.go rename to internal/music/model.go index d481b90..348b208 100644 --- a/internal/peliculas/model.go +++ b/internal/music/model.go @@ -1,6 +1,7 @@ -package peliculas +// internal/music/model.go +package music -type Pelicula struct { +type Album struct { Title string `yaml:"title"` Subtitle string `yaml:"subtitle"` Link string `yaml:"link"` @@ -13,4 +14,4 @@ type Pelicula struct { Tags []string } -type Peliculas []Pelicula +type Albums []Album diff --git a/internal/musica/controller.go b/internal/musica/controller.go deleted file mode 100644 index e69de29..0000000 diff --git a/internal/peliculas/controller.go b/internal/peliculas/controller.go deleted file mode 100644 index d2f82e4..0000000 --- a/internal/peliculas/controller.go +++ /dev/null @@ -1,64 +0,0 @@ -// 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) -} diff --git a/internal/series/controller.go b/internal/series/controller.go index e69de29..f4e1967 100644 --- a/internal/series/controller.go +++ b/internal/series/controller.go @@ -0,0 +1,2 @@ +// internal/series/controller.go + diff --git a/internal/series/model.go b/internal/series/model.go index b666aac..1036fbd 100644 --- a/internal/series/model.go +++ b/internal/series/model.go @@ -1,3 +1,4 @@ +// internal/series/model.go package series type Serie struct { diff --git a/internal/videojuegos/controller.go b/internal/videojuegos/controller.go deleted file mode 100644 index e69de29..0000000 diff --git a/main.go b/main.go index e0c25b2..a4e3159 100644 --- a/main.go +++ b/main.go @@ -2,26 +2,23 @@ package main import ( "fmt" - "hugo-medialog/internal/peliculas" + "hugo-medialog/internal/movies" "hugo-medialog/utils" - "os" ) func main() { - // Cargar el archivo .env + // Load .env file utils.LoadConfig() - obsidianPath := os.Getenv("OBSIDIAN_YAML_PATH") - - // Peliculas - moviesList, err := peliculas.LoadPeliculas(obsidianPath) + // Movies + moviesList, err := movies.LoadMovies() if err != nil { - fmt.Printf("Error reading peliculas file: %v\n", err) + fmt.Printf("Error reading movies file: %v\n", err) return } - err = peliculas.ProcessPeliculas(moviesList) + err = movies.ProcessMovies(moviesList) if err != nil { - fmt.Printf("Error processing peliculas: %v\n", err) + fmt.Printf("Error processing movies: %v\n", err) } } diff --git a/obsidian/libros.yml.md b/obsidian/books.yml.md similarity index 100% rename from obsidian/libros.yml.md rename to obsidian/books.yml.md diff --git a/obsidian/videojuegos.yml.md b/obsidian/games.yml.md similarity index 100% rename from obsidian/videojuegos.yml.md rename to obsidian/games.yml.md diff --git a/obsidian/pelis.yml.md b/obsidian/movies.yml.md similarity index 100% rename from obsidian/pelis.yml.md rename to obsidian/movies.yml.md diff --git a/obsidian/musica.yml.md b/obsidian/music.yml.md similarity index 100% rename from obsidian/musica.yml.md rename to obsidian/music.yml.md diff --git a/templates/libro.md.tpl b/templates/book.md.tpl similarity index 100% rename from templates/libro.md.tpl rename to templates/book.md.tpl diff --git a/templates/videojuego.md.tpl b/templates/game.md.tpl similarity index 100% rename from templates/videojuego.md.tpl rename to templates/game.md.tpl diff --git a/templates/musica.md.tpl b/templates/movie.md.tpl similarity index 100% rename from templates/musica.md.tpl rename to templates/movie.md.tpl diff --git a/templates/pelicula.md.tpl b/templates/music.md.tpl similarity index 100% rename from templates/pelicula.md.tpl rename to templates/music.md.tpl diff --git a/utils/config.go b/utils/config.go index 2b16dba..288fda4 100644 --- a/utils/config.go +++ b/utils/config.go @@ -1,3 +1,4 @@ +// utils/config.go package utils import (