Skip to content

Commit a60ee21

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

File tree

7 files changed

+102
-5
lines changed

7 files changed

+102
-5
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
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,
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
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,
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
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,
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
id,timestamp,android_id,package_name,video_id,video_title,learning_event_type
2+
0,1726896842,e387e38700000001,ai.elimu.analytics,1,piper,
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
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,
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
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,

simulate-video-learning-events.py

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

26-
def simulateVideoLearningEvent(android_id):
26+
def simulate_video_learning_event(android_id, videos_df: pandas.DataFrame):
27+
print(basename(__file__), 'simulate_video_learning_event')
2728
"""
2829
Simulate a VideoLearningEvent, e.g. a video being opened.
2930
@@ -33,12 +34,19 @@ def simulateVideoLearningEvent(android_id):
3334
id = 0
3435
timestamp = int(datetime.now().timestamp())
3536

37+
# Locate a random video in the DataFrame
38+
number_of_videos = len(videos_df.index)
39+
random_video_index = random.randrange(0, number_of_videos)
40+
random_video = videos_df.loc[random_video_index]
41+
3642
return {
3743
'id': id,
3844
'timestamp': timestamp,
3945
'android_id': android_id,
4046
'package_name': package_name,
41-
'video_id': 0
47+
'video_id': random_video.id,
48+
'video_title': random_video.title,
49+
'learning_event_type': ''
4250
}
4351

4452
for language_code in language_codes:
@@ -49,6 +57,11 @@ def simulateVideoLearningEvent(android_id):
4957
print(basename(__file__), f'videos_csv_url: {videos_csv_url}')
5058
videos_df = pandas.read_csv(videos_csv_url)
5159
print(basename(__file__), f'videos_df: \n{videos_df}')
60+
number_of_videos = len(videos_df.index)
61+
print(basename(__file__), f'number_of_videos: {number_of_videos}')
62+
if (number_of_videos == 0):
63+
print(basename(__file__), 'Zero videos. Skipping event simulation.')
64+
continue
5265

5366
base_url = f'http://{language_code.lower()}.elimu.ai'
5467
print(basename(__file__), f'base_url: {base_url}')
@@ -65,12 +78,12 @@ def simulateVideoLearningEvent(android_id):
6578
print(basename(__file__), f'random_number_of_events: {random_number_of_events}')
6679
for i in range(random_number_of_events):
6780
print(basename(__file__))
68-
event = simulateVideoLearningEvent(android_id)
69-
print(basename(__file__), f'event: {event}')
81+
event = simulate_video_learning_event(android_id, videos_df)
82+
# print(basename(__file__), f'event: {event}')
7083
video_learning_events.append(event)
7184

7285
video_learning_events_df = pandas.DataFrame(video_learning_events)
73-
print(basename(__file__), f'video_learning_events_df: \n{video_learning_events_df}')
86+
# print(basename(__file__), f'video_learning_events_df: \n{video_learning_events_df}')
7487

7588
# Export to CSV
7689
language_dir = f'lang-{language_code}'

0 commit comments

Comments
 (0)