Skip to content

Commit 54df4f8

Browse files
committed
feat: simulate video learning events
Resolves #3
1 parent a60ee21 commit 54df4f8

File tree

7 files changed

+152
-90
lines changed

7 files changed

+152
-90
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,21 @@
11
id,timestamp,android_id,package_name,video_id,video_title,learning_event_type
2-
0,1726896840,e387e38700000001,ai.elimu.analytics,3,akili and me - letter c,
3-
0,1726896840,e387e38700000001,ai.elimu.analytics,42,one small step,
4-
0,1726896840,e387e38700000001,ai.elimu.analytics,13,akili and me - the rectangle song,
5-
0,1726896840,e387e38700000001,ai.elimu.analytics,8,akili and me - family,
6-
0,1726896840,e387e38700000001,ai.elimu.analytics,3,akili and me - letter c,
7-
0,1726896840,e387e38700000001,ai.elimu.analytics,42,one small step,
8-
0,1726896840,e387e38700000001,ai.elimu.analytics,8,akili and me - family,
9-
0,1726896840,e387e38700000001,ai.elimu.analytics,10,akili and me - music,
10-
0,1726896840,e387e38700000001,ai.elimu.analytics,33,akili and me - letter i,
11-
0,1726896840,e387e38700000001,ai.elimu.analytics,3,akili and me - letter c,
12-
0,1726896840,e387e38700000001,ai.elimu.analytics,36,akili and me - letter l,
13-
0,1726896840,e387e38700000001,ai.elimu.analytics,34,akili and me - letter j,
2+
0,1726905582649,e387e38700000001,ai.elimu.analytics,1,akili and me - letter a,VIDEO_OPENED
3+
0,1726905608328,e387e38700000001,ai.elimu.analytics,1,akili and me - letter a,VIDEO_COMPLETED
4+
0,1726905582651,e387e38700000001,ai.elimu.analytics,1,akili and me - letter a,VIDEO_OPENED
5+
0,1726905640436,e387e38700000001,ai.elimu.analytics,1,akili and me - letter a,VIDEO_COMPLETED
6+
0,1726905582651,e387e38700000001,ai.elimu.analytics,32,akili and me - letter h,VIDEO_OPENED
7+
0,1726905589620,e387e38700000001,ai.elimu.analytics,32,akili and me - letter h,VIDEO_COMPLETED
8+
0,1726905582651,e387e38700000001,ai.elimu.analytics,11,akili and me - art - drawing rectangles,VIDEO_OPENED
9+
0,1726905589095,e387e38700000001,ai.elimu.analytics,11,akili and me - art - drawing rectangles,VIDEO_CLOSED_BEFORE_COMPLETED
10+
0,1726905582651,e387e38700000001,ai.elimu.analytics,3,akili and me - letter c,VIDEO_OPENED
11+
0,1726905632218,e387e38700000001,ai.elimu.analytics,3,akili and me - letter c,VIDEO_CLOSED_BEFORE_COMPLETED
12+
0,1726905582652,e387e38700000001,ai.elimu.analytics,36,akili and me - letter l,VIDEO_OPENED
13+
0,1726905635147,e387e38700000001,ai.elimu.analytics,36,akili and me - letter l,VIDEO_COMPLETED
14+
0,1726905582652,e387e38700000001,ai.elimu.analytics,8,akili and me - family,VIDEO_OPENED
15+
0,1726905600915,e387e38700000001,ai.elimu.analytics,8,akili and me - family,VIDEO_COMPLETED
16+
0,1726905582652,e387e38700000001,ai.elimu.analytics,12,akili and me - numbers - one two three song,VIDEO_OPENED
17+
0,1726905623025,e387e38700000001,ai.elimu.analytics,12,akili and me - numbers - one two three song,VIDEO_CLOSED_BEFORE_COMPLETED
18+
0,1726905582652,e387e38700000001,ai.elimu.analytics,33,akili and me - letter i,VIDEO_OPENED
19+
0,1726905589590,e387e38700000001,ai.elimu.analytics,33,akili and me - letter i,VIDEO_COMPLETED
20+
0,1726905582653,e387e38700000001,ai.elimu.analytics,42,one small step,VIDEO_OPENED
21+
0,1726905620623,e387e38700000001,ai.elimu.analytics,42,one small step,VIDEO_COMPLETED
Original file line numberDiff line numberDiff line change
@@ -1,18 +1 @@
1-
id,timestamp,android_id,package_name,video_id,video_title,learning_event_type
2-
0,1726896840,e387e38700000002,ai.elimu.analytics,42,one small step,
3-
0,1726896840,e387e38700000002,ai.elimu.analytics,7,akili and me - letter g,
4-
0,1726896840,e387e38700000002,ai.elimu.analytics,2,akili and me - letter b,
5-
0,1726896840,e387e38700000002,ai.elimu.analytics,5,akili and me - letter e,
6-
0,1726896840,e387e38700000002,ai.elimu.analytics,4,akili and me - letter d,
7-
0,1726896840,e387e38700000002,ai.elimu.analytics,14,akili and me - counting compilation,
8-
0,1726896840,e387e38700000002,ai.elimu.analytics,7,akili and me - letter g,
9-
0,1726896840,e387e38700000002,ai.elimu.analytics,10,akili and me - music,
10-
0,1726896840,e387e38700000002,ai.elimu.analytics,35,akili and me - letter k,
11-
0,1726896840,e387e38700000002,ai.elimu.analytics,11,akili and me - art - drawing rectangles,
12-
0,1726896840,e387e38700000002,ai.elimu.analytics,13,akili and me - the rectangle song,
13-
0,1726896840,e387e38700000002,ai.elimu.analytics,9,akili and me - jump jump jump,
14-
0,1726896840,e387e38700000002,ai.elimu.analytics,13,akili and me - the rectangle song,
15-
0,1726896840,e387e38700000002,ai.elimu.analytics,1,akili and me - letter a,
16-
0,1726896840,e387e38700000002,ai.elimu.analytics,5,akili and me - letter e,
17-
0,1726896840,e387e38700000002,ai.elimu.analytics,10,akili and me - music,
18-
0,1726896840,e387e38700000002,ai.elimu.analytics,33,akili and me - letter i,
1+
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,25 @@
11
id,timestamp,android_id,package_name,video_id,video_title,learning_event_type
2-
0,1726896840,e387e38700000003,ai.elimu.analytics,7,akili and me - letter g,
3-
0,1726896840,e387e38700000003,ai.elimu.analytics,33,akili and me - letter i,
4-
0,1726896840,e387e38700000003,ai.elimu.analytics,9,akili and me - jump jump jump,
5-
0,1726896840,e387e38700000003,ai.elimu.analytics,12,akili and me - numbers - one two three song,
6-
0,1726896840,e387e38700000003,ai.elimu.analytics,2,akili and me - letter b,
7-
0,1726896840,e387e38700000003,ai.elimu.analytics,14,akili and me - counting compilation,
8-
0,1726896840,e387e38700000003,ai.elimu.analytics,6,akili and me - letter f,
9-
0,1726896840,e387e38700000003,ai.elimu.analytics,14,akili and me - counting compilation,
10-
0,1726896840,e387e38700000003,ai.elimu.analytics,42,one small step,
11-
0,1726896840,e387e38700000003,ai.elimu.analytics,12,akili and me - numbers - one two three song,
12-
0,1726896840,e387e38700000003,ai.elimu.analytics,14,akili and me - counting compilation,
13-
0,1726896840,e387e38700000003,ai.elimu.analytics,10,akili and me - music,
14-
0,1726896840,e387e38700000003,ai.elimu.analytics,8,akili and me - family,
15-
0,1726896840,e387e38700000003,ai.elimu.analytics,34,akili and me - letter j,
16-
0,1726896840,e387e38700000003,ai.elimu.analytics,34,akili and me - letter j,
17-
0,1726896840,e387e38700000003,ai.elimu.analytics,6,akili and me - letter f,
2+
0,1726905582662,e387e38700000003,ai.elimu.analytics,1,akili and me - letter a,VIDEO_OPENED
3+
0,1726905619092,e387e38700000003,ai.elimu.analytics,1,akili and me - letter a,VIDEO_CLOSED_BEFORE_COMPLETED
4+
0,1726905582662,e387e38700000003,ai.elimu.analytics,32,akili and me - letter h,VIDEO_OPENED
5+
0,1726905596844,e387e38700000003,ai.elimu.analytics,32,akili and me - letter h,VIDEO_COMPLETED
6+
0,1726905582662,e387e38700000003,ai.elimu.analytics,2,akili and me - letter b,VIDEO_OPENED
7+
0,1726905600960,e387e38700000003,ai.elimu.analytics,2,akili and me - letter b,VIDEO_CLOSED_BEFORE_COMPLETED
8+
0,1726905582662,e387e38700000003,ai.elimu.analytics,3,akili and me - letter c,VIDEO_OPENED
9+
0,1726905626849,e387e38700000003,ai.elimu.analytics,3,akili and me - letter c,VIDEO_CLOSED_BEFORE_COMPLETED
10+
0,1726905582664,e387e38700000003,ai.elimu.analytics,34,akili and me - letter j,VIDEO_OPENED
11+
0,1726905602664,e387e38700000003,ai.elimu.analytics,34,akili and me - letter j,VIDEO_COMPLETED
12+
0,1726905582664,e387e38700000003,ai.elimu.analytics,3,akili and me - letter c,VIDEO_OPENED
13+
0,1726905612137,e387e38700000003,ai.elimu.analytics,3,akili and me - letter c,VIDEO_CLOSED_BEFORE_COMPLETED
14+
0,1726905582664,e387e38700000003,ai.elimu.analytics,8,akili and me - family,VIDEO_OPENED
15+
0,1726905610476,e387e38700000003,ai.elimu.analytics,8,akili and me - family,VIDEO_COMPLETED
16+
0,1726905582665,e387e38700000003,ai.elimu.analytics,13,akili and me - the rectangle song,VIDEO_OPENED
17+
0,1726905589360,e387e38700000003,ai.elimu.analytics,13,akili and me - the rectangle song,VIDEO_COMPLETED
18+
0,1726905582665,e387e38700000003,ai.elimu.analytics,13,akili and me - the rectangle song,VIDEO_OPENED
19+
0,1726905627004,e387e38700000003,ai.elimu.analytics,13,akili and me - the rectangle song,VIDEO_COMPLETED
20+
0,1726905582665,e387e38700000003,ai.elimu.analytics,36,akili and me - letter l,VIDEO_OPENED
21+
0,1726905626627,e387e38700000003,ai.elimu.analytics,36,akili and me - letter l,VIDEO_CLOSED_BEFORE_COMPLETED
22+
0,1726905582665,e387e38700000003,ai.elimu.analytics,5,akili and me - letter e,VIDEO_OPENED
23+
0,1726905605425,e387e38700000003,ai.elimu.analytics,5,akili and me - letter e,VIDEO_COMPLETED
24+
0,1726905582665,e387e38700000003,ai.elimu.analytics,34,akili and me - letter j,VIDEO_OPENED
25+
0,1726905617428,e387e38700000003,ai.elimu.analytics,34,akili and me - letter j,VIDEO_COMPLETED
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,39 @@
11
id,timestamp,android_id,package_name,video_id,video_title,learning_event_type
2-
0,1726896842,e387e38700000001,ai.elimu.analytics,1,piper,
2+
0,1726905583777,e387e38700000001,ai.elimu.analytics,1,piper,VIDEO_OPENED
3+
0,1726905593327,e387e38700000001,ai.elimu.analytics,1,piper,VIDEO_COMPLETED
4+
0,1726905583777,e387e38700000001,ai.elimu.analytics,1,piper,VIDEO_OPENED
5+
0,1726905604565,e387e38700000001,ai.elimu.analytics,1,piper,VIDEO_COMPLETED
6+
0,1726905583777,e387e38700000001,ai.elimu.analytics,1,piper,VIDEO_OPENED
7+
0,1726905607396,e387e38700000001,ai.elimu.analytics,1,piper,VIDEO_CLOSED_BEFORE_COMPLETED
8+
0,1726905583778,e387e38700000001,ai.elimu.analytics,1,piper,VIDEO_OPENED
9+
0,1726905625686,e387e38700000001,ai.elimu.analytics,1,piper,VIDEO_CLOSED_BEFORE_COMPLETED
10+
0,1726905583778,e387e38700000001,ai.elimu.analytics,1,piper,VIDEO_OPENED
11+
0,1726905622984,e387e38700000001,ai.elimu.analytics,1,piper,VIDEO_COMPLETED
12+
0,1726905583778,e387e38700000001,ai.elimu.analytics,1,piper,VIDEO_OPENED
13+
0,1726905641120,e387e38700000001,ai.elimu.analytics,1,piper,VIDEO_COMPLETED
14+
0,1726905583778,e387e38700000001,ai.elimu.analytics,1,piper,VIDEO_OPENED
15+
0,1726905640086,e387e38700000001,ai.elimu.analytics,1,piper,VIDEO_CLOSED_BEFORE_COMPLETED
16+
0,1726905583778,e387e38700000001,ai.elimu.analytics,1,piper,VIDEO_OPENED
17+
0,1726905639740,e387e38700000001,ai.elimu.analytics,1,piper,VIDEO_CLOSED_BEFORE_COMPLETED
18+
0,1726905583778,e387e38700000001,ai.elimu.analytics,1,piper,VIDEO_OPENED
19+
0,1726905585891,e387e38700000001,ai.elimu.analytics,1,piper,VIDEO_COMPLETED
20+
0,1726905583778,e387e38700000001,ai.elimu.analytics,1,piper,VIDEO_OPENED
21+
0,1726905585776,e387e38700000001,ai.elimu.analytics,1,piper,VIDEO_COMPLETED
22+
0,1726905583778,e387e38700000001,ai.elimu.analytics,1,piper,VIDEO_OPENED
23+
0,1726905595853,e387e38700000001,ai.elimu.analytics,1,piper,VIDEO_CLOSED_BEFORE_COMPLETED
24+
0,1726905583778,e387e38700000001,ai.elimu.analytics,1,piper,VIDEO_OPENED
25+
0,1726905591282,e387e38700000001,ai.elimu.analytics,1,piper,VIDEO_CLOSED_BEFORE_COMPLETED
26+
0,1726905583781,e387e38700000001,ai.elimu.analytics,1,piper,VIDEO_OPENED
27+
0,1726905640556,e387e38700000001,ai.elimu.analytics,1,piper,VIDEO_COMPLETED
28+
0,1726905583781,e387e38700000001,ai.elimu.analytics,1,piper,VIDEO_OPENED
29+
0,1726905624594,e387e38700000001,ai.elimu.analytics,1,piper,VIDEO_COMPLETED
30+
0,1726905583781,e387e38700000001,ai.elimu.analytics,1,piper,VIDEO_OPENED
31+
0,1726905596410,e387e38700000001,ai.elimu.analytics,1,piper,VIDEO_COMPLETED
32+
0,1726905583781,e387e38700000001,ai.elimu.analytics,1,piper,VIDEO_OPENED
33+
0,1726905602412,e387e38700000001,ai.elimu.analytics,1,piper,VIDEO_CLOSED_BEFORE_COMPLETED
34+
0,1726905583782,e387e38700000001,ai.elimu.analytics,1,piper,VIDEO_OPENED
35+
0,1726905630464,e387e38700000001,ai.elimu.analytics,1,piper,VIDEO_COMPLETED
36+
0,1726905583782,e387e38700000001,ai.elimu.analytics,1,piper,VIDEO_OPENED
37+
0,1726905596841,e387e38700000001,ai.elimu.analytics,1,piper,VIDEO_CLOSED_BEFORE_COMPLETED
38+
0,1726905583782,e387e38700000001,ai.elimu.analytics,1,piper,VIDEO_OPENED
39+
0,1726905615498,e387e38700000001,ai.elimu.analytics,1,piper,VIDEO_CLOSED_BEFORE_COMPLETED
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
id,timestamp,android_id,package_name,video_id,video_title,learning_event_type
2-
0,1726896842,e387e38700000002,ai.elimu.analytics,1,piper,
3-
0,1726896842,e387e38700000002,ai.elimu.analytics,1,piper,
4-
0,1726896842,e387e38700000002,ai.elimu.analytics,1,piper,
5-
0,1726896842,e387e38700000002,ai.elimu.analytics,1,piper,
6-
0,1726896842,e387e38700000002,ai.elimu.analytics,1,piper,
7-
0,1726896842,e387e38700000002,ai.elimu.analytics,1,piper,
8-
0,1726896842,e387e38700000002,ai.elimu.analytics,1,piper,
9-
0,1726896842,e387e38700000002,ai.elimu.analytics,1,piper,
10-
0,1726896842,e387e38700000002,ai.elimu.analytics,1,piper,
11-
0,1726896842,e387e38700000002,ai.elimu.analytics,1,piper,
12-
0,1726896842,e387e38700000002,ai.elimu.analytics,1,piper,
13-
0,1726896842,e387e38700000002,ai.elimu.analytics,1,piper,
14-
0,1726896842,e387e38700000002,ai.elimu.analytics,1,piper,
2+
0,1726905583786,e387e38700000002,ai.elimu.analytics,1,piper,VIDEO_OPENED
3+
0,1726905590274,e387e38700000002,ai.elimu.analytics,1,piper,VIDEO_CLOSED_BEFORE_COMPLETED
4+
0,1726905583787,e387e38700000002,ai.elimu.analytics,1,piper,VIDEO_OPENED
5+
0,1726905590843,e387e38700000002,ai.elimu.analytics,1,piper,VIDEO_CLOSED_BEFORE_COMPLETED
6+
0,1726905583787,e387e38700000002,ai.elimu.analytics,1,piper,VIDEO_OPENED
7+
0,1726905588710,e387e38700000002,ai.elimu.analytics,1,piper,VIDEO_COMPLETED
8+
0,1726905583787,e387e38700000002,ai.elimu.analytics,1,piper,VIDEO_OPENED
9+
0,1726905622421,e387e38700000002,ai.elimu.analytics,1,piper,VIDEO_CLOSED_BEFORE_COMPLETED
10+
0,1726905583788,e387e38700000002,ai.elimu.analytics,1,piper,VIDEO_OPENED
11+
0,1726905631943,e387e38700000002,ai.elimu.analytics,1,piper,VIDEO_CLOSED_BEFORE_COMPLETED
12+
0,1726905583788,e387e38700000002,ai.elimu.analytics,1,piper,VIDEO_OPENED
13+
0,1726905642729,e387e38700000002,ai.elimu.analytics,1,piper,VIDEO_COMPLETED
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,29 @@
11
id,timestamp,android_id,package_name,video_id,video_title,learning_event_type
2-
0,1726896842,e387e38700000003,ai.elimu.analytics,1,piper,
3-
0,1726896842,e387e38700000003,ai.elimu.analytics,1,piper,
4-
0,1726896842,e387e38700000003,ai.elimu.analytics,1,piper,
5-
0,1726896842,e387e38700000003,ai.elimu.analytics,1,piper,
6-
0,1726896842,e387e38700000003,ai.elimu.analytics,1,piper,
7-
0,1726896842,e387e38700000003,ai.elimu.analytics,1,piper,
8-
0,1726896842,e387e38700000003,ai.elimu.analytics,1,piper,
9-
0,1726896842,e387e38700000003,ai.elimu.analytics,1,piper,
10-
0,1726896842,e387e38700000003,ai.elimu.analytics,1,piper,
11-
0,1726896842,e387e38700000003,ai.elimu.analytics,1,piper,
12-
0,1726896842,e387e38700000003,ai.elimu.analytics,1,piper,
13-
0,1726896842,e387e38700000003,ai.elimu.analytics,1,piper,
14-
0,1726896842,e387e38700000003,ai.elimu.analytics,1,piper,
15-
0,1726896842,e387e38700000003,ai.elimu.analytics,1,piper,
16-
0,1726896842,e387e38700000003,ai.elimu.analytics,1,piper,
17-
0,1726896842,e387e38700000003,ai.elimu.analytics,1,piper,
18-
0,1726896842,e387e38700000003,ai.elimu.analytics,1,piper,
19-
0,1726896842,e387e38700000003,ai.elimu.analytics,1,piper,
20-
0,1726896842,e387e38700000003,ai.elimu.analytics,1,piper,
2+
0,1726905583791,e387e38700000003,ai.elimu.analytics,1,piper,VIDEO_OPENED
3+
0,1726905639219,e387e38700000003,ai.elimu.analytics,1,piper,VIDEO_CLOSED_BEFORE_COMPLETED
4+
0,1726905583792,e387e38700000003,ai.elimu.analytics,1,piper,VIDEO_OPENED
5+
0,1726905640777,e387e38700000003,ai.elimu.analytics,1,piper,VIDEO_CLOSED_BEFORE_COMPLETED
6+
0,1726905583792,e387e38700000003,ai.elimu.analytics,1,piper,VIDEO_OPENED
7+
0,1726905620024,e387e38700000003,ai.elimu.analytics,1,piper,VIDEO_COMPLETED
8+
0,1726905583792,e387e38700000003,ai.elimu.analytics,1,piper,VIDEO_OPENED
9+
0,1726905635756,e387e38700000003,ai.elimu.analytics,1,piper,VIDEO_CLOSED_BEFORE_COMPLETED
10+
0,1726905583792,e387e38700000003,ai.elimu.analytics,1,piper,VIDEO_OPENED
11+
0,1726905629549,e387e38700000003,ai.elimu.analytics,1,piper,VIDEO_CLOSED_BEFORE_COMPLETED
12+
0,1726905583793,e387e38700000003,ai.elimu.analytics,1,piper,VIDEO_OPENED
13+
0,1726905592411,e387e38700000003,ai.elimu.analytics,1,piper,VIDEO_COMPLETED
14+
0,1726905583793,e387e38700000003,ai.elimu.analytics,1,piper,VIDEO_OPENED
15+
0,1726905621815,e387e38700000003,ai.elimu.analytics,1,piper,VIDEO_COMPLETED
16+
0,1726905583793,e387e38700000003,ai.elimu.analytics,1,piper,VIDEO_OPENED
17+
0,1726905639131,e387e38700000003,ai.elimu.analytics,1,piper,VIDEO_CLOSED_BEFORE_COMPLETED
18+
0,1726905583793,e387e38700000003,ai.elimu.analytics,1,piper,VIDEO_OPENED
19+
0,1726905594401,e387e38700000003,ai.elimu.analytics,1,piper,VIDEO_COMPLETED
20+
0,1726905583794,e387e38700000003,ai.elimu.analytics,1,piper,VIDEO_OPENED
21+
0,1726905599987,e387e38700000003,ai.elimu.analytics,1,piper,VIDEO_CLOSED_BEFORE_COMPLETED
22+
0,1726905583794,e387e38700000003,ai.elimu.analytics,1,piper,VIDEO_OPENED
23+
0,1726905595040,e387e38700000003,ai.elimu.analytics,1,piper,VIDEO_COMPLETED
24+
0,1726905583794,e387e38700000003,ai.elimu.analytics,1,piper,VIDEO_OPENED
25+
0,1726905631557,e387e38700000003,ai.elimu.analytics,1,piper,VIDEO_COMPLETED
26+
0,1726905583794,e387e38700000003,ai.elimu.analytics,1,piper,VIDEO_OPENED
27+
0,1726905598726,e387e38700000003,ai.elimu.analytics,1,piper,VIDEO_COMPLETED
28+
0,1726905583794,e387e38700000003,ai.elimu.analytics,1,piper,VIDEO_OPENED
29+
0,1726905600554,e387e38700000003,ai.elimu.analytics,1,piper,VIDEO_CLOSED_BEFORE_COMPLETED

simulate-video-learning-events.py

Lines changed: 29 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
date_iso_8601 = datetime.today().strftime('%Y-%m-%d')
2424
print(basename(__file__), f'date_iso_8601: {date_iso_8601}')
2525

26-
def simulate_video_learning_event(android_id, videos_df: pandas.DataFrame):
26+
def simulate_video_learning_event(android_id, videos_df: pandas.DataFrame, video_learning_events):
2727
print(basename(__file__), 'simulate_video_learning_event')
2828
"""
2929
Simulate a VideoLearningEvent, e.g. a video being opened.
@@ -32,25 +32,46 @@ def simulate_video_learning_event(android_id, videos_df: pandas.DataFrame):
3232
"""
3333

3434
id = 0
35-
timestamp = int(datetime.now().timestamp())
35+
timestamp_ms = int(datetime.now().timestamp() * 1_000)
3636

3737
# Locate a random video in the DataFrame
3838
number_of_videos = len(videos_df.index)
3939
random_video_index = random.randrange(0, number_of_videos)
4040
random_video = videos_df.loc[random_video_index]
4141

42-
return {
42+
# https://github.com/elimu-ai/model/blob/main/src/main/java/ai/elimu/model/v2/enums/analytics/LearningEventType.java
43+
learning_event_types = ['VIDEO_OPENED', 'VIDEO_CLOSED_BEFORE_COMPLETED', 'VIDEO_COMPLETED']
44+
45+
video_learning_events.append({
46+
'id': id,
47+
'timestamp': timestamp_ms,
48+
'android_id': android_id,
49+
'package_name': package_name,
50+
'video_id': random_video.id,
51+
'video_title': random_video.title,
52+
'learning_event_type': learning_event_types[0]
53+
})
54+
55+
# A `VIDEO_OPENED_EVENT` should always be followed by a `VIDEO_CLOSED_BEFORE_COMPLETED` or
56+
# a `VIDEO_COMPLETED` event.
57+
second_learning_event_type = random.choice(learning_event_types[-2:])
58+
59+
# Increase timestamp to simulate passage of time between the `VIDEO_OPENED` event and the
60+
# second event. Increase by a random number between 1 second and 60 seconds.
61+
timestamp_ms += random.randrange(1_000, 1_000 * 60)
62+
63+
video_learning_events.append({
4364
'id': id,
44-
'timestamp': timestamp,
65+
'timestamp': timestamp_ms,
4566
'android_id': android_id,
4667
'package_name': package_name,
4768
'video_id': random_video.id,
4869
'video_title': random_video.title,
49-
'learning_event_type': ''
50-
}
70+
'learning_event_type': random.choice(learning_event_types[-2:])
71+
})
5172

5273
for language_code in language_codes:
53-
print(basename(__file__))
74+
print()
5475
print(basename(__file__), f'language_code: {language_code}')
5576

5677
videos_csv_url = f'https://raw.githubusercontent.com/elimu-ai/webapp/main/src/main/resources/db/content_PROD/{language_code.lower()}/videos.csv'
@@ -77,10 +98,7 @@ def simulate_video_learning_event(android_id, videos_df: pandas.DataFrame):
7798
random_number_of_events = random.randrange(0, 20)
7899
print(basename(__file__), f'random_number_of_events: {random_number_of_events}')
79100
for i in range(random_number_of_events):
80-
print(basename(__file__))
81-
event = simulate_video_learning_event(android_id, videos_df)
82-
# print(basename(__file__), f'event: {event}')
83-
video_learning_events.append(event)
101+
simulate_video_learning_event(android_id, videos_df, video_learning_events)
84102

85103
video_learning_events_df = pandas.DataFrame(video_learning_events)
86104
# print(basename(__file__), f'video_learning_events_df: \n{video_learning_events_df}')

0 commit comments

Comments
 (0)