Un sistema automatizado para analizar videos en busca de contenido con personas y material NSFW usando inteligencia artificial.
src/
├── database/ # Paquete de base de datos
│ ├── __init__.py # Inicialización del paquete
│ ├── connection.py # Clase de conexión a SQLite
│ ├── models.py # Modelos de datos (dataclasses)
│ └── operations.py # Operaciones CRUD y lógica de negocio
├── models/
│ └── video-analyzer.py # Lógica de análisis de video con IA
main.py # Bot principal que ejecuta el análisis
Clona el repositorio:
git clone <repository-url>
cd filter_ia_videos
Configura las variables de entorno:
Edita el archivo .env:
VIDEO_DIR=/ruta/a/tus/videos
Construye y ejecuta con Docker:
docker-compose up --build
from src.database import DatabaseConnection, DatabaseOperations
# Conectar a la base de datos
with DatabaseConnection("mi_base.db") as db_conn:
db_conn.create_tables() # Crear tablas si no existen
# Inicializar operaciones
db_ops = DatabaseOperations(db_conn)
# Tu código aquí
# Agregar un video
video_id = db_ops.add_video(
filename="mi_video.mp4",
filepath="/app/videos/mi_video.mp4",
duration=120.5,
total_frames=3600
)
# Agregar resultado de análisis
analysis_id = db_ops.add_analysis_result(
video_id=video_id,
has_persons=True,
has_nsfw=False,
processing_time=45.2
)
# Agregar detección
db_ops.add_detection(
analysis_id=analysis_id,
frame_number=150,
detection_type="person",
confidence=0.89,
bounding_box=[100, 200, 300, 400]
)
# Obtener video por ID
video = db_ops.get_video(video_id)
# Obtener resultados de análisis
results = db_ops.get_analysis_results(video_id)
# Obtener estadísticas
stats = db_ops.get_queue_stats()
summary = db_ops.get_videos_summary()
id: ID único del videofilename: Nombre del archivofilepath: Ruta completa al archivoduration: Duración en segundostotal_frames: Número total de framesfile_size: Tamaño del archivo en bytescreated_at/updated_at: Timestampsid: ID único del análisisvideo_id: ID del video analizadohas_persons: Si se detectaron personashas_nsfw: Si se detectó contenido NSFWprocessing_time: Tiempo de procesamientoanalyzed_at: Fecha de análisisid: ID único de la detecciónanalysis_id: ID del análisisframe_number: Número del framedetection_type: Tipo ('person' o 'nsfw')confidence: Nivel de confianzabounding_box: Coordenadas del bounding boximage_path: Ruta a la imagen guardadaVIDEO_DIR=/home/user/videos # Carpeta donde buscar videos
version: '3.8'
services:
video-analyzer:
build: .
env_file:
- .env
volumes:
- ${VIDEO_DIR}:/app/videos
- ./detections:/app/detections
Instala las dependencias:
pip install -r requirements.txt
Ejecuta el bot:
python main.py
python example_db_usage.py
Métodos principales:
connect(): Establecer conexióndisconnect(): Cerrar conexiónget_cursor(): Obtener cursor con context managerexecute_query(query, params): Ejecutar consultacreate_tables(): Crear esquema de base de datosMétodos principales:
add_video(), get_video(), update_video()add_analysis_result(), get_analysis_results()add_detection(), get_detections()add_to_queue(), get_next_in_queue(), update_queue_status()get_queue_stats(), get_videos_summary()El sistema genera logs detallados incluyendo:
Los logs se muestran en la consola y pueden redirigirse a archivos según necesidad.
[Especifica tu licencia aquí]
1 commits
Python
95.5%
Dockerfile
4.5%
Un sistema automatizado para analizar videos en busca de contenido con personas y material NSFW usando inteligencia artificial.
src/
├── database/ # Paquete de base de datos
│ ├── __init__.py # Inicialización del paquete
│ ├── connection.py # Clase de conexión a SQLite
│ ├── models.py # Modelos de datos (dataclasses)
│ └── operations.py # Operaciones CRUD y lógica de negocio
├── models/
│ └── video-analyzer.py # Lógica de análisis de video con IA
main.py # Bot principal que ejecuta el análisis
Clona el repositorio:
git clone <repository-url>
cd filter_ia_videos
Configura las variables de entorno:
Edita el archivo .env:
VIDEO_DIR=/ruta/a/tus/videos
Construye y ejecuta con Docker:
docker-compose up --build
from src.database import DatabaseConnection, DatabaseOperations
# Conectar a la base de datos
with DatabaseConnection("mi_base.db") as db_conn:
db_conn.create_tables() # Crear tablas si no existen
# Inicializar operaciones
db_ops = DatabaseOperations(db_conn)
# Tu código aquí
# Agregar un video
video_id = db_ops.add_video(
filename="mi_video.mp4",
filepath="/app/videos/mi_video.mp4",
duration=120.5,
total_frames=3600
)
# Agregar resultado de análisis
analysis_id = db_ops.add_analysis_result(
video_id=video_id,
has_persons=True,
has_nsfw=False,
processing_time=45.2
)
# Agregar detección
db_ops.add_detection(
analysis_id=analysis_id,
frame_number=150,
detection_type="person",
confidence=0.89,
bounding_box=[100, 200, 300, 400]
)
# Obtener video por ID
video = db_ops.get_video(video_id)
# Obtener resultados de análisis
results = db_ops.get_analysis_results(video_id)
# Obtener estadísticas
stats = db_ops.get_queue_stats()
summary = db_ops.get_videos_summary()
id: ID único del videofilename: Nombre del archivofilepath: Ruta completa al archivoduration: Duración en segundostotal_frames: Número total de framesfile_size: Tamaño del archivo en bytescreated_at/updated_at: Timestampsid: ID único del análisisvideo_id: ID del video analizadohas_persons: Si se detectaron personashas_nsfw: Si se detectó contenido NSFWprocessing_time: Tiempo de procesamientoanalyzed_at: Fecha de análisisid: ID único de la detecciónanalysis_id: ID del análisisframe_number: Número del framedetection_type: Tipo ('person' o 'nsfw')confidence: Nivel de confianzabounding_box: Coordenadas del bounding boximage_path: Ruta a la imagen guardadaVIDEO_DIR=/home/user/videos # Carpeta donde buscar videos
version: '3.8'
services:
video-analyzer:
build: .
env_file:
- .env
volumes:
- ${VIDEO_DIR}:/app/videos
- ./detections:/app/detections
Instala las dependencias:
pip install -r requirements.txt
Ejecuta el bot:
python main.py
python example_db_usage.py
Métodos principales:
connect(): Establecer conexióndisconnect(): Cerrar conexiónget_cursor(): Obtener cursor con context managerexecute_query(query, params): Ejecutar consultacreate_tables(): Crear esquema de base de datosMétodos principales:
add_video(), get_video(), update_video()add_analysis_result(), get_analysis_results()add_detection(), get_detections()add_to_queue(), get_next_in_queue(), update_queue_status()get_queue_stats(), get_videos_summary()El sistema genera logs detallados incluyendo:
Los logs se muestran en la consola y pueden redirigirse a archivos según necesidad.
[Especifica tu licencia aquí]
1 commits
Python
95.5%
Dockerfile
4.5%