Web Analytics

asmr-downloader

⭐ 165 stars Korean by fireinrain

🌐 언어

📖 프로젝트 소개

ASMRoner는 Go 언어로 개발된 커맨드라인 도구로, asmr.one 음성 작품을 검색, 다운로드, 동기화하며 간단한 웹 재생 인터페이스를 제공합니다.

🌐 파생 프로젝트: asmr.furina.in — 심플하고 깔끔한 온라인 ASMR 청취 페이지

🚀 빠른 시작

git clone https://github.com/fireinrain/asmroner.git && cd asmroner
go build -o asmroner
./asmroner config   # 交互式初始化配置

📋 자주 사용하는 명령어

# 搜索
./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 report

Web 播放界面

./asmroner listen -p 8080 ./syncdata

📸 스크린샷

| 설정 | 검색 | |:---:|:---:| | 설정 | 검색 | | 다운로드 | 동기화 | | 다운로드 | 동기화 | | 동기화 다운로드 | 통계 | | 동기화 다운로드 | 통계 | | 웹 인터페이스 | 웹 인터페이스 2 | | 웹인터페이스 | 웹인터페이스2 |

✨ 기능 특성

  • 검색: 단일/대량 RJID, 고급 검색 구문, 결과 내보내기 CSV/JSON
  • 다운로드: 단일/대량/인기 작품 다운로드, 자동 제한, 재시도, 지수 백오프
  • 동기화: 메타데이터 동기화, 대량 다운로드 제어, 상태 추적, 실패 재시도
  • 웹 인터페이스: 시각적 탐색, 브라우저 내 재생, 반응형 디자인
  • 설정: 대화형 초기화, 프록시, 제한, 지터 등 고급 설정 지원

⚙️ 설정 파일 설명

설정 파일 경로: ~/.asmroner/config.toml (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

📋 명령 옵션 빠른 참조

| 명령 | 옵션 | 설명 | |------|------|------| | search | -c | 검색 결과 수 (기본값 10) | | search download | -d, -s | 다운로드 디렉토리, 다운로드 수 | | search export | -f, -n | 내보내기 파일명 (.csv/.json), 내보내기 수 | | download | -d, -n | 다운로드 디렉토리, hot100 수 | | sync download | -d | 다운로드 디렉토리 | | sync retry | -d | 실패 파일이 있는 디렉토리 | | sync export | -s, -f | 상태 (failed/success), 내보내기 파일 | | listen | -p | 포트 (기본값 9999) |

📁 프로젝트 구조

asmroner/
├── cmd/                # 命令行接口(config/download/search/sync/listen)
├── internal/
│   ├── engine/        # 核心下载引擎(限流、重试、并发控制)
│   ├── logger/        # 结构化日志系统
│   ├── model/         # 数据模型与查询参数解析
│   ├── database/      # SQLite 数据库
│   ├── consts/        # 常量定义
│   └── utils/         # 工具函数
├── webui/             # 内嵌 Web 界面(Tailwind + Plyr)
├── main.go
└── go.mod

🛠 기술 스택

| 컴포넌트 | 용도 | |------|------| | Cobra + Viper | CLI 프레임워크 + 설정 관리 | | GORM + SQLite | 데이터 영속성 | | Resty | HTTP 클라이언트 (HTTP/SOCKS5 프록시 지원) | | Pond | 동시 작업 풀 | | x/time/rate | 토큰 버킷 속도 제한 | | Gin | 웹 서비스 | | Tailwind + Plyr | 프론트엔드 UI + 오디오 재생 |

🔧 자주 묻는 질문

설정 파일을 찾을 수 없음./asmroner config 실행하여 초기화

다운로드 실패 (stream error) → 프로그램이 자동 재시도; 계속 실패 시 sync retry로 재시도하거나 .asmroner-data/download_errors.log 확인

웹 인터페이스 접속 불가 → 포트가 점유되지 않았는지 확인, -p 옵션으로 다른 포트 지정 시도

검색 결과가 없음 → 쿼리 문법 확인, 조건 단순화 시도

🤝 기여

Pull Request 제출을 환영합니다! Fork → 새 브랜치 생성 → 변경 사항 커밋 → PR 열기.

📄 라이선스

본 프로젝트는 MIT 라이선스를 따릅니다. 자세한 내용은 LICENSE 파일 참조.

🙏 감사드립니다

---

ASMRoner — 매일 밤 다른 동생과 함께 잠들어요 :)

마지막 업데이트: 2026년 2월

--- Tranlated By Open Ai Tx | Last indexed: 2026-04-17 ---