# exercises-dataset **Repository Path**: will-eventually-become-a-cat/exercises-dataset ## Basic Information - **Project Name**: exercises-dataset - **Description**: 此项目为exercises-dataset中文翻译版,供参考及学习;翻译时间:20260725;原项目地址:https://github.com/hasaneyldrm/exercises-dataset.git; - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 4 - **Created**: 2026-07-25 - **Last Updated**: 2026-08-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README
> **器械:** 杠铃 · **目标:** 胸肌 · **辅助:** 肱三头肌、肩部 · **媒体 ID:** `EIeI8Vf`
杠铃卧推是胸部训练的基石,也是"三大力量举"动作之一。平躺于卧推凳上,将装载好杠铃片的下放至胸部,然后爆发性地推回。它同时调动胸肌、肱三头肌和三角肌前束,是上半身推力和胸肌围度发展的最有效动作。
**关键提示:** 出杆前收紧并下沉肩胛骨。双脚平踩地面,下背部自然拱起,保持与肩同宽的握距。控制杠铃下放至中胸位置,通过脚跟发力推起。
### 2 — 杠铃硬拉 · 大腿 / 背部
> **器械:** 杠铃 · **目标:** 臀肌 · **辅助:** 腘绳肌、下背部 · **媒体 ID:** `ila4NZS`
杠铃硬拉被广泛认为是终极全身力量训练动作。它几乎调动后侧链路的每一块主要肌肉——臀肌、腘绳肌和下背部——同时需要上背部、斜方肌和握力的大力参与。正确的脊柱排列和呼吸技巧对于表现和安全性都至关重要。
**关键提示:** 设置时让杠铃位于脚掌中段上方。髋部铰链,握杆位置在腿外侧,收紧核心,在整个拉起过程中保持杠铃贴近小腿。将地面推离,顶部锁定位置收紧臀肌并完全伸展髋部。
### 3 — 杠铃全蹲 · 大腿
> **器械:** 杠铃 · **目标:** 臀肌 · **辅助:** 股四头肌、腘绳肌、小腿、核心 · **媒体 ID:** `qXTaZnJ`
常被称为"动作之王",杠铃全蹲需要整个下肢和核心的协调力量。相比半蹲,蹲至髋部低于膝盖(打破平行)能最大化臀肌和腘绳肌的激活。它是几乎所有力量和增肌训练计划的基础。
**关键提示:** 杠铃置于上斜方肌(高杠)或后三角肌(低杠)。下蹲前收紧核心,膝盖与脚尖方向一致向外推,髋部向后坐,下蹲至大腿超过与地面平行。通过整个脚掌发力站起。
### 4 — 哑铃二头弯举 · 上臂
> **器械:** 哑铃 · **目标:** 二头肌 · **辅助:** 前臂 · **媒体 ID:** `NbVPDMW`
哑铃二头弯举是最广为人知的手臂孤立训练动作。独立训练每侧有助于识别和纠正肢体间的力量不平衡。掌心向上的握姿能在动作顶点最大化二头肌的收缩。
**关键提示:** 站直,肘部固定在身体两侧。弯举时手腕外旋,顶点处挤压,然后控制下放,避免摆动。不要用肩部或下背部借力。
### 5 — 引体向上 · 背部
> **器械:** 自重 · **目标:** 背阔肌 · **辅助:** 二头肌、前臂 · **媒体 ID:** `lBDjFxJ`
引体向上是上半身拉力的黄金标准自重训练动作。它主要发展背阔肌——打造标志性的 V 形身材——同时大量调动二头肌、后三角肌和核心稳定肌群。适用于从初学者(弹力带辅助)到高级(负重)的各个阶段。
**关键提示:** 正手悬垂,握距与肩同宽或稍宽。通过下沉肩胛骨启动背阔肌,然后将胸部拉向杠铃。每组之间完全下放以保持动作幅度。
### 6 — 哑铃侧平举 · 肩部
> **器械:** 哑铃 · **目标:** 三角肌 · **辅助:** 斜方肌 · **媒体 ID:** `DsgkuIt`
哑铃侧平举是打造肩宽的经典孤立训练动作。它直接针对三角肌中束,这是塑造宽肩外观的关键。节奏控制和动作规范远比重量重要。
**关键提示:** 站立,肘部在整个过程中保持微屈。将哑铃向两侧举起,直到手臂与地面平行——不要过高。肘部领先,而非手腕。控制下放以最大化张力时间。
---
## 🚀 使用示例
### Python —— 加载与筛选
```python
import json
with open("data/exercises.json", "r", encoding="utf-8") as f:
exercises = json.load(f)
print(f"Total exercises loaded: {len(exercises)}")
# Filter by category
chest_exercises = [ex for ex in exercises if ex["category"] == "chest"]
print(f"Chest exercises: {len(chest_exercises)}")
# -> Chest exercises: 163
# Filter by equipment
bodyweight = [ex for ex in exercises if ex["equipment"] == "body weight"]
print(f"Bodyweight exercises: {len(bodyweight)}")
# -> Bodyweight exercises: 325
# Get all unique categories
categories = sorted({ex["category"] for ex in exercises})
print("Categories:", categories)
# Access multilingual instructions
ex = exercises[0]
print(ex["instructions"]["en"]) # English
print(ex["instructions"]["es"]) # Spanish
print(ex["instructions"]["it"]) # Italian
print(ex["instructions"]["tr"]) # Turkish
print(ex["instructions"]["ru"]) # Russian
print(ex["instructions"]["zh"]) # Chinese
print(ex["instructions"]["hi"]) # Hindi
print(ex["instructions"]["pl"]) # Polish
print(ex["instructions"]["ko"]) # Korean
print(ex["instructions"]["fr"]) # French
```
### Python —— 使用 Pandas
```python
import json
import pandas as pd
with open("data/exercises.json", "r", encoding="utf-8") as f:
data = json.load(f)
df = pd.DataFrame(data)
# Top categories by exercise count
print(df["category"].value_counts().head(10))
# All barbell exercises targeting upper legs
barbell_quads = df[(df["equipment"] == "barbell") & (df["category"] == "upper legs")]
print(barbell_quads[["name", "target", "equipment"]])
```
### JavaScript / Node.js
```js
const exercises = require("./data/exercises.json");
console.log(`Total exercises: ${exercises.length}`);
// Bodyweight exercises only
const bodyweight = exercises.filter(ex => ex.equipment === "body weight");
console.log(`Bodyweight exercises: ${bodyweight.length}`);
// -> Bodyweight exercises: 325
// Group exercises by category
const byCategory = exercises.reduce((acc, ex) => {
acc[ex.category] = (acc[ex.category] || []);
acc[ex.category].push(ex);
return acc;
}, {});
// Access multilingual instructions
const ex = exercises[0];
console.log(ex.instructions.en); // English
console.log(ex.instructions.es); // Spanish
console.log(ex.instructions.it); // Italian
console.log(ex.instructions.tr); // Turkish
console.log(ex.instructions.ru); // Russian
console.log(ex.instructions.zh); // Chinese
console.log(ex.instructions.hi); // Hindi
console.log(ex.instructions.pl); // Polish
console.log(ex.instructions.ko); // Korean
console.log(ex.instructions.fr); // French
```
### TypeScript —— 类型安全使用
```typescript
interface Exercise {
id: string;
name: string;
name_zh?: string;
category: string;
body_part: string;
equipment: string;
instructions: {
en: string; es: string; it: string; tr: string;
ru: string; zh: string; hi: string; pl: string;
ko: string; fr: string;
};
instruction_steps: {
en: string[]; es: string[]; it: string[]; tr: string[];
ru: string[]; zh: string[]; hi: string[]; pl: string[];
ko: string[]; fr: string[];
};
muscle_group: string;
secondary_muscles: string[];
target: string;
media_id: string;
image: string;
gif_url: string;
attribution: string;
created_at: string;
}
import exercises from "./data/exercises.json";
const data = exercises as Exercise[];
const randomWorkout: Exercise[] = data.slice(0, 6);
console.log("First 6 exercises:", randomWorkout.map(e => e.name));
```
---
## 📄 许可与使用
本仓库是一个**开发者设置向导和结构化练习数据集**——包含练习元数据、多语言指令翻译和 180×180 练习媒体。
- **代码、工具、数据集结构和指令文本**以 [MIT 许可证](LICENSE) 发布。
- **练习媒体(图片和 GIF)© [Gym visual](https://gymvisual.com/)**,经许可在此以 180×180 分辨率重新分发——参见 [`NOTICE.md`](NOTICE.md) 和 [`LICENSE`](LICENSE) 中的媒体例外条款。保留 `© Gym visual — https://gymvisual.com/` 署名。重复使用受 [Gym visual 的使用条款与条件](https://gymvisual.com/content/3-terms-and-conditions-of-use) 约束;在重用媒体前,请前往该处获取你自己的许可证。
- 本仓库**不**声明对底层练习内容或媒体的所有权。