Skip to content

Commit 7076640

Browse files
committed
Fix Amplitude user params
1 parent f941977 commit 7076640

1 file changed

Lines changed: 40 additions & 2 deletions

File tree

youtubevideotranscriptbot/analytics.py

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# analytics.py
22
import logging
33
from config import AMPLITUDE_API_KEY
4-
from amplitude import Amplitude, BaseEvent
4+
from amplitude import Amplitude, BaseEvent, Identify, EventOptions
55

66
logger = logging.getLogger(__name__)
77

@@ -21,14 +21,52 @@ def track_event(user_id, event_type, event_properties=None):
2121
:param event_properties: Optional dict of event metadata
2222
"""
2323

24+
if event_properties:
25+
try:
26+
user_properties={
27+
"username": event_properties.get("username", ""),
28+
"is_bot": event_properties.get("is_bot", False),
29+
"language_code": event_properties.get("language_code", ""),
30+
"is_premium": event_properties.get("is_premium", False),
31+
"environment": event_properties.get("environment", "production")
32+
}
33+
identify_user(user_id, user_properties, event_properties=event_properties)
34+
except Exception as e:
35+
logger.error(f"[Amplitude] Identify failed: {e}")
36+
2437
event = BaseEvent(
2538
user_id=str(user_id),
2639
event_type=event_type,
27-
event_properties=event_properties or {}
40+
event_properties=event_properties or {},
41+
user_properties=event_properties or {}
2842
)
2943

3044
try:
3145
amplitude.track(event)
3246
logger.info(f"[Amplitude] Event tracked: {event_type} for user {user_id}")
3347
except Exception as e:
3448
logger.error(f"[Amplitude] Tracking failed: {e}")
49+
50+
51+
def identify_user(user_id, user_properties, event_properties=None):
52+
identity = Identify()
53+
identity.set("user_id", str(user_id))
54+
identity.set("username", user_properties.get("username", ""))
55+
identity.set("is_bot", user_properties.get("is_bot", False))
56+
identity.set("language_code", user_properties.get("language_code", ""))
57+
identity.set("is_premium", user_properties.get("is_premium", False))
58+
identity.set("environment", user_properties.get("environment", "production"))
59+
60+
if event_properties:
61+
for key, value in event_properties.items():
62+
if key == "video_url" or key == "video_id":
63+
video_url = value.strip().lower()
64+
identity.append("video_url", video_url)
65+
66+
try:
67+
event_options = EventOptions(user_id=str(user_id))
68+
amplitude.identify(identity, event_options=event_options)
69+
logger.info(f"[Amplitude] EventOptions type: {type(event_options)}. And here is the object itself: {event_options}")
70+
logger.info(f"[Amplitude] User identified: {user_id} with properties {user_properties}")
71+
except Exception as e:
72+
logger.error(f"[Amplitude] Identify failed: {e}")

0 commit comments

Comments
 (0)