{"id":24619311,"url":"https://github.com/14790897/coingecko-stable-coinlist","last_synced_at":"2025-03-18T22:41:48.862Z","repository":{"id":273967038,"uuid":"921478503","full_name":"14790897/coingecko-stable-coinlist","owner":"14790897","description":"coingecko stable coinlist","archived":false,"fork":false,"pushed_at":"2025-02-14T01:31:10.000Z","size":31,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-14T02:35:50.178Z","etag":null,"topics":["cloudflare","coingecko","coingecko-api","worker"],"latest_commit_sha":null,"homepage":"https://coin.14790897.xyz/","language":"TypeScript","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/14790897.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2025-01-24T02:47:10.000Z","updated_at":"2025-02-14T01:31:12.000Z","dependencies_parsed_at":null,"dependency_job_id":"7a4b17b4-fd7e-47df-a7c7-49de5b4c2907","html_url":"https://github.com/14790897/coingecko-stable-coinlist","commit_stats":null,"previous_names":["14790897/coingecko-stable-coinlist"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/14790897%2Fcoingecko-stable-coinlist","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/14790897%2Fcoingecko-stable-coinlist/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/14790897%2Fcoingecko-stable-coinlist/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/14790897%2Fcoingecko-stable-coinlist/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/14790897","download_url":"https://codeload.github.com/14790897/coingecko-stable-coinlist/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244320322,"owners_count":20434090,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["cloudflare","coingecko","coingecko-api","worker"],"created_at":"2025-01-25T00:28:14.534Z","updated_at":"2025-03-18T22:41:48.857Z","avatar_url":"https://github.com/14790897.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# **稳定代币市值交集筛选项目**\n\n## **项目简介**\n\n这是一个基于 **Cloudflare Workers** 和 **KV 存储** 构建的服务，用于获取相对稳定且具有前景的代币。用户可以通过指定天数，使用该服务查询多个日期内市值排名的代币交集，筛选出在指定日期范围内市值维持高水平（代表稳定性和市场信任）的代币。\n示例：https://coin.14790897.xyz/?days=5\n\n### **核心功能**\n\n1. **市值交集筛选**：\n\n   - 从 CoinGecko 获取每日市值前 500 的代币列表。\n   - 根据用户指定的日期范围，筛选出在所有日期中均存在的代币。\n   - 返回符合条件的代币及其市值。\n\n2. **结果格式化**：\n\n   - 返回的代币通过 `\"symbol/USDT\"` 的格式化输出，方便前端直接使用。\n   - 附带 `refresh_period` 字段，标识数据刷新周期。\n\n3. **高效存储与查询**：\n   - 借助 Cloudflare Workers 的 KV 存储，每天更新并存储代币数据，实现低延迟查询。\n\n---\n\n## **技术栈**\n\n### **主要技术**\n\n- **Cloudflare Workers**: 作为服务器运行环境，用于处理 API 请求、逻辑计算和数据查询。\n- **Cloudflare KV**: 用于存储每日代币市值数据，支持快速读写操作。\n- **CoinGecko API**: 用于获取每日市值前 500 的代币数据。\n- **TypeScript**: 增强代码的类型安全性，避免运行时错误。\n\n### **API 数据来源**\n\n- [CoinGecko API](https://www.coingecko.com/api/documentations/v3)：提供实时加密货币市场数据，包括市值、价格、交易量等。\n\n---\n\n## **项目结构**\n\n```\nproject-root/\n├── src/\n│   ├── index.ts       // CF Worker 主逻辑\n├── wrangler.json      // Cloudflare Workers 配置文件\n├── package.json       // 项目依赖\n├── tsconfig.json      // TypeScript 配置文件\n└── README.md          // 项目文档\n```\n\n---\n\n## **功能实现**\n\n### **1. 定时抓取每日市值数据**\n\n- 使用 CF Worker 的定时触发功能，调用 CoinGecko API 获取每日市值前 500 的代币，并存储到 KV 中。\n- 数据格式如下：\n  ```json\n  {\n    \"date\": \"2025-01-01\",\n    \"tokens\": [\n      { \"id\": \"bitcoin\", \"symbol\": \"btc\", \"market_cap\": 600000000000 },\n      { \"id\": \"ethereum\", \"symbol\": \"eth\", \"market_cap\": 300000000000 },\n      ...\n    ]\n  }\n  ```\n\n### **2. 用户指定天数，获取代币市值交集**\n\n- 用户可以指定查询日期范围（例如最近 7 天），服务会返回在这段时间内，市值排名稳定在前 500 的代币。\n- 返回格式化的代币列表，包含代币/USDT 交易对和数据刷新周期：\n  ```json\n  {\n  \t\"pairs\": [\"BTC/USDT\", \"ETH/USDT\", \"DOGE/USDT\"],\n  \t\"refresh_period\": 900\n  }\n  ```\n\n### **3. 数据存储和查询效率**\n\n- 所有代币数据在 KV 中以日期键存储（如 `2025-01-01`），支持快速查询。\n- 使用内存计算市值交集，结合 KV 提高查询性能。\n\n---\n\n## **部署与运行**\n\n### **1. 配置 Cloudflare Workers**\n\n#### 安装 Wrangler CLI\n\n确保你已安装 Wrangler CLI 用于管理 Cloudflare Workers：\n\n```bash\nnpm install -g wrangler\n```\n\n#### 配置 `wrangler.json`\n\n在项目根目录的 `wrangler.json` 中添加 KV 命名空间配置（需要在cloudflare创建名为coingecko的KV，并获取id填入配置）：\n\n```json\n{\n\t\"$schema\": \"node_modules/wrangler/config-schema.json\",\n\t\"name\": \"coingecko-stable-coinlist\",\n\t\"main\": \"src/index.ts\",\n\t\"compatibility_date\": \"2025-01-21\",\n\t\"observability\": {\n\t\t\"enabled\": true\n\t},\n\t\"triggers\": {\n\t\t\"crons\": [\"0 * * * *\"]\n\t},\n\t\"kv_namespaces\": [\n\t\t{\n\t\t\t\"binding\": \"coingecko\",\n\t\t\t\"id\": \"343d9187f9e14d85bbb5df1320078716\"\n\t\t}\n\t],\n\t\"compatibility_flags\": [\"nodejs_compat\"]\n}\n```\n\n---\n\n### **2. 安装依赖**\n\n```bash\nnpm install\n```\n\n---\n\n### **4. 启动开发服务器**\n\n在本地运行开发服务器：\n\n```bash\nnpm run dev\n```\n\n---\n\n### **5. 部署到生产环境**\n\n确认项目配置无误后，部署到 Cloudflare：\n\n```bash\nnpm run deploy\n```\n\n---\n\n## **使用说明**\n\n### **定时任务**\n\n通过 Cloudflare Workers 配置定时任务，每天调用 CoinGecko API 并更新 KV 数据。\n在 `wrangler.json` 中配置 Cron 表达式：\n\n```json\n\"triggers\": {\n\t\t\"crons\": [\"0 * * * *\"]\n\t} # 每天零点触发\n```\n\n### **API 请求**\n\n#### **获取最近 7 天的稳定代币交集**\n\n请求示例：\n\n```http\nGET https://your-worker-url.com/intersection?days=7\u0026limit=50\n```\n\n- **参数说明**：\n  - `days`：指定查询的天数（必须）。\n  - `limit`：返回代币数量的上限（可选，默认为全部）。\n\n返回示例：\n\n```json\n{\n\t\"pairs\": [\"BTC/USDT\", \"ETH/USDT\", \"DOGE/USDT\"],\n\t\"refresh_period\": 900\n}\n```\n\n---\n\n## **未来扩展**\n\n1. **多货币支持**：\n\n   - 支持用户自定义目标货币（例如 `BTC/EUR`、`ETH/USD`）。\n\n2. **更多过滤条件**：\n\n   - 根据用户需求加入交易量、稳定性等筛选条件。\n\n3. **性能优化**：\n   - 缓存结果数据，减少计算压力。\n\n---\n\n## **贡献指南**\n\n欢迎贡献代码！请按照以下步骤提交 Pull Request：\n\n1. Fork 仓库。\n2. 创建新分支并提交改动：\n   ```bash\n   git checkout -b feature/new-feature\n   ```\n3. 提交 Pull Request。\n\n---\n\n## **许可证**\n\n本项目遵循 **MIT 许可证**，详情请参见 LICENSE 文件。\n\n---\n\n## **联系方式**\n\n如果你对项目有任何问题或建议，欢迎通过以下方式联系我：\n\n- **邮箱**：liuweiqing147@gmail.com\n- **GitHub Issues**：在本仓库提交问题\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F14790897%2Fcoingecko-stable-coinlist","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F14790897%2Fcoingecko-stable-coinlist","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F14790897%2Fcoingecko-stable-coinlist/lists"}