1- from collections import OrderedDict
1+ """
2+ Este script procesa eventos de un archivo JSON de Meetup y los transforma
3+ para ser almacenados en el sistema de contenido.
4+ """
5+
26import json
37import os
4- from lektor .project import Project
8+ from collections import OrderedDict
9+
510from lektor .utils import slugify
611
712HERE = os .path .abspath (os .path .dirname (__file__ ))
813PROJECT_ROOT_PATH = os .path .dirname (HERE )
914
15+
1016def extract_meetup_json (file ):
17+ """
18+ Lee el archivo JSON proporcionado y devuelve una lista de eventos.
19+
20+ Args:
21+ file (str): Ruta al archivo JSON de Meetup.
22+
23+ Returns:
24+ list: Lista de eventos obtenidos del archivo JSON.
25+ """
1126 with open (file , "r" , encoding = "utf-8" ) as meetup_data :
1227 events = json .loads (meetup_data .read ())
1328 return events
1429
30+
1531def transform_event (event : dict ):
32+ """
33+ Transforma un evento de Meetup en un diccionario ordenado con los campos necesarios.
34+
35+ Args:
36+ event (dict): Diccionario con los datos del evento de Meetup.
37+
38+ Returns:
39+ OrderedDict: Diccionario ordenado con los campos transformados.
40+ """
1641 content = OrderedDict ()
1742 content ["title" ] = event ["name" ]
18- content ["date_start" ] = "{} {}" . format ( event [" local_date" ], event [" local_time" ])
43+ content ["date_start" ] = f" { event [' local_date' ] } { event [' local_time' ] } "
1944 content ["link" ] = event ["link" ]
2045 content ["information" ] = event ["description" ]
2146 try :
@@ -29,25 +54,41 @@ def transform_event(event: dict):
2954 print ("Key error: venue on" , event ["name" ])
3055 return content
3156
57+
3258def write_content (slug , fields ):
33- folderpath = os .path .join (PROJECT_ROOT_PATH , 'content' , 'eventos' , slug )
59+ """
60+ Escribe el contenido del evento en un archivo con formato específico.
61+
62+ Args:
63+ slug (str): Slug único del evento.
64+ fields (OrderedDict): Campos del evento a escribir en el archivo.
65+ """
66+ folderpath = os .path .join (PROJECT_ROOT_PATH , "content" , "eventos" , slug )
3467 if not os .path .isdir (folderpath ):
3568 os .makedirs (folderpath )
36- filepath = os .path .join (folderpath , ' contents.lr' )
37- items = ['{ }: {}\n ' . format ( key , value ) for key , value in fields .items ()]
69+ filepath = os .path .join (folderpath , " contents.lr" )
70+ items = [f" { key } : { value } \n " for key , value in fields .items ()]
3871
3972 if os .path .isfile (filepath ):
40- print ("File for slug {} already exists, skipping" . format ( slug ) )
73+ print (f "File for slug { slug } already exists, skipping" )
4174 else :
42- with open (filepath , 'w' ) as fh :
43- fh .write (' ---\n ' .join (items ))
75+ with open (filepath , "w" , encoding = "utf-8" ) as fh :
76+ fh .write (" ---\n " .join (items ))
4477
45- def load_events (events ):
46- for event in events :
47- write_content (event ["date_start" ][:10 ] + "-" + slugify (event ["title" ]), event )
4878
49- if __name__ == '__main__' :
50- events = extract_meetup_json ("databags/meetup.json" )
51- transformed_events = [transform_event (event ) for event in events ["past_events" ]]
52- load_events (transformed_events )
79+ def load_events (event_list ):
80+ """
81+ Carga y guarda eventos transformados.
82+
83+ Args:
84+ event_list (list): Lista de eventos transformados.
85+ """
86+ for event in event_list :
87+ slug = event ["date_start" ][:10 ] + "-" + slugify (event ["title" ])
88+ write_content (slug , event )
5389
90+
91+ if __name__ == "__main__" :
92+ event_data = extract_meetup_json ("databags/meetup.json" )
93+ transformed_events = [transform_event (event ) for event in event_data ["past_events" ]]
94+ load_events (transformed_events )
0 commit comments