diff --git a/.idea/edx-xapi-bridge.iml b/.idea/edx-xapi-bridge.iml new file mode 100644 index 0000000..6711606 --- /dev/null +++ b/.idea/edx-xapi-bridge.iml @@ -0,0 +1,11 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..97626ba --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..c23ecac --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..1c9a037 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..87a7f9d --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/xapi-bridge/__main__.py b/xapi-bridge/__main__.py index 4f6e020..3f8089c 100644 --- a/xapi-bridge/__main__.py +++ b/xapi-bridge/__main__.py @@ -1,3 +1,4 @@ +# -*- coding: utf-8 -*- import sys, os, json, requests, threading from urlparse import urljoin from pyinotify import WatchManager, Notifier, EventsCodes, ProcessEvent diff --git a/xapi-bridge/converter.py b/xapi-bridge/converter.py index 02e2781..b0c8857 100644 --- a/xapi-bridge/converter.py +++ b/xapi-bridge/converter.py @@ -1,3 +1,4 @@ +# -*- coding: utf-8 -*- import json, re, xml.etree.ElementTree as ET @@ -65,7 +66,7 @@ def to_xapi(evt): }, 'context': { 'contextActivities': { - 'parent': [{'id': 'i4x://'+evt['context']['course_id']}] + 'parent': [{'id': 'i4x:'+evt['context']['course_id']}] } } }) @@ -104,7 +105,7 @@ def to_xapi(evt): }, 'context': { 'contextActivities': { - 'parent': [{'id': 'i4x://'+evt['context']['course_id']}] + 'parent': [{'id': 'i4x:'+evt['context']['course_id']}] } } }) @@ -126,14 +127,14 @@ def to_xapi(evt): }, 'object': { 'objectType': 'Activity', - 'id': 'i4x://' + evt['context']['course_id'] + event['id'], + 'id': 'i4x:' + evt['context']['course_id'] + event['id'], 'definition': { 'name': {'en-US': "Loaded Video" } } }, 'context': { 'contextActivities': { - 'parent': [{'id': 'i4x://'+evt['context']['course_id']}] + 'parent': [{'id': 'i4x:'+evt['context']['course_id']}] } } }) @@ -154,7 +155,7 @@ def to_xapi(evt): }, 'object': { 'objectType': 'Activity', - 'id': 'i4x://' + evt['context']['course_id'] + event['id'], + 'id': 'i4x:' + evt['context']['course_id'] + event['id'], 'definition': { 'name': {'en-US': "Played Video" } } @@ -166,7 +167,7 @@ def to_xapi(evt): }, 'context': { 'contextActivities': { - 'parent': [{'id': 'i4x://'+evt['context']['course_id']}] + 'parent': [{'id': 'i4x:'+evt['context']['course_id']}] } } }) @@ -187,7 +188,7 @@ def to_xapi(evt): }, 'object': { 'objectType': 'Activity', - 'id': 'i4x://' + evt['context']['course_id'] + event['id'], + 'id': 'i4x:' + evt['context']['course_id'] + event['id'], 'definition': { 'name': {'en-US': "Paused Video" } } @@ -199,7 +200,7 @@ def to_xapi(evt): }, 'context': { 'contextActivities': { - 'parent': [{'id': 'i4x://'+evt['context']['course_id']}] + 'parent': [{'id': 'i4x:'+evt['context']['course_id']}] } } }) @@ -220,7 +221,7 @@ def to_xapi(evt): }, 'object': { 'objectType': 'Activity', - 'id': 'i4x://' + evt['context']['course_id'] + event['id'], + 'id': 'i4x:' + evt['context']['course_id'] + event['id'], 'definition': { 'name': {'en-US': "Completed Video" } } @@ -232,7 +233,7 @@ def to_xapi(evt): }, 'context': { 'contextActivities': { - 'parent': [{'id': 'i4x://'+evt['context']['course_id']}] + 'parent': [{'id': 'i4x:'+evt['context']['course_id']}] } } }) @@ -253,7 +254,7 @@ def to_xapi(evt): }, 'object': { 'objectType': 'Activity', - 'id': 'i4x://' + evt['context']['course_id'] + event['id'], + 'id': 'i4x:' + evt['context']['course_id'] + event['id'], 'definition': { 'name': {'en-US': "Video seek" } } @@ -267,7 +268,7 @@ def to_xapi(evt): }, 'context': { 'contextActivities': { - 'parent': [{'id': 'i4x://'+evt['context']['course_id']}] + 'parent': [{'id': 'i4x:'+evt['context']['course_id']}] } } }) @@ -288,7 +289,7 @@ def to_xapi(evt): }, 'object': { 'objectType': 'Activity', - 'id': 'i4x://' + evt['context']['course_id'] + event['id'], + 'id': 'i4x:' + evt['context']['course_id'] + event['id'], 'definition': { 'name': {'en-US': "Video speed change" } } @@ -302,7 +303,7 @@ def to_xapi(evt): }, 'context': { 'contextActivities': { - 'parent': [{'id': 'i4x://'+evt['context']['course_id']}] + 'parent': [{'id': 'i4x:'+evt['context']['course_id']}] } } }) @@ -323,7 +324,7 @@ def to_xapi(evt): }, 'object': { 'objectType': 'Activity', - 'id': 'i4x://' + evt['context']['course_id'] + event['id'], + 'id': 'i4x:' + evt['context']['course_id'] + event['id'], 'definition': { 'name': {'en-US': "Video transcript hidden" } } @@ -335,7 +336,7 @@ def to_xapi(evt): }, 'context': { 'contextActivities': { - 'parent': [{'id': 'i4x://'+evt['context']['course_id']}] + 'parent': [{'id': 'i4x:'+evt['context']['course_id']}] } } }) @@ -356,7 +357,7 @@ def to_xapi(evt): }, 'object': { 'objectType': 'Activity', - 'id': 'i4x://' + evt['context']['course_id'] + event['id'], + 'id': 'i4x:' + evt['context']['course_id'] + event['id'], 'definition': { 'name': {'en-US': "Video transcript shown" } } @@ -368,7 +369,7 @@ def to_xapi(evt): }, 'context': { 'contextActivities': { - 'parent': [{'id': 'i4x://'+evt['context']['course_id']}] + 'parent': [{'id': 'i4x:'+evt['context']['course_id']}] } } })