📖 Introducción al proyecto
ASMRoner es una herramienta de línea de comandos en Go para buscar, descargar y sincronizar obras de audio de asmr.one, y proporciona una interfaz web sencilla para reproducir.
🌐 Proyecto derivado: asmr.furina.in — una página en línea limpia y sencilla para escuchar ASMR
🚀 Comienzo rápido
git clone https://github.com/fireinrain/asmroner.git && cd asmroner
go build -o asmroner
./asmroner config # 交互式初始化配置📋 Comandos comunes
# 搜索
./asmroner search "护士" -c 20
./asmroner search "护士,-中出@duration:1h" -c 50下载
./asmroner download RJ01037721 -d ./downloads
./asmroner download RJ01037721,RJ02000001 -d ./downloads
./asmroner download hot100 -n 10 -d ./downloads搜索 + 下载/导出
./asmroner search download "护士" -d ./downloads -s 20
./asmroner search export "护士" -n 100 -f data.json同步元数据 & 批量下载
./asmroner sync
./asmroner sync download -d ./downloads
./asmroner sync retry -d ./downloads
./asmroner sync reportWeb 播放界面
./asmroner listen -p 8080 ./syncdata📸 Capturas de pantalla
| Configuración | Búsqueda |
|:---:|:---:|
|
|
|
| Descarga | Sincronización |
|
|
|
| Descarga sincronizada | Estadísticas |
|
|
|
| Interfaz Web | Interfaz Web 2 |
|
|
|
✨ Características
- Búsqueda: RJID individual/lote, sintaxis avanzada de búsqueda, exportación de resultados a CSV/JSON
- Descarga: descarga individual/lote/popular, limitación automática, reintentos, retroceso exponencial
- Sincronización: sincronización de metadatos, control de descargas en lote, seguimiento de estado, reintentos en fallos
- Interfaz Web: navegación visual, reproducción en navegador, diseño responsivo
- Configuración: inicialización interactiva, soporte para proxy, limitación, jitter y otras configuraciones avanzadas
⚙️ Explicación del archivo de configuración
Ruta del archivo de configuración: ~/.asmroner/config.toml (formato TOML)
[user]
account = "guest"
password = "guest"[downloader]
api_url = "" # 留空自动获取最快站点
proxy_url = "" # 支持 http / socks5
max_workers = 5
max_retries = 3
sync_data_folder = "./syncdata"
sync_wanted_size = "200MB" # 同步容量限制
prefer_media = "all" # all | mp3>wav>flac
[limit]
sync_qps = 2
sync_jitter_min = 100 # ms
sync_jitter_max = 500
download_qps = 0.2
download_jitter_min = 2000
download_jitter_max = 5000
📋 Opciones de comandos rápidas
| Comando | Opción | Descripción |
|------|------|------|
| search | -c | Número de resultados de búsqueda (por defecto 10) |
| search download | -d, -s | Directorio de descarga, cantidad de descargas |
| search export | -f, -n | Nombre del archivo exportado (.csv/.json), cantidad exportada |
| download | -d, -n | Directorio de descarga, cantidad hot100 |
| sync download | -d | Directorio de descarga |
| sync retry | -d | Directorio donde se encuentran archivos fallidos |
| sync export | -s, -f | Estado (failed/success), archivo exportado |
| listen | -p | Puerto (por defecto 9999) |
📁 Estructura del proyecto
asmroner/
├── cmd/ # 命令行接口(config/download/search/sync/listen)
├── internal/
│ ├── engine/ # 核心下载引擎(限流、重试、并发控制)
│ ├── logger/ # 结构化日志系统
│ ├── model/ # 数据模型与查询参数解析
│ ├── database/ # SQLite 数据库
│ ├── consts/ # 常量定义
│ └── utils/ # 工具函数
├── webui/ # 内嵌 Web 界面(Tailwind + Plyr)
├── main.go
└── go.mod🛠 Tecnologías
| Componente | Uso | |------|------| | Cobra + Viper | Marco CLI + Gestión de configuración | | GORM + SQLite | Persistencia de datos | | Resty | Cliente HTTP (soporta proxy HTTP/SOCKS5) | | Pond | Pool de trabajo concurrente | | x/time/rate | Limitación de tasa con token bucket | | Gin | Servicio web | | Tailwind + Plyr | Interfaz frontend + Reproducción de audio |
🔧 Preguntas frecuentes
Archivo de configuración no encontrado → Ejecutar ./asmroner config para inicializar
Descarga fallida (stream error) → El programa reintentará automáticamente; si sigue fallando, usar sync retry para reintentar, o revisar .asmroner-data/download_errors.log
Interfaz web inaccesible → Confirmar que el puerto no esté ocupado, intentar con -p para especificar otro puerto
Resultados de búsqueda vacíos → Verificar sintaxis de consulta, intentar simplificar condiciones
🤝 Contribuciones
¡Bienvenido a enviar Pull Request! Fork → Crear rama → Enviar cambios → Abrir PR.
📄 Licencia
Este proyecto utiliza la licencia MIT, para más detalles consulte el archivo LICENSE.
🙏 Agradecimientos
- Agradecimientos especiales a go-asmr-spider
- ¡Gracias a todos los colaboradores y usuarios!
ASMRoner — Cada noche una hermanita diferente te acompaña a dormir :)
Última actualización: febrero de 2026
--- Tranlated By Open Ai Tx | Last indexed: 2026-04-16 ---