Refactor
This commit is contained in:
parent
d5cc40c0db
commit
16b7e40a6a
10
env.sample
10
env.sample
@ -5,10 +5,14 @@ ISBNDB_API_KEY=your_isbndb_api_key
|
|||||||
FANART_API_KEY=your_fanart_api_key
|
FANART_API_KEY=your_fanart_api_key
|
||||||
SPOTIFY_API_KEY=your_spotify_api_key
|
SPOTIFY_API_KEY=your_spotify_api_key
|
||||||
|
|
||||||
# Ruta a los archivos de Obsidian
|
# PATH to Obisdian files where the information is
|
||||||
OBSIDIAN_YAML_PATH=/ruta/a/tu/vault/obsidian/
|
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
|
MARKDOWN_OUTPUT_DIR=output/markdown
|
||||||
IMAGES_OUTPUT_DIR=output/images
|
IMAGES_OUTPUT_DIR=output/images
|
||||||
TEMPLATES_DIR=templates
|
TEMPLATES_DIR=templates
|
||||||
|
2
internal/books/controller.go
Normal file
2
internal/books/controller.go
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
// internal/books/controller.go
|
||||||
|
|
@ -1,6 +1,7 @@
|
|||||||
package libros
|
// internal/books/model.go
|
||||||
|
package books
|
||||||
|
|
||||||
type Libro struct {
|
type Book struct {
|
||||||
Title string `yaml:"title"`
|
Title string `yaml:"title"`
|
||||||
Author string `yaml:"author"`
|
Author string `yaml:"author"`
|
||||||
Link string `yaml:"link"`
|
Link string `yaml:"link"`
|
||||||
@ -14,4 +15,4 @@ type Libro struct {
|
|||||||
Tags []string
|
Tags []string
|
||||||
}
|
}
|
||||||
|
|
||||||
type Libros []Libro
|
type Books []Book
|
2
internal/games/controller.go
Normal file
2
internal/games/controller.go
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
// internal/games/controller.go
|
||||||
|
|
@ -1,6 +1,7 @@
|
|||||||
package videojuegos
|
// internal/games/model.go
|
||||||
|
package games
|
||||||
|
|
||||||
type Videojuego struct {
|
type Game struct {
|
||||||
Title string `yaml:"title"`
|
Title string `yaml:"title"`
|
||||||
Link string `yaml:"link"`
|
Link string `yaml:"link"`
|
||||||
Subtitle string `yaml:"subtitle"`
|
Subtitle string `yaml:"subtitle"`
|
||||||
@ -14,4 +15,4 @@ type Videojuego struct {
|
|||||||
Tags []string
|
Tags []string
|
||||||
}
|
}
|
||||||
|
|
||||||
type Videojuegos []Videojuego
|
type Games []Game
|
63
internal/movies/controller.go
Normal file
63
internal/movies/controller.go
Normal file
@ -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)
|
||||||
|
}
|
@ -1,6 +1,7 @@
|
|||||||
package musica
|
// internal/movies/model.go
|
||||||
|
package movies
|
||||||
|
|
||||||
type Musica struct {
|
type Movie struct {
|
||||||
Title string `yaml:"title"`
|
Title string `yaml:"title"`
|
||||||
Subtitle string `yaml:"subtitle"`
|
Subtitle string `yaml:"subtitle"`
|
||||||
Link string `yaml:"link"`
|
Link string `yaml:"link"`
|
||||||
@ -13,4 +14,4 @@ type Musica struct {
|
|||||||
Tags []string
|
Tags []string
|
||||||
}
|
}
|
||||||
|
|
||||||
type Musicas []Musica
|
type Movies []Movie
|
2
internal/music/controller.go
Normal file
2
internal/music/controller.go
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
// internal/music/controller.go
|
||||||
|
|
@ -1,6 +1,7 @@
|
|||||||
package peliculas
|
// internal/music/model.go
|
||||||
|
package music
|
||||||
|
|
||||||
type Pelicula struct {
|
type Album struct {
|
||||||
Title string `yaml:"title"`
|
Title string `yaml:"title"`
|
||||||
Subtitle string `yaml:"subtitle"`
|
Subtitle string `yaml:"subtitle"`
|
||||||
Link string `yaml:"link"`
|
Link string `yaml:"link"`
|
||||||
@ -13,4 +14,4 @@ type Pelicula struct {
|
|||||||
Tags []string
|
Tags []string
|
||||||
}
|
}
|
||||||
|
|
||||||
type Peliculas []Pelicula
|
type Albums []Album
|
@ -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)
|
|
||||||
}
|
|
@ -0,0 +1,2 @@
|
|||||||
|
// internal/series/controller.go
|
||||||
|
|
@ -1,3 +1,4 @@
|
|||||||
|
// internal/series/model.go
|
||||||
package series
|
package series
|
||||||
|
|
||||||
type Serie struct {
|
type Serie struct {
|
||||||
|
17
main.go
17
main.go
@ -2,26 +2,23 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"hugo-medialog/internal/peliculas"
|
"hugo-medialog/internal/movies"
|
||||||
"hugo-medialog/utils"
|
"hugo-medialog/utils"
|
||||||
"os"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
// Cargar el archivo .env
|
// Load .env file
|
||||||
utils.LoadConfig()
|
utils.LoadConfig()
|
||||||
|
|
||||||
obsidianPath := os.Getenv("OBSIDIAN_YAML_PATH")
|
// Movies
|
||||||
|
moviesList, err := movies.LoadMovies()
|
||||||
// Peliculas
|
|
||||||
moviesList, err := peliculas.LoadPeliculas(obsidianPath)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Printf("Error reading peliculas file: %v\n", err)
|
fmt.Printf("Error reading movies file: %v\n", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
err = peliculas.ProcessPeliculas(moviesList)
|
err = movies.ProcessMovies(moviesList)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Printf("Error processing peliculas: %v\n", err)
|
fmt.Printf("Error processing movies: %v\n", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
// utils/config.go
|
||||||
package utils
|
package utils
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
Loading…
Reference in New Issue
Block a user