{"id":20253354,"url":"https://github.com/fireinrain/asmr-downloader","last_synced_at":"2026-02-22T04:01:08.947Z","repository":{"id":65761876,"uuid":"597975793","full_name":"fireinrain/asmr-downloader","owner":"fireinrain","description":"A tool for download asmr media from asmr.one(Thanks for the asmr.one)","archived":false,"fork":false,"pushed_at":"2025-12-28T16:07:03.000Z","size":43297,"stargazers_count":126,"open_issues_count":1,"forks_count":13,"subscribers_count":3,"default_branch":"v2","last_synced_at":"2025-12-30T06:31:32.535Z","etag":null,"topics":["asmr","downloader","go","golang","spider"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fireinrain.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-02-06T05:49:02.000Z","updated_at":"2025-12-28T16:05:13.000Z","dependencies_parsed_at":"2023-11-17T14:42:55.295Z","dependency_job_id":"409e6bfc-e7fa-4bf0-a161-04fa1450720e","html_url":"https://github.com/fireinrain/asmr-downloader","commit_stats":null,"previous_names":[],"tags_count":28,"template":false,"template_full_name":null,"purl":"pkg:github/fireinrain/asmr-downloader","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fireinrain%2Fasmr-downloader","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fireinrain%2Fasmr-downloader/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fireinrain%2Fasmr-downloader/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fireinrain%2Fasmr-downloader/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fireinrain","download_url":"https://codeload.github.com/fireinrain/asmr-downloader/tar.gz/refs/heads/v2","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fireinrain%2Fasmr-downloader/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29704420,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-22T03:17:42.375Z","status":"ssl_error","status_checked_at":"2026-02-22T03:17:31.622Z","response_time":110,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["asmr","downloader","go","golang","spider"],"created_at":"2024-11-14T10:23:25.488Z","updated_at":"2026-02-22T04:01:08.941Z","avatar_url":"https://github.com/fireinrain.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n## 📖 项目简介\n\nASMRoner 是一款 Go 语言命令行工具，用于搜索、下载、同步 asmr.one 音声作品，并提供简易 Web 播放界面。\n\n\u003e 🌐 衍生作品：[asmr.furina.in](https://asmr.furina.in) — 一个简洁干净的在线 ASMR 听音页面\n\n## 🚀 快速开始\n\n```bash\ngit clone https://github.com/fireinrain/asmroner.git \u0026\u0026 cd asmroner\ngo build -o asmroner\n./asmroner config   # 交互式初始化配置\n```\n\n## 📋 常用命令\n\n```bash\n# 搜索\n./asmroner search \"护士\" -c 20\n./asmroner search \"护士,-中出@duration:1h\" -c 50\n\n# 下载\n./asmroner download RJ01037721 -d ./downloads\n./asmroner download RJ01037721,RJ02000001 -d ./downloads\n./asmroner download hot100 -n 10 -d ./downloads\n\n# 搜索 + 下载/导出\n./asmroner search download \"护士\" -d ./downloads -s 20\n./asmroner search export \"护士\" -n 100 -f data.json\n\n# 同步元数据 \u0026 批量下载\n./asmroner sync\n./asmroner sync download -d ./downloads\n./asmroner sync retry -d ./downloads\n./asmroner sync report\n\n# Web 播放界面\n./asmroner listen -p 8080 ./syncdata\n```\n\n## 📸 截图\n\n| 配置 | 搜索 |\n|:---:|:---:|\n| ![配置](dist/config.png) | ![搜索](dist/search.png) |\n| **下载** | **同步** |\n| ![下载](dist/download.png) | ![同步](dist/sync.png) |\n| **同步下载** | **统计** |\n| ![同步下载](dist/sync-down.png) | ![统计](dist/sync-report.png) |\n| **Web 界面** | **Web 界面 2** |\n| ![Web界面](dist/listen.png) | ![Web界面2](dist/listen2.png) |\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e✨ 功能特性\u003c/b\u003e\u003c/summary\u003e\n\n- **搜索**：单个/批量 RJID、高级搜索语法、结果导出 CSV/JSON\n- **下载**：单个/批量/热门作品下载，自动限流、重试、指数退避\n- **同步**：元数据同步、批量下载控制、状态跟踪、失败重试\n- **Web 界面**：可视化浏览、浏览器内播放、响应式设计\n- **配置**：交互式初始化，支持代理、限流、抖动等高级配置\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e⚙️ 配置文件说明\u003c/b\u003e\u003c/summary\u003e\n\n配置文件路径：`~/.asmroner/config.toml`（TOML 格式）\n\n```toml\n[user]\naccount = \"guest\"\npassword = \"guest\"\n\n[downloader]\napi_url = \"\"                # 留空自动获取最快站点\nproxy_url = \"\"              # 支持 http / socks5\nmax_workers = 5\nmax_retries = 3\nsync_data_folder = \"./syncdata\"\nsync_wanted_size = \"200MB\"  # 同步容量限制\nprefer_media = \"all\"        # all | mp3\u003ewav\u003eflac\n\n[limit]\nsync_qps = 2\nsync_jitter_min = 100       # ms\nsync_jitter_max = 500\ndownload_qps = 0.2\ndownload_jitter_min = 2000\ndownload_jitter_max = 5000\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e📋 命令选项速查\u003c/b\u003e\u003c/summary\u003e\n\n| 命令 | 选项 | 说明 |\n|------|------|------|\n| `search` | `-c` | 搜索结果数量（默认 10） |\n| `search download` | `-d`, `-s` | 下载目录、下载数量 |\n| `search export` | `-f`, `-n` | 导出文件名（.csv/.json）、导出数量 |\n| `download` | `-d`, `-n` | 下载目录、hot100 数量 |\n| `sync download` | `-d` | 下载目录 |\n| `sync retry` | `-d` | 失败文件所在目录 |\n| `sync export` | `-s`, `-f` | 状态（failed/success）、导出文件 |\n| `listen` | `-p` | 端口（默认 9999） |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e📁 项目结构\u003c/b\u003e\u003c/summary\u003e\n\n```\nasmroner/\n├── cmd/                # 命令行接口（config/download/search/sync/listen）\n├── internal/\n│   ├── engine/        # 核心下载引擎（限流、重试、并发控制）\n│   ├── logger/        # 结构化日志系统\n│   ├── model/         # 数据模型与查询参数解析\n│   ├── database/      # SQLite 数据库\n│   ├── consts/        # 常量定义\n│   └── utils/         # 工具函数\n├── webui/             # 内嵌 Web 界面（Tailwind + Plyr）\n├── main.go\n└── go.mod\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e🛠 技术栈\u003c/b\u003e\u003c/summary\u003e\n\n| 组件 | 用途 |\n|------|------|\n| Cobra + Viper | CLI 框架 + 配置管理 |\n| GORM + SQLite | 数据持久化 |\n| Resty | HTTP 客户端（支持 HTTP/SOCKS5 代理） |\n| Pond | 并发工作池 |\n| x/time/rate | 令牌桶限流 |\n| Gin | Web 服务 |\n| Tailwind + Plyr | 前端界面 + 音频播放 |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e🔧 常见问题\u003c/b\u003e\u003c/summary\u003e\n\n**配置文件未找到** → 运行 `./asmroner config` 初始化\n\n**下载失败（stream error）** → 程序会自动重试；若仍失败，用 `sync retry` 重试，或查看 `.asmroner-data/download_errors.log`\n\n**Web 界面无法访问** → 确认端口未被占用，尝试 `-p` 指定其他端口\n\n**搜索结果为空** → 检查查询语法，尝试简化条件\n\n\u003c/details\u003e\n\n## 🤝 贡献\n\n欢迎提交 Pull Request！Fork → 新建分支 → 提交更改 → 开启 PR。\n\n## 📄 许可证\n\n本项目采用 MIT 许可证，详情请查看 [LICENSE](/LICENSE) 文件。\n\n## 🙏 致谢\n\n- 特别感谢 [go-asmr-spider](https://github.com/DiheChen/go-asmr-spider)\n- 感谢所有贡献者和用户！\n\n---\n\n**ASMRoner** — 每天晚上都有不同的妹妹陪你入睡 :)\n\n*最后更新：2026 年 2 月*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffireinrain%2Fasmr-downloader","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffireinrain%2Fasmr-downloader","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffireinrain%2Fasmr-downloader/lists"}