Skip to content

Commit 425ae45

Browse files
committed
feat: make it 30% likely that the student will skip learning
#3
1 parent fa1c6e8 commit 425ae45

File tree

7 files changed

+93
-6
lines changed

7 files changed

+93
-6
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
id,timestamp,android_id,package_name,video_id,video_title,learning_event_type
2+
0,1727708363131,e387e38700000001,ai.elimu.analytics,2,akili and me - letter b,VIDEO_OPENED
3+
0,1727708389258,e387e38700000001,ai.elimu.analytics,2,akili and me - letter b,VIDEO_COMPLETED
4+
0,1727708363131,e387e38700000001,ai.elimu.analytics,3,akili and me - letter c,VIDEO_OPENED
5+
0,1727708389670,e387e38700000001,ai.elimu.analytics,3,akili and me - letter c,VIDEO_COMPLETED
6+
0,1727708363132,e387e38700000001,ai.elimu.analytics,13,akili and me - the rectangle song,VIDEO_OPENED
7+
0,1727708382924,e387e38700000001,ai.elimu.analytics,13,akili and me - the rectangle song,VIDEO_COMPLETED
8+
0,1727708363132,e387e38700000001,ai.elimu.analytics,33,akili and me - letter i,VIDEO_OPENED
9+
0,1727708365139,e387e38700000001,ai.elimu.analytics,33,akili and me - letter i,VIDEO_CLOSED_BEFORE_COMPLETION
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,1727708363159,e387e38700000002,ai.elimu.analytics,7,akili and me - letter g,VIDEO_OPENED
3+
0,1727708375497,e387e38700000002,ai.elimu.analytics,7,akili and me - letter g,VIDEO_CLOSED_BEFORE_COMPLETION
4+
0,1727708363159,e387e38700000002,ai.elimu.analytics,3,akili and me - letter c,VIDEO_OPENED
5+
0,1727708371494,e387e38700000002,ai.elimu.analytics,3,akili and me - letter c,VIDEO_COMPLETED
6+
0,1727708363160,e387e38700000002,ai.elimu.analytics,6,akili and me - letter f,VIDEO_OPENED
7+
0,1727708385872,e387e38700000002,ai.elimu.analytics,6,akili and me - letter f,VIDEO_COMPLETED
8+
0,1727708363160,e387e38700000002,ai.elimu.analytics,2,akili and me - letter b,VIDEO_OPENED
9+
0,1727708377653,e387e38700000002,ai.elimu.analytics,2,akili and me - letter b,VIDEO_CLOSED_BEFORE_COMPLETION
10+
0,1727708363160,e387e38700000002,ai.elimu.analytics,36,akili and me - letter l,VIDEO_OPENED
11+
0,1727708416421,e387e38700000002,ai.elimu.analytics,36,akili and me - letter l,VIDEO_COMPLETED
12+
0,1727708363160,e387e38700000002,ai.elimu.analytics,33,akili and me - letter i,VIDEO_OPENED
13+
0,1727708420297,e387e38700000002,ai.elimu.analytics,33,akili and me - letter i,VIDEO_COMPLETED
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
id,timestamp,android_id,package_name,video_id,video_title,learning_event_type
2+
0,1727708363184,e387e38700000003,ai.elimu.analytics,3,akili and me - letter c,VIDEO_OPENED
3+
0,1727708396676,e387e38700000003,ai.elimu.analytics,3,akili and me - letter c,VIDEO_COMPLETED
4+
0,1727708363184,e387e38700000003,ai.elimu.analytics,10,akili and me - music,VIDEO_OPENED
5+
0,1727708398702,e387e38700000003,ai.elimu.analytics,10,akili and me - music,VIDEO_COMPLETED
6+
0,1727708363184,e387e38700000003,ai.elimu.analytics,8,akili and me - family,VIDEO_OPENED
7+
0,1727708413851,e387e38700000003,ai.elimu.analytics,8,akili and me - family,VIDEO_COMPLETED
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
id,timestamp,android_id,package_name,video_id,video_title,learning_event_type
2+
0,1727708364351,e387e38700000001,ai.elimu.analytics,1,piper,VIDEO_OPENED
3+
0,1727708409046,e387e38700000001,ai.elimu.analytics,1,piper,VIDEO_CLOSED_BEFORE_COMPLETION
4+
0,1727708364351,e387e38700000001,ai.elimu.analytics,1,piper,VIDEO_OPENED
5+
0,1727708423645,e387e38700000001,ai.elimu.analytics,1,piper,VIDEO_CLOSED_BEFORE_COMPLETION
6+
0,1727708364351,e387e38700000001,ai.elimu.analytics,1,piper,VIDEO_OPENED
7+
0,1727708405758,e387e38700000001,ai.elimu.analytics,1,piper,VIDEO_COMPLETED
8+
0,1727708364352,e387e38700000001,ai.elimu.analytics,1,piper,VIDEO_OPENED
9+
0,1727708410880,e387e38700000001,ai.elimu.analytics,1,piper,VIDEO_CLOSED_BEFORE_COMPLETION
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
id,timestamp,android_id,package_name,video_id,video_title,learning_event_type
2+
0,1727706642623,e387e38700000002,ai.elimu.analytics,1,piper,VIDEO_OPENED
3+
0,1727706692369,e387e38700000002,ai.elimu.analytics,1,piper,VIDEO_CLOSED_BEFORE_COMPLETION
4+
0,1727706642623,e387e38700000002,ai.elimu.analytics,1,piper,VIDEO_OPENED
5+
0,1727706666807,e387e38700000002,ai.elimu.analytics,1,piper,VIDEO_CLOSED_BEFORE_COMPLETION
6+
0,1727706642624,e387e38700000002,ai.elimu.analytics,1,piper,VIDEO_OPENED
7+
0,1727706688016,e387e38700000002,ai.elimu.analytics,1,piper,VIDEO_CLOSED_BEFORE_COMPLETION
8+
0,1727706642624,e387e38700000002,ai.elimu.analytics,1,piper,VIDEO_OPENED
9+
0,1727706692277,e387e38700000002,ai.elimu.analytics,1,piper,VIDEO_CLOSED_BEFORE_COMPLETION
10+
0,1727706642624,e387e38700000002,ai.elimu.analytics,1,piper,VIDEO_OPENED
11+
0,1727706690210,e387e38700000002,ai.elimu.analytics,1,piper,VIDEO_CLOSED_BEFORE_COMPLETION
12+
0,1727706642624,e387e38700000002,ai.elimu.analytics,1,piper,VIDEO_OPENED
13+
0,1727706700728,e387e38700000002,ai.elimu.analytics,1,piper,VIDEO_CLOSED_BEFORE_COMPLETION
14+
0,1727706642624,e387e38700000002,ai.elimu.analytics,1,piper,VIDEO_OPENED
15+
0,1727706680279,e387e38700000002,ai.elimu.analytics,1,piper,VIDEO_CLOSED_BEFORE_COMPLETION
16+
0,1727706642626,e387e38700000002,ai.elimu.analytics,1,piper,VIDEO_OPENED
17+
0,1727706699593,e387e38700000002,ai.elimu.analytics,1,piper,VIDEO_COMPLETED
18+
0,1727706642626,e387e38700000002,ai.elimu.analytics,1,piper,VIDEO_OPENED
19+
0,1727706669831,e387e38700000002,ai.elimu.analytics,1,piper,VIDEO_COMPLETED
20+
0,1727706642626,e387e38700000002,ai.elimu.analytics,1,piper,VIDEO_OPENED
21+
0,1727706684982,e387e38700000002,ai.elimu.analytics,1,piper,VIDEO_COMPLETED
22+
0,1727706642626,e387e38700000002,ai.elimu.analytics,1,piper,VIDEO_OPENED
23+
0,1727706652990,e387e38700000002,ai.elimu.analytics,1,piper,VIDEO_CLOSED_BEFORE_COMPLETION
24+
0,1727706642627,e387e38700000002,ai.elimu.analytics,1,piper,VIDEO_OPENED
25+
0,1727706694014,e387e38700000002,ai.elimu.analytics,1,piper,VIDEO_COMPLETED
26+
0,1727706642627,e387e38700000002,ai.elimu.analytics,1,piper,VIDEO_OPENED
27+
0,1727706674967,e387e38700000002,ai.elimu.analytics,1,piper,VIDEO_COMPLETED
28+
0,1727706642627,e387e38700000002,ai.elimu.analytics,1,piper,VIDEO_OPENED
29+
0,1727706655286,e387e38700000002,ai.elimu.analytics,1,piper,VIDEO_COMPLETED
30+
0,1727706642627,e387e38700000002,ai.elimu.analytics,1,piper,VIDEO_OPENED
31+
0,1727706676728,e387e38700000002,ai.elimu.analytics,1,piper,VIDEO_CLOSED_BEFORE_COMPLETION
32+
0,1727706642628,e387e38700000002,ai.elimu.analytics,1,piper,VIDEO_OPENED
33+
0,1727706702362,e387e38700000002,ai.elimu.analytics,1,piper,VIDEO_CLOSED_BEFORE_COMPLETION
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
id,timestamp,android_id,package_name,video_id,video_title,learning_event_type
2+
0,1727708364378,e387e38700000003,ai.elimu.analytics,1,piper,VIDEO_OPENED
3+
0,1727708415339,e387e38700000003,ai.elimu.analytics,1,piper,VIDEO_CLOSED_BEFORE_COMPLETION
4+
0,1727708364379,e387e38700000003,ai.elimu.analytics,1,piper,VIDEO_OPENED
5+
0,1727708399248,e387e38700000003,ai.elimu.analytics,1,piper,VIDEO_COMPLETED
6+
0,1727708364379,e387e38700000003,ai.elimu.analytics,1,piper,VIDEO_OPENED
7+
0,1727708370019,e387e38700000003,ai.elimu.analytics,1,piper,VIDEO_CLOSED_BEFORE_COMPLETION

simulate-video-learning-events.py

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -85,19 +85,28 @@ def simulate_video_learning_event(android_id, videos_df: pandas.DataFrame, video
8585
print(basename(__file__), 'Zero videos. Skipping event simulation.')
8686
continue
8787

88-
base_url = f'http://{language_code.lower()}.elimu.ai'
88+
# base_url = f'http://{language_code.lower()}.elimu.ai'
89+
base_url = 'http://localhost:8080/webapp'
8990
print(basename(__file__), f'base_url: {base_url}')
9091

9192
rest_url = f'{base_url}/rest/v2'
9293
print(basename(__file__), f'rest_url: {rest_url}')
9394

9495
for android_id in android_ids:
95-
print(basename(__file__))
96+
print()
9697
print(basename(__file__), f'android_id: {android_id}')
98+
99+
# Make it 30% likely that the student will skip learning
100+
random_learning_probability = random.randrange(0, 100)
101+
print(basename(__file__), f'random_learning_probability: {random_learning_probability}%')
102+
if (random_learning_probability < 30):
103+
continue
97104

98105
video_learning_events = []
99106
random_number_of_events = random.randrange(0, 20)
100107
print(basename(__file__), f'random_number_of_events: {random_number_of_events}')
108+
if (random_number_of_events == 0):
109+
continue
101110
for i in range(random_number_of_events):
102111
simulate_video_learning_event(android_id, videos_df, video_learning_events)
103112

@@ -118,7 +127,7 @@ def simulate_video_learning_event(android_id, videos_df: pandas.DataFrame, video
118127
# Upload to webapp's REST API
119128
endpoint_url = f'{rest_url}/analytics/video-learning-events/csv'
120129
print(basename(__file__), f'endpoint_url: {endpoint_url}')
121-
with open(csv_path, 'r') as file:
122-
files = {'file': file}
123-
request = requests.post(endpoint_url, files=files)
124-
print(f'request: {request}')
130+
with open(csv_path, 'r') as file:
131+
files = {'file': file}
132+
response = requests.post(endpoint_url, files=files)
133+
print(basename(__file__), f'response: {response}')

0 commit comments

Comments
 (0)