-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgdg_hk.py
More file actions
42 lines (38 loc) · 1.81 KB
/
gdg_hk.py
File metadata and controls
42 lines (38 loc) · 1.81 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import requests
from datetime import datetime, timedelta
from common_utils import CommonUtils
# 過濾掉 title 包含這些關鍵字的活動
FILTER_KEYWORDS = ["flutter"]
def fetch_events():
url = "https://gdg.community.dev/api/event_slim/for_chapter/660/?page_size=4&status=Live&include_cohosted_events=true&visible_on_parent_chapter_only=true&order=start_date&fields=title,start_date,event_type_title,cropped_picture_url,cropped_banner_url,url,cohost_registration_url,description,description_short&page=1"
response = requests.get(url)
if response.status_code != 200:
print(f"Request error: {response.status_code}")
return
data = response.json()
events = data.get("results", [])
for event in events:
title = event.get("title", "")
# 過濾掉 title 包含 filter 關鍵字的活動
if any(keyword.lower() in title.lower() for keyword in FILTER_KEYWORDS):
continue
start_date_str = event.get("start_date", "")
event_type = event.get("event_type_title", "")
url_event = event.get("url", "")
desc_short = event.get("description_short", "")
# Parse start date
try:
event_start = datetime.fromisoformat(start_date_str.replace('Z', '+00:00'))+ timedelta(hours=8)
except Exception as e:
print(f"Error parsing date: {start_date_str}, {e}")
continue
if CommonUtils.is_time_after_work(event_start):
print(f"Title: {title}")
print(f"Type: {event_type}")
print(f"Start: {event_start.strftime('%Y-%m-%d %H:%M:%S')}, {event_start.strftime('%A')}")
print(f"URL: {url_event}")
if desc_short:
print(f"Description: {desc_short}")
print("-" * 40)
if __name__ == "__main__":
fetch_events()