# 嘉科實中社團講義(113第2學期)
| 周次 | 日期 | 課程大綱|
| ---- | ---------- |-------|
1|2025/02/21|選定題目安排進度|
2|2025/03/14||
3|2025/03/28||
4|2025/04/11||
5|2025/05/02||
6|2025/05/09||
7|2025/05/23||
8|2025/06/13||
## 2025/02/21
### 今日目標
- 選定題目並安排進度
- 學習工具介紹
- 複習??????
---
### 選定題目
可以從生活上遇到的**問題**發想,並且可以利用程式來**解決問題**。
[表格填寫網址](https://docs.google.com/spreadsheets/d/1gs4jVwC1XibdNe44pFVIRVhtw-muPNlQHU6v66BBIBI/edit?usp=sharing)
#### 範例1
問題: 每次校網有新資訊我都不知道。
解決方法: 當校網有更新就會發送訊息通知我。
#### 範例2
問題: 嘉大附近的UBike都借不到?
解決方法: 寫程式蒐集資料,統計哪個時段和哪個點比較容易借到腳踏車。
#### 範例3
問題: 躺在床上懶得起身關燈,有沒有辦法躺在床上就可以關燈?
解決方法: 關燈神器。參考影片: [How to Control Light Switch with Servo BLYNK #iot](https://www.youtube.com/watch?v=BuUgd0TNlqI)
#### 範例4
問題: 每次點名都浪費很多時間。
解決方法: 可以用刷學生證、人臉辨識來點名。參考影片: [人臉辨識點名系統](https://www.youtube.com/watch?v=pF4dJuI6600)
#### 範例5
問題: Youtube上不想看到特定創作者的影片或使用者的留言。
解決方法: 寫程式過濾掉。
### 進度安排與學習工具介紹
生程式AI工具使用: [Google Gemini](https://gemini.google.com/)
#### 進度安排
我是一名高中生,我的程度是 **[程度]**,我現在有一個 **[問題]**,我目前的想法 **[大概的想法]**,請幫我安排八周的學習計畫。
---
## 2025/04/11
### YouBike分析
#### 實作流程
1. 透過站點名稱查到`station_no`和`updated_at` (用站點資訊API)
2. 透過`station_no`查到站點停車資訊 (用停車資訊API)
3. 將查到的停車資訊寫到`Google Sheet`裡面
4. 設定時間觸發條件(每30分鐘執行),但是只有6:00~18:00內的時間需要紀錄
#### Google Sheet 最後的存法
| 日期 | 時間 | 地點 | YouBike2可用數量 | 電動YouBike可用數量 | 可停空位 |
|------------|-------|------------------|-------------------|---------------------|----------|
| 2025-04-06 | 13:00 | 嘉義大學(新民路) | 3 | 0 | 46|
| 2025-04-06 | 13:00 | 興業新民路口| 10| 0 | 15 |
| 2025-04-06 | 13:05 | 民生公園(杭州五街口) | 6| 1 | 8|
| 2025-04-06 | 13:04 | 新民重慶路口 | 6| 0 | 9|
#### 站點基本資訊 API
* **API 網址:** `https://apis.youbike.com.tw/json/station-min-yb2.json`
* **請求方法:** GET
* **輸入:** 無
* **功能:**
* 提供所有 YouBike 站點的基本資訊。
* 包含站點名稱(`name_tw`)。
* 包含站點編號(`station_no`)。
* 包含站點資訊最後更新時間(`updated_at`)。
* **範例回傳:**
```json
[
{
"country_code": "00",
"area_code": "00",
"area_code_2": "01",
"type": 2,
"status": 1,
"station_no": "500101001",
"name_tw": "捷運科技大樓站",
"district_tw": "大安區",
"address_tw": "復興南路二段235號前",
"name_en": "MRT Technology Bldg. Sta.",
"district_en": "Daan Dist.",
"address_en": "No.235, Sec. 2, Fuxing S. Rd.",
"lat": "25.02605",
"lng": "121.5436",
"updated_at": "2025-04-06 13:03:18",
"time": "2025-04-06 13:03:14"
},
{
"country_code": "00",
"area_code": "00",
"area_code_2": "01",
"type": 2,
"status": 1,
"station_no": "500101002",
"name_tw": "復興南路二段273號前",
"district_tw": "大安區",
"address_tw": "復興南路二段273號西側",
"name_en": "No.273, Sec. 2, Fuxing S. Rd.",
"district_en": "Daan Dist.",
"address_en": "No.273, Sec. 2, Fuxing S. Rd. (West)",
"lat": "25.02565",
"lng": "121.54357",
"updated_at": "2025-04-06 12:58:18",
"time": "2025-04-06 12:58:14"
}
]
```
#### 停車資訊 API
* **API 網址:** `https://apis.youbike.com.tw/tw2/parkingInfo`
* **請求方法:** POST
* **輸入:**
* 請求內容為 JSON 格式。
* 必須包含一個名為 `station_no` 的陣列,陣列中是您想要查詢停車資訊的站點編號。
* 例如:`{"station_no": ["501001001", "501001002"]}`
* **功能:**
* 根據提供的站點編號陣列,回傳這些站點的即時停車資訊。
* 包含總停車格位 (`parking_spaces`).
* 包含可借車位數量 (`available_spaces`).
* 包含 YouBike 2.0 可用數量 (`available_spaces_detail.yb2`).
* 包含 電動 YouBike 可用數量 (`available_spaces_detail.eyb`).
* 包含剩餘空位數量 (`empty_spaces`).
* **範例回傳:**
```json
{
"retCode": 1,
"retMsg": "查詢場站資料成功",
"retVal": {
"data": [
{
"station_no": "501001001",
"parking_spaces": 45,
"available_spaces": 2,
"available_spaces_detail": {
"yb2": 2,
"eyb": 0
},
"empty_spaces": 43,
"forbidden_spaces": 0,
"available_spaces_level": 20
},
{
"station_no": "501001002",
"parking_spaces": 22,
"available_spaces": 8,
"available_spaces_detail": {
"yb2": 7,
"eyb": 1
},
"empty_spaces": 14,
"forbidden_spaces": 0,
"available_spaces_level": 60
}
]
}
}
```
---
## 2025/06/12
## 設定Task Scheduler讓電腦自動執行程式
#### 1.按下 Win健 搜尋Task Scheduler(工作排程器)
* **打Task應該就會看到了**
#### 2.建立任務:
* **點選右側的「建立工作..」**
* **命名這個工作**
* **勾選「使用最高權限執行」**
#### 3.設定觸發條件:
* **選想要的條件(舉例:30分鐘執行一次)**
* **3.1 點選上排 tab「觸發程序」->new**
* **3.2 設定開始時間(隨意)**
* **3.3 在進階設定中「重複工作每隔」選30分鐘 「持續時間」隨意選
#### 4.設定動作:
* **「動作」->new**
* **「動作」選啟動程式**
* **「程式或指令碼」->輸入 cmd **
* **「新增引數」->輸入 /c "C:\完整路徑\run_script.bat" **
#### 5.確認->儲存 就完成了!