{"id":37126898,"url":"https://github.com/njzydark/aragorn","last_synced_at":"2026-01-14T14:46:54.254Z","repository":{"id":37193173,"uuid":"250133896","full_name":"njzydark/Aragorn","owner":"njzydark","description":"A tool to upload or manage files by object storage sdk","archived":true,"fork":false,"pushed_at":"2022-06-17T00:28:23.000Z","size":3978,"stargazers_count":288,"open_issues_count":10,"forks_count":35,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-07-07T04:48:41.043Z","etag":null,"topics":["aliyun-oss","electron","github","qiniu","react","smms","tencent-cos","ucloud","upload-manager","upyun"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/njzydark.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}},"created_at":"2020-03-26T01:41:26.000Z","updated_at":"2024-06-19T01:53:25.000Z","dependencies_parsed_at":"2022-08-24T15:41:32.892Z","dependency_job_id":null,"html_url":"https://github.com/njzydark/Aragorn","commit_stats":null,"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/njzydark/Aragorn","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/njzydark%2FAragorn","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/njzydark%2FAragorn/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/njzydark%2FAragorn/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/njzydark%2FAragorn/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/njzydark","download_url":"https://codeload.github.com/njzydark/Aragorn/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/njzydark%2FAragorn/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28423988,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T13:30:50.153Z","status":"ssl_error","status_checked_at":"2026-01-14T13:29:08.907Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["aliyun-oss","electron","github","qiniu","react","smms","tencent-cos","ucloud","upload-manager","upyun"],"created_at":"2026-01-14T14:46:53.537Z","updated_at":"2026-01-14T14:46:54.249Z","avatar_url":"https://github.com/njzydark.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Aragorn\n\n[![GitHub release (latest by date including pre-releases](https://img.shields.io/github/v/release/njzydark/Aragorn?include_prereleases)](https://github.com/njzydark/Aragorn/releases/latest)\n[![Build](https://github.com/njzydark/Aragorn/workflows/Build/release/badge.svg)](https://github.com/njzydark/Aragorn/actions?query=workflow%3ABuild%2Frelease)\n[![GitHub](https://img.shields.io/github/license/njzydark/Aragorn)](https://github.com/njzydark/Aragorn/blob/master/LICENSE)\n[![lerna](https://img.shields.io/badge/maintained%20with-lerna-cc00ff.svg?style=flat-square)](https://lerna.js.org/)\n\n一款基于 `Electron + React + TS` 开发的对象存储管理工具，同时也可作为图床上传工具使用，支持 macOS 和 Windows\n\n**PS:** 功能实现主要依靠相关厂商的对象存储 SDK，但是也可自行扩展，只要按规范实现软件的[上传器接口](./packages/aragorn-types/src/uploader.ts)即可\n\n![aragorn](assets/aragorn.png)\n\n## 特性\n\n- 同一上传器支持多个配置\n- 文件上传失败可以在控制台重新上传\n- 支持利用魔法变量自定义文件命名格式\n- 支持自定义上传快捷键\n- 通过快捷键不仅可以上传粘贴板中的截图，还可以批量上传在文件管理器中批量选择复制的文件\n- 提供 CLI 和上传 API 接口，方便第三方软件调用，例如：Typora、MWeb\n- CLI 支持模式自动切换，未开启软件的情况下也可以正常使用\n- 支持在 Finder 中通过鼠标右键菜单上传\n- 通过内置的自定义上传器可以自定义上传 API\n- 支持基础的文件管理功能：浏览、上传、下载、删除、创建目录\n- 丰富的设置项：代理、自动复制、格式转换等\n\n## 对象存储及相关图床支持情况\n\n|        | 上传功能      | 文件管理功能 |\n| ------ | ------------- | ------------ |\n| 七牛云 | ✅            | ✅           |\n| 又拍云 | ✅            | ✅           |\n| 阿里云 | ✅            | ✅           |\n| 腾讯云 | ✅            | ✅           |\n| UCloud | ✅            |              |\n| Github | ✅            | ✅           |\n| Gitee  | ✅            | ✅           |\n| SM.MS  | ✅ 自定义实现 |              |\n\n**PS** 软件还在开发中，后续会支持更多对象存储厂商及图床\n\n## WebServer\n\n可在设置中开启，默认关闭\n\n- 地址: \u003chttp://127.0.0.1:7777\u003e\n- POST 请求格式无论是 `form-data` 还是 `json`，文件字段名都为 `files`\n\n### 示例\n\nform-data 请求\n\n```bash\ncurl http://127.0.0.1:7777 -X POST -H \"Content-Type: multipart/form-data\" -F \"files=@文件绝对路径\"\n```\n\njson 请求\n\n```bash\ncurl http://127.0.0.1:7777 -X POST -H \"Content-Type: application/json\" -d '{\"files\": [\"文件绝对路径\"]}'\n```\n\n响应\n\n```json\n{\n  \"url\": \"urls中的第一个\",\n  \"urls\": [\"文件地址\"]\n}\n```\n\n## CLI\n\nCLI 可在设置中安装，安装后可通过 `aragorn` 或 `/usr/local/bin/aragorn` 使用\n\n```bash\n     _                                        ____ _ _\n    / \\   _ __ __ _  __ _  ___  _ __ _ __    / ___| (_)\n   / _ \\ | '__/ _` |/ _` |/ _ \\| '__| '_ \\  | |   | | |\n  / ___ \\| | | (_| | (_| | (_) | |  | | | | | |___| | |\n /_/   \\_\\_|  \\__,_|\\__, |\\___/|_|  |_| |_|  \\____|_|_|\n                    |___/\n\nA cli for aragorn to upload files\n\nUsage: aragorn upload [options] \u003cimagesPath...\u003e\n\nupload files\n\nOptions:\n  -m,--mode \u003cmode\u003e                             upload mode, cli or app (default: \"cli\")\n  -p,--port \u003cport\u003e                             app webserver port (default: \"7777\")\n  --uploaderProfileName [uploaderProfileName]  uploader profile name\n  --uploaderProfileId [uploaderProfileId]      uploader profile id\n  -h, --help                                   display help for command\n```\n\n如果配合 `Typora` 使用，在 `Typora` 的图像设置中配置以下自定义指令即可：\n\n```bash\n/usr/local/bin/aragorn upload\n```\n\n**PS** 如果开启 WebServer ，那么 CLI 也会通过 `WebServer` 提供的接口进行上传，未开启状态 CLI 会通过自身内置的方式进行上传，所以即使软件未开启也可以正常使用\n\n## 开发\n\n### 克隆代码\n\n```bash\ngit clone https://github.com/njzydark/Aragorn.git\n```\n\n### 安装依赖\n\n不需要执行 `npm i` 直接执行以下指令即可\n\n```bash\nnpm run setup\n```\n\n#### 注意\n\n1. 项目是使用 [lerna](https://lerna.js.org/) 进行管理的，根目录的 `package.json` 只是公共开发依赖，不包含项目所有依赖\n\n   `npm run setup` 会把所有 `packages` 里的依赖全部装上\n\n2. 由于众所周知的网络原因，依赖可能无法正常安装，尤其是 `Electron`，这里推荐使用淘宝镜像源来解决此问题，在项目根目录创建 `.npmrc` 文件，配置以下内容：\n\n   ```txt\n   registry=https://registry.npm.taobao.org\n   ELECTRON_MIRROR=https://npm.taobao.org/mirrors/electron/\n   ELECTRON_BUILDER_BINARIES_MIRROR=http://npm.taobao.org/mirrors/electron-builder-binaries/\n   ```\n\n### 开发模式\n\n方式一\n\n```bash\nnpm run app:dev\n# 新开命令行窗口执行\nnpm run app:start\n```\n\n方式二（推荐）\n\n在 vscode 中的 debug 窗口中执行 `App Debug`\n\n### 打包\n\n```bash\nnpm run app:build\nnpm run app:dist\n```\n\n## TODO\n\n- [x] 托盘拖拽上传\n- [x] 手动选择上传\n- [x] 文件名自定义\n- [x] 使用对象存储 SDK 或相关 API 进行上传\n  - [x] 七牛云\n  - [x] 又拍云\n  - [x] UCloud\n  - [x] 阿里云\n  - [x] 腾讯云\n  - [x] Github\n- [x] 利用对象存储 SDK 或相关 API 进行文件管理\n  - [x] 阿里云\n  - [x] 又拍云\n  - [x] 七牛云\n  - [x] 腾讯云\n  - [x] Github\n- [x] 自定义上传 API\n- [x] 历史记录\n- [x] 基本设置\n  - [x] 通知开关\n  - [x] 声音开关\n  - [x] 自动复制\n  - [x] URL 格式转换\n  - [x] 自动更新\n  - [x] http 代理\n- [ ] 上传进度\n\n## License\n\n[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fnjzydark%2FAragorn.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2Fnjzydark%2FAragorn?ref=badge_large)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnjzydark%2Faragorn","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnjzydark%2Faragorn","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnjzydark%2Faragorn/lists"}