Este documento describe la integración completa con la API de Radarr v3 en KeeperCheky.
Endpoint: GET /api/radarr/system
Obtiene información completa del sistema Radarr.
Respuesta:
{
"version": "4.0.0.0",
"build_time": "2024-01-01T00:00:00Z",
"branch": "master",
"os": "Linux",
"os_version": "5.15.0",
"runtime": ".NET Core",
"runtime_version": "6.0.0",
"is_debug": false,
"is_production": true,
"authentication": "forms",
"url_base": "",
"startup_path": "/app",
"app_data": "/config",
"sqlite_version": "3.36.0"
}
Uso:
Endpoint: GET /api/radarr/queue
Obtiene la cola de descargas actual con información de progreso.
Respuesta:
{
"total": 2,
"items": [
{
"id": 1,
"movie_id": 123,
"title": "Test Movie 2024",
"size": 1000000000,
"size_left": 500000000,
"progress": 50.0,
"status": "downloading",
"download_status": "ok",
"download_state": "downloading",
"protocol": "torrent",
"download_client": "qBittorrent",
"indexer": "Example Indexer",
"timed_out": false,
"estimated_completion": "2024-01-01T12:00:00Z"
}
]
}
Uso:
Endpoint: GET /api/radarr/history?pageSize=50
Obtiene el historial de eventos de Radarr.
Parámetros de Query:
pageSize (opcional): Número de resultados (1-100, default: 50)Respuesta:
{
"total": 2,
"items": [
{
"id": 1,
"movie_id": 123,
"source_title": "Test.Movie.2024.1080p.BluRay.x264",
"quality": "Bluray-1080p",
"date": "2024-01-01T10:00:00Z",
"event_type": "grabbed",
"download_id": "abc123"
},
{
"id": 2,
"movie_id": 123,
"source_title": "Test.Movie.2024.1080p.BluRay.x264",
"quality": "Bluray-1080p",
"date": "2024-01-01T11:00:00Z",
"event_type": "downloadFolderImported",
"download_id": "abc123"
}
]
}
Tipos de Eventos:
grabbed: Descarga iniciadadownloadFolderImported: Archivo importado exitosamentedownloadFailed: Descarga fallidamovieFileDeleted: Archivo eliminadomovieFileRenamed: Archivo renombradoUso:
Endpoint: GET /api/radarr/calendar?start=2024-01-01&end=2024-01-31
Obtiene películas próximas a estrenarse.
Parámetros de Query:
start (opcional): Fecha de inicio en formato YYYY-MM-DD (default: hoy)end (opcional): Fecha de fin en formato YYYY-MM-DD (default: +30 días)Respuesta:
{
"start_date": "2024-01-01",
"end_date": "2024-01-31",
"total": 2,
"items": [
{
"id": 1,
"title": "Upcoming Movie",
"in_cinemas": "2024-01-15T00:00:00Z",
"physical_release": "2024-02-01T00:00:00Z",
"digital_release": "2024-01-20T00:00:00Z",
"year": 2024,
"has_file": false,
"monitored": true
}
]
}
Uso:
Endpoint: GET /api/radarr/quality-profiles
Obtiene los perfiles de calidad configurados en Radarr.
Respuesta:
{
"total": 5,
"profiles": [
{
"id": 1,
"name": "Any"
},
{
"id": 4,
"name": "HD-1080p"
},
{
"id": 5,
"name": "Ultra-HD"
}
]
}
Uso:
La página del Dashboard incluye una sección de “Radarr Download Queue” que muestra:
Cuando se prueba la conexión a Radarr:
info, err := radarrClient.GetSystemInfo(ctx)
if err != nil {
// Manejar error
}
// info contiene toda la información del sistema
queue, err := radarrClient.GetQueue(ctx)
if err != nil {
// Manejar error
}
// queue es un slice de RadarrQueueItem
for _, item := range queue {
fmt.Printf("Descargando: %s (%.1f%%)\n", item.Title, item.Progress)
}
history, err := radarrClient.GetHistory(ctx, 50)
if err != nil {
// Manejar error
}
// history es un slice de RadarrHistoryItem
startDate := time.Now()
endDate := time.Now().AddDate(0, 0, 30)
calendar, err := radarrClient.GetCalendar(ctx, startDate, endDate)
if err != nil {
// Manejar error
}
// calendar es un slice de RadarrCalendarItem
profiles, err := radarrClient.GetQualityProfiles(ctx)
if err != nil {
// Manejar error
}
// profiles es un slice de RadarrQualityProfile
Todos los endpoints devuelven errores apropiados:
Todas las llamadas a la API de Radarr implementan lógica de reintentos:
Los tests unitarios cubren:
Ejecutar tests:
go test ./internal/service/clients -v -run TestRadarr*
Asegúrate de tener Radarr configurado en config.yaml:
clients:
radarr:
enabled: true
url: "http://localhost:7878"
api_key: "tu-api-key-aqui"
O mediante variables de entorno:
KEEPERCHEKY_CLIENTS_RADARR_ENABLED=true
KEEPERCHEKY_CLIENTS_RADARR_URL=http://localhost:7878
KEEPERCHEKY_CLIENTS_RADARR_API_KEY=tu-api-key-aqui
Documentación oficial de Radarr API v3:
Pendientes de implementar: