Monad-Based Stream Processing Framework
Instalaciones necesarias:
pip install -r ./requirements.txt
Ejecucion del archivo:
paso 1: Ejecutar el archivo main.py
- python ./main.py -
Este mostrara un meno al usuario en el cual el unico requisitto es que exista un archivo pdf llamado "wikipedia_report.pdf" una vez creado el archivo, se podra generar el ciclo infinito con intervalos de tiempos aleatorios de 1 a 10 segundos.
El ciclo llamara al archivo Wikiscraper.py y ira agregando los datos en el archivo pdf que se genero anteriormente
El archivo wikiscraper.py analizara el contenido de la pagina y guardara valores como la palabra mas usada
-Funciones del archivo main.py - signal_handler(sig, frame): Manejador de señales para capturar interrupciones (Ctrl+C) y terminar el ciclo. stream_processing_loop(filename): Ejecuta un ciclo infinito que obtiene una página aleatoria de Wikipedia, analiza el texto y genera un reporte en PDF. main(): Menú interactivo para permitir al usuario crear el archivo PDF vacío o iniciar el ciclo de scraping y análisis.
- Funciones del archivo wikiscraper.py - Clases: Monada: bind(func): Encadena una operación monádica, pasando el valor encapsulado a la función proporcionada. map(func): Aplica una función al valor encapsulado y lo envuelve en una nueva Monada. apply(monadaic_func): Aplica una función monádica al valor encapsulado. repr(): Representación en cadena de la Monada.
WikipediaScraper: get_random_wikipedia_page(): Obtiene el contenido de una página aleatoria de Wikipedia y lo envuelve en una Monada. Devuelve una tupla con el texto de la página y la URL.
TextAnalyzer: analyze_text(data): Analiza el texto obtenido de Wikipedia para encontrar las palabras más usadas, la palabra más larga, y el tema principal de la página. Realiza un conteo de las palabras más comunes (excluyendo las "stop words"), la palabra más larga, el promedio de longitud de las palabras y extrae el tema de la URL.
PDFGenerator: create_empty_pdf(filename): Crea un archivo PDF vacío si no existe ya, con el título "Wikipedia Text Analysis Report". generate_report(data, filename): Genera o agrega información a un archivo PDF con el análisis realizado en TextAnalyzer. Si el archivo ya existe, agrega una nueva página con la información analizada.
Preguntas que s ele hicieron chatGPT: "Como obtener contenido de una pagina aleatoria de wikipedia?" "Como hacer una funcion en python que modifique un archivo pdf y agregue mas paginas sin editar la pagina?"
horas invertidas en este proyecto : 6hrs