BookinglyTech News
Infraestructura

Crea una base de datos con SQLite y Python para indexar 2 TB de episodios de radio

Un administrador de NAS transforma su archivo de 2 TB en una biblioteca consultable con seis scripts en Python y una tabla FTS5 de SQLite.

2 min de lecturar/selfhosted0 vistas

El usuario /u/Scallywag933 tenía un NAS con más de 2 TB de episodios de un programa de radio diario. Los archivos estaban en carpetas anidadas y con nombres inconsistentes, lo que hacía imposible localizar un episodio sin recordar su año. Para resolverlo, construyó una tubería de seis scripts en Python que convierte el caos en una biblioteca indexada.

Inventario y extracción de metadatos

El primer script recorre el árbol del NAS, creando una tabla files con una fila por cada archivo de audio. A continuación, un segundo script analiza los nombres de los archivos para extraer la fecha de emisión y la inserta en la misma tabla.

Relleno de resúmenes

Un tercero consulta los “rundowns” (guías de episodios mantenidas por fanáticos) disponibles para el programa, descargando el texto de cada episodio y guardándolo en una tabla rundowns. Este texto incluye una descripción breve que facilita la búsqueda.

Indexación FTS5

Con los datos de fecha y de resumen, el cuarto script crea un índice FTS5 sobre el campo de texto de la tabla rundowns. SQLite FTS5 permite búsquedas de frase exacta con un rendimiento aceptable para bases de datos de tamaño personal.

Interfaz de búsqueda

El último script expone una pequeña página web con un formulario de búsqueda. Cuando el usuario escribe una frase, la consulta se ejecuta sobre el índice FTS5, recupera la fila con la fecha de emisión y la muestra junto con un enlace de reproducción al archivo de audio correspondiente. El flujo de datos es:

  1. Entrada de texto.
  2. Búsqueda en FTS5.
  3. Recuperación de la fecha de emisión.
  4. Unión con la tabla files para obtener la ruta del archivo.
  5. Reproducción.

Resultados y rendimiento

Con esta arquitectura, la búsqueda de un episodio se reduce a una consulta de una sola línea en SQLite, lo que elimina la necesidad de navegar por carpetas ni recordar fechas exactas. La solución se mantiene ligera, ya que SQLite no requiere un servidor dedicado y los scripts pueden ejecutarse en cualquier máquina con Python instalado.

Por qué importa

Para cualquier administrador que maneje grandes volúmenes de medios en un NAS, esta aproximación demuestra que una base de datos ligera y un poco de scripting pueden convertir un archivo desorganizado en un recurso accesible y eficiente. La elección de SQLite FTS5, sobre soluciones más pesadas como Elasticsearch, es especialmente relevante cuando el presupuesto y el consumo de recursos son factores críticos.