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.
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.
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.
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.
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.
('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.
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.
Ingrese ID de la valoracion: 478362478dsd126371ds
Documento eliminado con exito
8. Editar Valoración por ID
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.
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.
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.
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