63 lines
2.0 KiB
Python
63 lines
2.0 KiB
Python
# Google Analytics 4 上报脚本
|
|
import platform
|
|
import uuid
|
|
import requests
|
|
|
|
# from log import logger
|
|
|
|
|
|
def get_cid():
|
|
return "{}-{}".format(platform.node(), uuid.getnode())
|
|
|
|
|
|
# note: 查看数据地址 https://analytics.google.com/analytics/web/#/
|
|
# note: 当发现上报失败时,可以将打印的post body复制到 https://ga-dev-tools.web.app/ga4/event-builder/ 进行校验,看是否缺了参数,或者有参数不符合格式
|
|
# note: 参数文档 https://developers.google.com/analytics/devguides/collection/protocol/ga4/reference?client_type=gtag#payload_query_parameters
|
|
GA_API_BASE_URL = "https://www.google-analytics.com/mp/collect"
|
|
# GA_API_BASE_URL = "https://www.google-analytics.com/debug/mp/collect"
|
|
GA_API_SECRET = "XMAI1cjPQbqz9zoONwudOA"
|
|
GA_MEASUREMENT_ID = "G-Y0WSE6LW2Z"
|
|
|
|
GA_API_URL = f"{GA_API_BASE_URL}?measurement_id={GA_MEASUREMENT_ID}&api_secret={GA_API_SECRET}"
|
|
|
|
headers = {
|
|
"user-agent": "dcalc",
|
|
}
|
|
|
|
|
|
def track_event(category: str, event_name: str):
|
|
try:
|
|
event_name = event_name.replace("/", "_")
|
|
json_data = {
|
|
"client_id": get_cid(),
|
|
"user_id": get_cid(),
|
|
"events": [
|
|
{
|
|
"name": category,
|
|
"params": {
|
|
"engagement_time_msec": "1000",
|
|
"session_id": get_cid(),
|
|
"event_name": event_name,
|
|
},
|
|
}
|
|
],
|
|
}
|
|
res = requests.post(GA_API_URL, json=json_data,
|
|
headers=headers, timeout=10)
|
|
|
|
# 打印日志,方便调试
|
|
# debug_msg = f"request info: body = {res.request.body!r}"
|
|
# logFunc = logger.debug
|
|
# if "debug" in GA_API_BASE_URL:
|
|
# debug_msg += f" res = {res.text}"
|
|
# logFunc = logger.warning
|
|
# logFunc(debug_msg)
|
|
except Exception as ex:
|
|
print(ex)
|
|
pass
|
|
|
|
|
|
if __name__ == "__main__":
|
|
track_event("test_category", "test_event/name_1")
|
|
track_event("test_category", "test_event_name_2")
|