Sistema de Gestión y Análisis de Audios y Valoraciones

En este artículo, vamos a explorar un conjunto de funciones útiles que interactúan con una base de datos MongoDB para gestionar audios, valoraciones de usuarios, y frases etiquetadas. Estas funciones se implementan en Python y están diseñadas para facilitar tareas comunes como la obtención de datos, la inserción de nuevas entradas y la actualización o eliminación de registros existentes.

1. Obtener Todos los Audios de un Usuario

Una de las funcionalidades básicas es la capacidad de obtener todos los audios almacenados en la base de datos. La función obtener_audios() recupera todos los registros de la colección audios y devuelve una lista de estos. Pero en nuestra caso, vamos a crear también todos los audios correspondiente a un email concreto. De esta forma tendremos estadísticas para los usuarios.

Captura desde 2024-12-18 18-37-01

Ingrese el email del usuario (ejemplo: sebas@jennifervk.com): sebas@jennifervk.com

Audios de sebas@jennifervk.com encontrados:

[{'_id': ObjectId('871623qeqw7618236198hjw'), 'aws_object_id': '8973498234kjhad897942.wav', 'usuario': {'id': ObjectId('6937856983fjhsgd8762452h'), 'mail': 'sebas@jennifervk.com', 'nombre': 'Sebas Muñoz Gonzales', 'parent': 'jennifervk@vk.com'}

2. Obtener el Total de Audios por Usuario

Si lo que necesitas es conocer cuántos audios tiene un usuario en particular, la función obtener_total_audios_usuario_email(email) te da el conteo total de documentos que coinciden con el email proporcionado.

Captura desde 2024-12-18 18-37-28

Ingresa el email del usuario (ejemplo: sebas@jennifervk.com): sebas@jennifervk.com

Total de audios del usuario sebas@jennifervk.com: 1

3. Obtener Duración Total de los Audios

Si además de los audios te interesa saber cuántos segundos en total suman todos los audios de un usuario, la función obtener_duracion_total_audios_usuario_email(email) usa agregaciones para sumar las duraciones de todos los audios de ese usuario.

Captura desde 2024-12-18 18-37-41

Ingresa el email del usuario (ejemplo: sebas@jennifervk.com): sebas@jennifervk.com

Duracion total de audios del usuario sebas@jennifervk.com: 17s

4. Obtener el Conteo de Tags

Los audios pueden estar etiquetados con diferentes categorías o palabras clave. La función obtener_conteo_tags_usuario_email(email) permite conocer cuántos audios tiene un usuario para cada tag específico.

Captura desde 2024-12-18 18-39-06

Ingrese el email del usuario (ejemplo: sebas@jennifervk.com): sebas@jennifervk.com

Conteo de tags:

Tag: 18pl1, Conteo: 3 Tag: 15s2, Conteo: 3 Tag: 24cl1, Conteo: 3 Tag: 5g2, Conteo: 8 Tag: 19bl1, Conteo: 4 Tag: 16t2, Conteo: 4 Tag: 21pr1, Conteo: 3 Tag: 5g1, Conteo: 11 Tag: 811, Conteo: 3 Tag: 2ch2, Conteo: 22 Tag: 4f2, Conteo: 4 Tag: 13p1, Conteo: 3 Tag: 812, Conteo: 3 Tag: 11n3, Conteo: 3 Tag: 24c12, Conteo: 3 Tag: 28cr1, Conteo: 2 Tag: 23fr2, Conteo: 4 Tag: 2ch1, Conteo: 23 Tag: 10m1, Conteo: 5

5. Añadir Valoración a un Audio

La función anadir_valoracion(mail, fonema, audioId, valoracion) permite agregar una valoración a un audio específico de tipo positiva o negativa. Se registra la valoración junto con información adicional como el fonema y el ID del audio. Esta información se guarda en la colección valoraciones.

Captura desde 2024-12-18 18-39-25

('Valoracion insertada con ID:', ObjectId('7389247hdjkf98374120'))

6. Obtener Valoraciones de un Usuario

Para ver las valoraciones que un usuario ha hecho, puedes usar obtener_valoraciones_por_usuario(email), que devuelve todas las valoraciones asociadas a un correo electrónico en la colección valoraciones.

Captura desde 2024-12-18 18-39-42

Ingrese el email del usuario (ejemplo: sebas@jennifervk.com): sebas@jennifervk.com

Valoraciones del usuario sebas@jennifervk.com: [{'_id': ObjectId('675ef5308f924e4bf97406b5'), 'm ail': 'sebas@jennifervk.com', 'fonema': 'fonemal', 'audioId': 'audioIdl', 'valoracion': 'Buena c alidad', 'fecha': '2024-12-15'}, {'_id': ObjectId('675ef91800e69b65e9420ebb'), 'mail': 'sebas@je nnifervk.com', 'fonema': 'fonemal', 'audioId': 'audioIdl', 'valoracion': 'Buena calidad', 'fecha ': '2024-12-15'}, {'_id': ObjectId('675f05edf5bed8f02e35eabb'), 'mail': 'sebas@jennifervk.com', 'fonema': 'fonemal', 'audioId': 'audioIdl', 'valoracion': 'Buena calidad', 'fecha': '2024-12-15' }]

7. Eliminar Valoración por ID

Si se requiere eliminar una valoración, la función eliminar_valoracion_por_id(id_str) te permite hacerlo especificando el ID de la valoración a eliminar.

Captura desde 2024-12-18 18-40-01

Ingrese ID de la valoracion: 478362478dsd126371ds

Documento eliminado con exito

8. Editar Valoración por ID

Captura desde 2024-12-18 18-40-33

Ingrese ID de la valoracion: 478362478dsd126371ds

Ingrese nueva valoracion (positiva o negativa): positiva

Documento actualizado con exito

9. Insertar Varias Frases desde un Archivo CSV

Con la función insertar_varias_frases(csv_file, current_user), puedes cargar un archivo CSV con varias frases y etiquetarlas con un tag y el nombre del creador. Esta función permite automatizar la inserción de múltiples frases a la base de datos.

Captura desde 2024-12-18 18-41-04

Ingrese ubicacion del archivo csv: ./nuevasFrases.csv

Frases anadidas: 12

10. Eliminar Frases por Tag

Si es necesario eliminar varias frases de la base de datos basándose en un tag, la función eliminar_por_tag(tag) elimina todos los documentos que tienen el tag especificado.

Captura desde 2024-12-18 18-41-30

Ingrese TAG de frases: tag1

Se han eliminado 10 frases

11. Editar Tags de Varias Frases

Si se necesita cambiar un tag en varias frases, la función editar_tags_varias_frases(tag_actual, nuevo_tag) permite actualizar el tag de todas las frases que coincidan con el tag actual.

Captura desde 2024-12-18 18-41-42

Ingrese el tag que desea actualizar: tag1

Ingrese el nuevo tag: tag2

Se ha actualizado el tag

Este conjunto de funciones proporciona una solución integral para gestionar audios, valoraciones y frases etiquetadas en una base de datos MongoDB. Gracias a las funciones de agregación, búsqueda y actualización, los usuarios pueden interactuar fácilmente con los datos y realizar tareas como obtener información de audios, modificar valoraciones y actualizar frases con eficiencia.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *