@mo7yw4ng/openape 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 MO7YW4NG
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2026 MO7YW4NG
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -12,9 +12,19 @@
12
12
 
13
13
  ## 安裝
14
14
 
15
- 透過 npm 安裝([Node.js v18+](https://nodejs.org/)):
15
+ 透過 npm 安裝為全域指令(推薦,[Node.js](https://nodejs.org/) v18+):
16
16
  ```bash
17
- npm install -g openape
17
+ npm install -g @mo7yw4ng/openape
18
+ ```
19
+
20
+ 或用 npx 單次執行(不需安裝):
21
+ ```bash
22
+ npx @mo7yw4ng/openape --help
23
+ ```
24
+
25
+ 或透過 Deno/JSR 安裝:
26
+ ```bash
27
+ deno install -A -g -n openape jsr:@openape/openape
18
28
  ```
19
29
 
20
30
  ## 核心指令
@@ -32,7 +42,7 @@ openape auth logout # 登出並清除 session
32
42
  openape courses list # 列出所有課程 (支援 --incomplete-only, --level)
33
43
  openape courses info <id> # 顯示特定課程的詳細資訊
34
44
  openape courses progress <id> # 顯示特定課程的進度
35
- openape courses syllabus <id> # 顯示課程大綱
45
+ openape courses syllabus <id> # 顯示課程大綱 (從 CMAP 取得)
36
46
  ```
37
47
 
38
48
  ### 影片 (Videos)
@@ -73,7 +83,7 @@ openape skills install --all # 自動偵測環境並安裝給所有支
73
83
  ```
74
84
  也可以透過 `npx skills` 安裝:
75
85
  ```bash
76
- npx skills add openape/openape
86
+ npx skills add mo7yw4ng/openape
77
87
  ```
78
88
 
79
89
  ## 開發
@@ -94,4 +104,4 @@ deno task compile
94
104
 
95
105
  此專案之版權規範採用 **MIT License** - 至 [LICENSE](LICENSE) 查看更多相關聲明
96
106
 
97
- > **免責聲明**:本工具為非官方開放原始碼專案,與中原大學官方無關。請斟酌使用腳本輔助功能,避免不當操作(如短時間發送大量請求修改系統狀態)而違反學術倫理或導致帳號遭封鎖。
107
+ > **免責聲明**:本工具為非官方開放原始碼專案,與中原大學官方無關。請斟酌使用腳本輔助功能,避免不當操作(如短時間發送大量請求修改系統狀態)而違反學術倫理或導致帳號遭封鎖。
package/esm/deno.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export default {
2
2
  "name": "@openape/openape",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "CLI tool for CYCU i-Learning platform",
5
5
  "license": "MIT",
6
6
  "exports": "./src/index.ts",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mo7yw4ng/openape",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "CLI tool for CYCU i-Learning platform",
5
5
  "keywords": [
6
6
  "ilearning",
@@ -12,7 +12,7 @@
12
12
  ],
13
13
  "repository": {
14
14
  "type": "git",
15
- "url": "git+https://github.com/mo7yw4ng/openape.git"
15
+ "url": "https://github.com/MO7YW4NG/openape"
16
16
  },
17
17
  "license": "MIT",
18
18
  "bugs": {
@@ -25,7 +25,10 @@
25
25
  "node": ">=18.0.0"
26
26
  },
27
27
  "dependencies": {
28
- "@deno/shim-deno": "~0.18.0"
28
+ "@deno/shim-deno": "~0.18.0",
29
+ "commander": "^12.1.0",
30
+ "playwright-core": "^1.48.0",
31
+ "node-html-parser": "^6.1.13"
29
32
  },
30
33
  "devDependencies": {
31
34
  "@types/node": "^20.9.0"
package/script/deno.js CHANGED
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.default = {
4
4
  "name": "@openape/openape",
5
- "version": "1.0.0",
5
+ "version": "1.0.1",
6
6
  "description": "CLI tool for CYCU i-Learning platform",
7
7
  "license": "MIT",
8
8
  "exports": "./src/index.ts",
@@ -1,328 +1,331 @@
1
- ---
2
- name: openape
3
- description: How to use OpenApe CLI — automate CYCU iLearning (Moodle) tasks including course management, video progress tracking, quizzes, materials, grades, forums, announcements, and calendar
4
- ---
5
-
6
- # OpenApe CLI
7
-
8
- Use the `openape` command to access CYCU iLearning (Moodle) platform. OpenApe provides automation for course management, video progress completion, quiz tracking, material downloads, grade viewing, forum discussions, announcements, and calendar events.
9
-
10
- ## Setup
11
-
12
- Install via npm:
13
- ```bash
14
- npm install -g openape
15
- ```
16
-
17
- Or clone and compile:
18
- ```bash
19
- git clone https://github.com/mo7yw4ng/openape && cd openape
20
- deno task compile
21
- # Add dist/OpenApe.exe to your PATH
22
- ```
23
-
24
- If not authenticated, run:
25
- ```bash
26
- openape login
27
- ```
28
- A browser will open for Microsoft OAuth SSO. Complete MFA login manually — no username/password input needed in the terminal.
29
-
30
- Session is saved to `.auth/storage-state.json` and persists between runs. If session expires, run `openape login` again.
31
-
32
- ## Discovering Commands
33
-
34
- Every command supports `--help` for full option details:
35
- ```bash
36
- openape --help
37
- openape courses --help
38
- openape videos complete --help
39
- ```
40
-
41
- Add `--output json` to any command for machine-readable output. Use `--output csv` for spreadsheet format, `--output table` for human-readable tables, or `--output silent` to suppress output.
42
-
43
- ## Course Commands
44
-
45
- ### Listing courses
46
-
47
- ```bash
48
- # List in-progress courses (default)
49
- openape courses list
50
-
51
- # List all courses including past and future
52
- openape courses list --level all
53
-
54
- # List only past courses
55
- openape courses list --level past
56
-
57
- # List only future courses
58
- openape courses list --level future
59
- ```
60
-
61
- Course levels: `in_progress` (default), `past`, `future`, `all`.
62
-
63
- ### Course information
64
-
65
- ```bash
66
- # Get detailed course information
67
- openape courses info <course-id>
68
-
69
- # Get course progress percentage
70
- openape courses progress <course-id>
71
-
72
- # Get course syllabus from CMAP (18-week schedule)
73
- openape courses syllabus <course-id>
74
- ```
75
-
76
- ## Video Commands
77
-
78
- ### Listing videos
79
-
80
- ```bash
81
- # List all videos in a course
82
- openape videos list <course-id>
83
-
84
- # List only incomplete videos (browser mode only)
85
- openape videos list <course-id> --incomplete-only
86
- ```
87
-
88
- ### Completing videos
89
-
90
- ```bash
91
- # Complete all incomplete videos in a course
92
- openape videos complete <course-id>
93
-
94
- # Dry-run: discover videos without completing
95
- openape videos complete <course-id> --dry-run
96
-
97
- # Complete all incomplete videos across all courses
98
- openape videos complete-all
99
-
100
- # Dry-run all courses
101
- openape videos complete-all --dry-run
102
- ```
103
-
104
- **Note:** Video completion forges SuperVideo progress AJAX calls to simulate watching the entire video. The server accepts the progress but completion status may take time to update in the course state.
105
-
106
- ### Downloading videos
107
-
108
- ```bash
109
- # Download all videos from a course
110
- openape videos download <course-id>
111
-
112
- # Download only incomplete videos
113
- openape videos download <course-id> --incomplete-only
114
-
115
- # Specify output directory (default: ./downloads/videos)
116
- openape videos download <course-id> --output-dir ./my-videos
117
- ```
118
-
119
- ## Quiz Commands
120
-
121
- ### Listing quizzes
122
-
123
- ```bash
124
- # List quizzes in a specific course
125
- openape quizzes list <course-id>
126
-
127
- # List all quizzes across all courses
128
- openape quizzes list-all
129
-
130
- # List only in-progress course quizzes
131
- openape quizzes list-all --level in_progress
132
- ```
133
-
134
- ### Opening quizzes
135
-
136
- ```bash
137
- # Open a quiz URL in browser (manual mode)
138
- openape quizzes open <quiz-url>
139
- ```
140
-
141
- ## Material Commands
142
-
143
- ### Listing materials
144
-
145
- ```bash
146
- # List all materials/resources across all courses
147
- openape materials list-all
148
-
149
- # List materials from in-progress courses only
150
- openape materials list-all --level in_progress
151
- ```
152
-
153
- Materials include resources (PDFs, documents) and URLs (external links).
154
-
155
- ### Downloading materials
156
-
157
- ```bash
158
- # Download all materials from a specific course
159
- openape materials download <course-id>
160
-
161
- # Download all materials from all in-progress courses
162
- openape materials download-all
163
-
164
- # Download from all courses (including past)
165
- openape materials download-all --level all
166
-
167
- # Specify output directory (default: ./downloads)
168
- openape materials download-all --output-dir ./my-materials
169
- ```
170
-
171
- ## Grade Commands
172
-
173
- ### Viewing grades
174
-
175
- ```bash
176
- # Show grade summary across all courses
177
- openape grades summary
178
-
179
- # Show detailed grades for a specific course
180
- openape grades course <course-id>
181
- ```
182
-
183
- ## Forum Commands
184
-
185
- ### Listing forums
186
-
187
- ```bash
188
- # List forums from in-progress courses
189
- openape forums list
190
-
191
- # List all forums across all courses
192
- openape forums list-all
193
-
194
- # List forums from a specific course level
195
- openape forums list-all --level past
196
- ```
197
-
198
- ### Reading discussions
199
-
200
- ```bash
201
- # List discussions in a forum (use cmid or instance ID)
202
- openape forums discussions <forum-id>
203
-
204
- # Show posts in a discussion
205
- openape forums posts <discussion-id>
206
- ```
207
-
208
- ## Announcement Commands
209
-
210
- ### Listing announcements
211
-
212
- ```bash
213
- # List all announcements across all courses
214
- openape announcements list-all
215
-
216
- # List only unread announcements
217
- openape announcements list-all --unread-only
218
- ```
219
-
220
- ### Reading announcements
221
-
222
- ```bash
223
- # Read a specific announcement (shows full content)
224
- openape announcements read <announcement-id>
225
- ```
226
-
227
- ## Calendar Commands
228
-
229
- ### Listing events
230
-
231
- ```bash
232
- # List all calendar events
233
- openape calendar events
234
-
235
- # List events after a specific date
236
- openape calendar events --events-after 2026-03-01
237
-
238
- # List events before a specific date
239
- openape calendar events --events-before 2026-06-30
240
-
241
- # List events in a specific course
242
- openape calendar events --course-id <course-id>
243
- ```
244
-
245
- ### Exporting calendar
246
-
247
- ```bash
248
- # Export calendar events to file
249
- openape calendar export
250
-
251
- # Specify output file (default: calendar_events.json)
252
- openape calendar export --output my-calendar.json
253
-
254
- # Export as ICS format for calendar apps
255
- openape calendar export --format ics --output my-calendar.ics
256
- ```
257
-
258
- ## Output Formats
259
-
260
- All commands support `--output` option:
261
- - `json` (default) - Machine-readable JSON
262
- - `csv` - Comma-separated values for spreadsheets
263
- - `table` - Human-readable table format
264
- - `silent` - Suppress output (useful for automation)
265
-
266
- Global options:
267
- - `--verbose` - Enable debug logging
268
- - `--silent` - Suppress all log output (JSON only)
269
- - `--headed` - Run browser in visible mode (for debugging)
270
-
271
- ## Example Workflows
272
-
273
- **Check daily progress:** See what's due and what's incomplete.
274
- ```bash
275
- openape courses list --level in_progress
276
- openape videos list <course-id>
277
- openape quizzes list-all
278
- openape announcements list-all --unread-only
279
- ```
280
-
281
- **Auto-complete videos:** Complete all incomplete videos across courses.
282
- ```bash
283
- # First, dry-run to see what will be completed
284
- openape videos complete-all --dry-run
285
-
286
- # Then actually complete them
287
- openape videos complete-all
288
- ```
289
-
290
- **Download all materials:** Get all course materials for offline study.
291
- ```bash
292
- openape materials download-all --output-dir ./semester-materials
293
- ```
294
-
295
- **Check grades and progress:** See how you're doing in all courses.
296
- ```bash
297
- openape grades summary
298
- openape courses progress <course-id>
299
- openape courses syllabus <course-id>
300
- ```
301
-
302
- **Review discussions:** Catch up on forum activity.
303
- ```bash
304
- openape forums list --level in_progress
305
- openape forums discussions <forum-id>
306
- openape forums posts <discussion-id>
307
- ```
308
-
309
- **Plan your week:** Check upcoming events and deadlines.
310
- ```bash
311
- openape calendar events --events-after 2026-03-21 --events-before 2026-03-28
312
- openape calendar export --format ics --output week.ics
313
- ```
314
-
315
- **Bulk operations:** Complete videos and download materials across all courses.
316
- ```bash
317
- openape videos complete-all
318
- openape materials download-all --level in_progress
319
- ```
320
-
321
- ## Tips
322
-
323
- - Use `--dry-run` with `videos complete` to preview what will be completed
324
- - Use `--level in_progress` (default) to focus on active courses
325
- - Use `--output json` for scripting and automation
326
- - Use `--output table` for human-readable output
327
- - Session persists after login, no need to re-authenticate
328
- - WS API mode is used by default for faster performance; browser mode is fallback
1
+ ---
2
+ name: openape
3
+ description: How to use OpenApe CLI — automate CYCU iLearning (Moodle) tasks including course management, video progress tracking, quizzes, materials, grades, forums, announcements, and calendar
4
+ ---
5
+
6
+ # OpenApe CLI
7
+
8
+ Use the `openape` command to access CYCU iLearning (Moodle) platform. OpenApe provides automation for course management, video progress completion, quiz tracking, material downloads, grade viewing, forum discussions, announcements, and calendar events.
9
+
10
+ ## Setup
11
+
12
+ Install via npm:
13
+ ```bash
14
+ npm install -g @mo7yw4ng/openape
15
+ ```
16
+
17
+ Or run without installing:
18
+ ```bash
19
+ npx @mo7yw4ng/openape --help
20
+ ```
21
+
22
+ Or install via Deno/JSR:
23
+ ```bash
24
+ deno install -A -g -n openape jsr:@openape/openape
25
+ ```
26
+
27
+ If not authenticated, run:
28
+ ```bash
29
+ openape login
30
+ ```
31
+ A browser will open for Microsoft OAuth SSO. Complete MFA login manually — no username/password input needed in the terminal.
32
+
33
+ Session is saved to `.auth/storage-state.json` and persists between runs. If session expires, run `openape login` again.
34
+
35
+ ## Discovering Commands
36
+
37
+ Every command supports `--help` for full option details:
38
+ ```bash
39
+ openape --help
40
+ openape courses --help
41
+ openape videos complete --help
42
+ ```
43
+
44
+ Add `--output json` to any command for machine-readable output. Use `--output csv` for spreadsheet format, `--output table` for human-readable tables, or `--output silent` to suppress output.
45
+
46
+ ## Course Commands
47
+
48
+ ### Listing courses
49
+
50
+ ```bash
51
+ # List in-progress courses (default)
52
+ openape courses list
53
+
54
+ # List all courses including past and future
55
+ openape courses list --level all
56
+
57
+ # List only past courses
58
+ openape courses list --level past
59
+
60
+ # List only future courses
61
+ openape courses list --level future
62
+ ```
63
+
64
+ Course levels: `in_progress` (default), `past`, `future`, `all`.
65
+
66
+ ### Course information
67
+
68
+ ```bash
69
+ # Get detailed course information
70
+ openape courses info <course-id>
71
+
72
+ # Get course progress percentage
73
+ openape courses progress <course-id>
74
+
75
+ # Get course syllabus from CMAP (18-week schedule)
76
+ openape courses syllabus <course-id>
77
+ ```
78
+
79
+ ## Video Commands
80
+
81
+ ### Listing videos
82
+
83
+ ```bash
84
+ # List all videos in a course
85
+ openape videos list <course-id>
86
+
87
+ # List only incomplete videos (browser mode only)
88
+ openape videos list <course-id> --incomplete-only
89
+ ```
90
+
91
+ ### Completing videos
92
+
93
+ ```bash
94
+ # Complete all incomplete videos in a course
95
+ openape videos complete <course-id>
96
+
97
+ # Dry-run: discover videos without completing
98
+ openape videos complete <course-id> --dry-run
99
+
100
+ # Complete all incomplete videos across all courses
101
+ openape videos complete-all
102
+
103
+ # Dry-run all courses
104
+ openape videos complete-all --dry-run
105
+ ```
106
+
107
+ **Note:** Video completion forges SuperVideo progress AJAX calls to simulate watching the entire video. The server accepts the progress but completion status may take time to update in the course state.
108
+
109
+ ### Downloading videos
110
+
111
+ ```bash
112
+ # Download all videos from a course
113
+ openape videos download <course-id>
114
+
115
+ # Download only incomplete videos
116
+ openape videos download <course-id> --incomplete-only
117
+
118
+ # Specify output directory (default: ./downloads/videos)
119
+ openape videos download <course-id> --output-dir ./my-videos
120
+ ```
121
+
122
+ ## Quiz Commands
123
+
124
+ ### Listing quizzes
125
+
126
+ ```bash
127
+ # List quizzes in a specific course
128
+ openape quizzes list <course-id>
129
+
130
+ # List all quizzes across all courses
131
+ openape quizzes list-all
132
+
133
+ # List only in-progress course quizzes
134
+ openape quizzes list-all --level in_progress
135
+ ```
136
+
137
+ ### Opening quizzes
138
+
139
+ ```bash
140
+ # Open a quiz URL in browser (manual mode)
141
+ openape quizzes open <quiz-url>
142
+ ```
143
+
144
+ ## Material Commands
145
+
146
+ ### Listing materials
147
+
148
+ ```bash
149
+ # List all materials/resources across all courses
150
+ openape materials list-all
151
+
152
+ # List materials from in-progress courses only
153
+ openape materials list-all --level in_progress
154
+ ```
155
+
156
+ Materials include resources (PDFs, documents) and URLs (external links).
157
+
158
+ ### Downloading materials
159
+
160
+ ```bash
161
+ # Download all materials from a specific course
162
+ openape materials download <course-id>
163
+
164
+ # Download all materials from all in-progress courses
165
+ openape materials download-all
166
+
167
+ # Download from all courses (including past)
168
+ openape materials download-all --level all
169
+
170
+ # Specify output directory (default: ./downloads)
171
+ openape materials download-all --output-dir ./my-materials
172
+ ```
173
+
174
+ ## Grade Commands
175
+
176
+ ### Viewing grades
177
+
178
+ ```bash
179
+ # Show grade summary across all courses
180
+ openape grades summary
181
+
182
+ # Show detailed grades for a specific course
183
+ openape grades course <course-id>
184
+ ```
185
+
186
+ ## Forum Commands
187
+
188
+ ### Listing forums
189
+
190
+ ```bash
191
+ # List forums from in-progress courses
192
+ openape forums list
193
+
194
+ # List all forums across all courses
195
+ openape forums list-all
196
+
197
+ # List forums from a specific course level
198
+ openape forums list-all --level past
199
+ ```
200
+
201
+ ### Reading discussions
202
+
203
+ ```bash
204
+ # List discussions in a forum (use cmid or instance ID)
205
+ openape forums discussions <forum-id>
206
+
207
+ # Show posts in a discussion
208
+ openape forums posts <discussion-id>
209
+ ```
210
+
211
+ ## Announcement Commands
212
+
213
+ ### Listing announcements
214
+
215
+ ```bash
216
+ # List all announcements across all courses
217
+ openape announcements list-all
218
+
219
+ # List only unread announcements
220
+ openape announcements list-all --unread-only
221
+ ```
222
+
223
+ ### Reading announcements
224
+
225
+ ```bash
226
+ # Read a specific announcement (shows full content)
227
+ openape announcements read <announcement-id>
228
+ ```
229
+
230
+ ## Calendar Commands
231
+
232
+ ### Listing events
233
+
234
+ ```bash
235
+ # List all calendar events
236
+ openape calendar events
237
+
238
+ # List events after a specific date
239
+ openape calendar events --events-after 2026-03-01
240
+
241
+ # List events before a specific date
242
+ openape calendar events --events-before 2026-06-30
243
+
244
+ # List events in a specific course
245
+ openape calendar events --course-id <course-id>
246
+ ```
247
+
248
+ ### Exporting calendar
249
+
250
+ ```bash
251
+ # Export calendar events to file
252
+ openape calendar export
253
+
254
+ # Specify output file (default: calendar_events.json)
255
+ openape calendar export --output my-calendar.json
256
+
257
+ # Export as ICS format for calendar apps
258
+ openape calendar export --format ics --output my-calendar.ics
259
+ ```
260
+
261
+ ## Output Formats
262
+
263
+ All commands support `--output` option:
264
+ - `json` (default) - Machine-readable JSON
265
+ - `csv` - Comma-separated values for spreadsheets
266
+ - `table` - Human-readable table format
267
+ - `silent` - Suppress output (useful for automation)
268
+
269
+ Global options:
270
+ - `--verbose` - Enable debug logging
271
+ - `--silent` - Suppress all log output (JSON only)
272
+ - `--headed` - Run browser in visible mode (for debugging)
273
+
274
+ ## Example Workflows
275
+
276
+ **Check daily progress:** See what's due and what's incomplete.
277
+ ```bash
278
+ openape courses list --level in_progress
279
+ openape videos list <course-id>
280
+ openape quizzes list-all
281
+ openape announcements list-all --unread-only
282
+ ```
283
+
284
+ **Auto-complete videos:** Complete all incomplete videos across courses.
285
+ ```bash
286
+ # First, dry-run to see what will be completed
287
+ openape videos complete-all --dry-run
288
+
289
+ # Then actually complete them
290
+ openape videos complete-all
291
+ ```
292
+
293
+ **Download all materials:** Get all course materials for offline study.
294
+ ```bash
295
+ openape materials download-all --output-dir ./semester-materials
296
+ ```
297
+
298
+ **Check grades and progress:** See how you're doing in all courses.
299
+ ```bash
300
+ openape grades summary
301
+ openape courses progress <course-id>
302
+ openape courses syllabus <course-id>
303
+ ```
304
+
305
+ **Review discussions:** Catch up on forum activity.
306
+ ```bash
307
+ openape forums list --level in_progress
308
+ openape forums discussions <forum-id>
309
+ openape forums posts <discussion-id>
310
+ ```
311
+
312
+ **Plan your week:** Check upcoming events and deadlines.
313
+ ```bash
314
+ openape calendar events --events-after 2026-03-21 --events-before 2026-03-28
315
+ openape calendar export --format ics --output week.ics
316
+ ```
317
+
318
+ **Bulk operations:** Complete videos and download materials across all courses.
319
+ ```bash
320
+ openape videos complete-all
321
+ openape materials download-all --level in_progress
322
+ ```
323
+
324
+ ## Tips
325
+
326
+ - Use `--dry-run` with `videos complete` to preview what will be completed
327
+ - Use `--level in_progress` (default) to focus on active courses
328
+ - Use `--output json` for scripting and automation
329
+ - Use `--output table` for human-readable output
330
+ - Session persists after login, no need to re-authenticate
331
+ - WS API mode is used by default for faster performance; browser mode is fallback