公司动态
健身API开发者的数据难题:Exercises Dataset 1324个动作5分钟上手
健身API开发者的数据难题Exercises Dataset 1324个动作5分钟上手【免费下载链接】exercises-dataset1,324-exercise fitness dataset — animation GIFs, 180×180 thumbnails, muscle-group equipment data, and step-by-step instructions in 6 languages. The exercise data layer behind the LogPress app.项目地址: https://gitcode.com/GitHub_Trending/ex/exercises-dataset做健身应用的开发者十有八九会卡在同一个环节动作数据。Exercises Dataset 是一个收录了 1324 个健身动作的开源数据集自带动画 GIF、肌肉与器械分类以及中、英、西、意、土、俄 6 种语言的逐步动作指导让后端开发可以跳过数据收集直接进入业务逻辑。本文会从一个真实的需求出发带你走完看数据 → 起接口 → 进数据库 → 出训练计划的全过程。让项目停摆的往往不是逻辑而是数据去年我想做一个居家健身小程序功能很简单用户选一个部位我给他推荐动作。听起来不难对吧真正动手才发现坑全在数据上。翻遍全网英文动作库倒是不少可要么接口要付费要么数据是抓来的动作名、器械名五花八门对不齐想做成多语言版本还得自己找人翻译几百条动作要领更别提每个动作还要配图、配动图——光想到这个工作量我差点就放弃了。如果你也经历过这种代码还没写先被数据劝退的滋味Exercises Dataset 就是为你准备的。它把健身应用最吃力的那部分——结构化的动作数据、多语言文案、配套媒体文件——一次性打包好了。先看看口袋里有什么一条动作记录能拆出几层信息项目根目录下的data/exercises.json是唯一的核心数据文件一个 JSON 数组装了全部 1324 条动作记录。随便挑第一条长这样{ id: 0001, name: 3/4 sit-up, category: waist, body_part: waist, equipment: body weight, instructions: { en: Lie flat on your back ..., es: Túmbate sobre tu espalda ..., it: Sdraiati sulla schiena ..., tr: Sırt üstü yatın ..., ru: Лягте на спину ..., zh: 平躺膝盖弯曲双脚平放在地上 ... }, instruction_steps: { zh: [平躺膝盖弯曲双脚平放在地上。, 将双手放在脑后肘部朝外。, ...] }, muscle_group: hip flexors, secondary_muscles: [hip flexors, lower back], target: abs, image: images/0001-2gPfomN.jpg, gif_url: videos/0001-2gPfomN.gif }把字段拆开看信息量比想象中大分类三件套category/body_part身体部位、target主练肌群、muscle_group与secondary_muscles协同肌群做筛选和推荐时直接拿来当索引。6 语言说明instructions下挂着 en、es、it、tr、ru、zh 六份完整文案中文也在其中做国际化产品不用再逐条翻译。分步拆解instruction_steps把一段说明拆成了步骤数组App 里可以按步骤逐条展示体验比一大段文字好得多——这是很多同类数据集没有的细节。媒体路径image指向 180×180 缩略图gif_url指向同尺寸动画1324 个动作每个都配齐了前端直接引用本地路径即可。别急着写代码双击就能用的动作浏览器写接口之前建议你先花两分钟把数据看一遍建立直觉。仓库里自带了一个纯前端的浏览工具index.html不需要装任何依赖双击用浏览器打开就行。它干了几件事顶部实时搜索框可以跨全部 1324 条记录检索动作名左侧可以按身体部位、器械、目标肌肉做组合筛选往下滚是无限流式的卡片网格点开任意一张卡就能看到该动作的缩略图、动图以及 6 种语言下各自的动作要领。对产品经理、设计师乃至想先验证想法的你来说这相当于一个零成本的数据预览台——数据是否够用、分类是否合理扫一眼就有答案不必等后端写完再返工。最省事的搭法零依赖跑起一个健身 API确认数据没问题就可以动手了。这里给一个纯净版方案只用 Python 标准库不装 Flask、不装任何第三方包把文件保存成server.pypython3 server.py就能跑起来。# server.py —— 零依赖健身 API import json from http.server import BaseHTTPRequestHandler, HTTPServer from urllib.parse import urlparse, unquote # 启动时一次性加载全部数据避免每次请求都读文件 with open(data/exercises.json, encodingutf-8) as f: EXERCISES json.load(f) class Handler(BaseHTTPRequestHandler): def do_GET(self): path unquote(urlparse(self.path).path) # 路由一返回全部动作/api/exercises if path /api/exercises: body json.dumps(EXERCISES, ensure_asciiFalse).encode(utf-8) # 路由二按身体部位筛选/api/exercises/chest elif path.startswith(/api/exercises/): category path.split(/)[-1] matched [e for e in EXERCISES if e[category] category] body json.dumps(matched, ensure_asciiFalse).encode(utf-8) # 路由三按 id 取指定语言说明/api/instructions/0001/zh elif path.startswith(/api/instructions/): _, _, ex_id, lang path.split(/) ex next((e for e in EXERCISES if e[id] ex_id), None) if not ex or lang not in ex[instructions]: self.send_response(404); self.end_headers(); return body json.dumps( {name: ex[name], instruction: ex[instructions][lang]}, ensure_asciiFalse).encode(utf-8) else: self.send_response(404); self.end_headers(); return # 统一返回 JSON注意 UTF-8中文才不会乱码 self.send_response(200) self.send_header(Content-Type, application/json; charsetutf-8) self.send_header(Content-Length, str(len(body))) self.end_headers() self.wfile.write(body) if __name__ __main__: HTTPServer((0.0.0.0, 8000), Handler).serve_forever()跑起来后浏览器里可以直接验证三个接口http://localhost:8000/api/exercises—— 全量数据http://localhost:8000/api/exercises/chest—— 只看胸部动作163 条http://localhost:8000/api/instructions/0001/zh—— 中文动作要领ensure_asciiFalse这行是关键不然中文会被转义成\uXXXX接口就没法直接用了。想上生产把 1324 条数据一键倒进数据库接口验证通过后下一步通常是落库。手动写 1324 条 INSERT 语句不现实好在仓库里的setup.html就是干这个的。这是一个开发者向导页面同样双击即可打开。里面按数据库类型分了四个页签SQL Server、PostgreSQL、MySQL、SQLite。选好类型、填上你要的字段点击生成浏览器会直接产出一份包含建表语句和全部 1324 条 INSERT 的.sql文件下载后导入你的数据库即可。以 SQLite 为例生成的建表语句大致是这个形态CREATE TABLE exercises ( id VARCHAR(10) PRIMARY KEY, -- 动作唯一编号 name VARCHAR(255), -- 动作名称 category VARCHAR(50), -- 身体部位分类 equipment VARCHAR(50), -- 所需器械 instructions_en TEXT, -- 英文说明 instructions_zh TEXT, -- 中文说明 muscle_group VARCHAR(100), -- 协同肌群 target VARCHAR(100), -- 目标肌肉 image VARCHAR(255), -- 缩略图路径 gif_url VARCHAR(255) -- 动图路径 );多语言说明在 JSON 里是嵌套对象在关系库里拍平成instructions_en、instructions_zh这样的独立列即可setup.html已经帮你处理好了这一层映射。导入完成后查询、分页、加索引都交给数据库性能不再是问题。让 AI 替你写后端一条提示词换一个完整 REST API如果你连接口都不想手写setup.html里还藏着一个更偷懒的选项Ask Your LLM模块。它会根据你的选择框架 数据库拼出一段结构化的提示词你只需要把它粘贴给 ChatGPT、Claude、Gemini 之类的模型就能一次生成一个可上生产的 REST API。支持的组合覆盖了主流技术栈后端框架Express.js、FastAPI、ASP.NET Core、Spring Boot、Laravel、Gin配套数据库就是前面那四种SQL Server / PostgreSQL / MySQL / SQLite生成完别忘了两件事一是把数据从 JSON 导入到你选的数据库二是让 AI 参照data/exercises.json的真实字段来定义模型接口才会和你本地数据对得上。这套数据到底够不够用规模与分布速览决定要不要用它之前先看分布。1324 个动作按身体部位拆开是这样的身体部位速览上臂 292 · 大腿 227 · 背部 203 · 腰部 169胸部 163 · 肩部 143 · 小腿 59 · 前臂 37有氧 29 · 颈部 2器械维度同样值得留意因为它直接决定了用户在家能不能练器械分布速览自重 325 · 哑铃 294 · 绳索 157 · 杠铃 154固定器械 81 · 弹力带 54 · 史密斯机 48 · 壶铃 41负重 36 · 健身球 28 · EZ 杠铃 23 · 其他 83两组数字放在一起看两个结论很直观全身各部位都有覆盖没有明显短板约四分之一的动作不需要任何器械做居家训练零器械计划这类场景素材完全够用。收个尾写一个能出训练计划的生成器最后把前面用到的能力串起来写一个真正能用的东西随机训练计划生成器。这次换成 Node.js 版本和前面的 Python 接口正好凑齐两种语言。// workout.js —— 根据部位与器械随机生成训练计划 const exercises require(./data/exercises.json); // 筛选 洗牌 截取前 n 条 function buildPlan(category, equipment null, count 5) { const pool exercises.filter(ex ex.category category (!equipment || ex.equipment equipment) ); for (let i pool.length - 1; i 0; i--) { const j Math.floor(Math.random() * (i 1)); // Fisher-Yates 洗牌 [pool[i], pool[j]] [pool[j], pool[i]]; } return pool.slice(0, count).map(ex ({ name: ex.name, target: ex.target, equipment: ex.equipment, zh: ex.instructions.zh, // 直接带上中文要领App 端免翻译 })); } // 生成一套 4 个动作的杠铃练腿计划 const plan buildPlan(upper legs, barbell, 4); console.log(JSON.stringify(plan, null, 2));运行node workout.js输出的就是一份带动作名、目标肌群和中文要领的训练计划。往这个思路上再走一步就能扩展出按用户已有器械过滤按目标肌肉打分排序这类更聪明的推荐逻辑——数据字段都现成差的只是你的想象力。动图与图片能用吗先看清楚版权红线有一件事必须在动手前说清楚。这个仓库的代码与结构化数据动作名、分类、多语言文案遵循 MIT 协议可以放心商用但images/ 和 videos/ 下的全部媒体文件归 Gym visual 所有属于授权转发使用时有两条硬性约束只能在180×180 分辨率下使用不得放大、二次加工后分发任何使用场景都必须保留© Gym visual署名每条 JSON 记录里的attribution字段就是给你预留的版权声明位。如果你打算把动图用在商业 App 里建议先查阅 Gym visual 的使用条款必要时直接向其获取授权。媒体只是锦上添花真正可自由使用的动作数据 多语言文案已经足够撑起一个产品的核心功能了。读完这篇文章你的下一步五分钟很短但足够你做完三件事把仓库克隆下来git clone https://gitcode.com/GitHub_Trending/ex/exercises-dataset用浏览器打开index.html把 1324 个动作翻一遍再把上面的零依赖 API 跑起来试试。如果你正好在做一个健身类产品这里有几个可以立刻上手的方向用setup.html生成 SQL把数据导入数据库先跑通查动作这条主链路用 Ask Your LLM 的提示词生成一个带筛选接口的后端前端直接对接基于target、equipment字段做一个根据我的器械推荐动作的小功能验证你的产品想法。数据是健身应用的底座而 Exercices Dataset 把这块底座打磨好了。剩下的就是把你的业务逻辑盖上去——动手吧。【免费下载链接】exercises-dataset1,324-exercise fitness dataset — animation GIFs, 180×180 thumbnails, muscle-group equipment data, and step-by-step instructions in 6 languages. The exercise data layer behind the LogPress app.项目地址: https://gitcode.com/GitHub_Trending/ex/exercises-dataset创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考