Merge branch 'feature/valera/video_alpha' of github.com:MITx/mitx into feature/valera/video_alpha
This commit is contained in:
@@ -19,6 +19,18 @@ log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class VideoAlphaModule(XModule):
|
||||
"""
|
||||
XML source example:
|
||||
|
||||
<videoalpha show_captions="true"
|
||||
youtube="0.75:jNCf2gIqpeE,1.0:ZwkTiUPN0mg,1.25:rsq9auxASqI,1.50:kMyNdzVHHgg"
|
||||
url_name="lecture_21_3" display_name="S19V3: Vacancies"
|
||||
>
|
||||
<source src=".../mit-3091x/M-3091X-FA12-L21-3_100.mp4"/>
|
||||
<source src=".../mit-3091x/M-3091X-FA12-L21-3_100.webm"/>
|
||||
<source src=".../mit-3091x/M-3091X-FA12-L21-3_100.ogv"/>
|
||||
</videoalpha>
|
||||
"""
|
||||
video_time = 0
|
||||
icon_class = 'video'
|
||||
|
||||
@@ -39,14 +51,16 @@ class VideoAlphaModule(XModule):
|
||||
XModule.__init__(self, system, location, definition, descriptor,
|
||||
instance_state, shared_state, **kwargs)
|
||||
xmltree = etree.fromstring(self.definition['data'])
|
||||
self.youtube = xmltree.get('youtube')
|
||||
self.youtube_streams = xmltree.get('youtube')
|
||||
self.sub = xmltree.get('sub')
|
||||
self.position = 0
|
||||
self.show_captions = xmltree.get('show_captions', 'true')
|
||||
self.source = self._get_source(xmltree)
|
||||
self.mp4_source = self._get_source(xmltree, ['mp4'])
|
||||
self.webm_source = self._get_source(xmltree, ['webm'])
|
||||
self.ogv_source = self._get_source(xmltree, ['ogv'])
|
||||
self.sources = {
|
||||
'main': self._get_source(xmltree),
|
||||
'mp4': self._get_source(xmltree, ['mp4']),
|
||||
'webm': self._get_source(xmltree, ['webm']),
|
||||
'ogv': self._get_source(xmltree, ['ogv']),
|
||||
}
|
||||
self.track = self._get_track(xmltree)
|
||||
self.start_time, self.end_time = self._get_timeframe(xmltree)
|
||||
|
||||
@@ -109,25 +123,12 @@ class VideoAlphaModule(XModule):
|
||||
return json.dumps({'success': True})
|
||||
raise Http404()
|
||||
|
||||
def get_progress(self):
|
||||
''' TODO (vshnayder): Get and save duration of youtube video, then return
|
||||
fraction watched.
|
||||
(Be careful to notice when video link changes and update)
|
||||
|
||||
For now, we have no way of knowing if the video has even been watched, so
|
||||
just return None.
|
||||
'''
|
||||
return None
|
||||
|
||||
def get_instance_state(self):
|
||||
#log.debug(u"STATE POSITION {0}".format(self.position))
|
||||
return json.dumps({'position': self.position})
|
||||
|
||||
def videoalpha_list(self):
|
||||
return self.youtube
|
||||
|
||||
def get_html(self):
|
||||
if isinstance(modulestore(), MongoModuleStore) :
|
||||
if isinstance(modulestore(), MongoModuleStore):
|
||||
caption_asset_path = StaticContent.get_base_url_path_for_course_assets(self.location) + '/subs_'
|
||||
else:
|
||||
# VS[compat]
|
||||
@@ -135,14 +136,10 @@ class VideoAlphaModule(XModule):
|
||||
caption_asset_path = "/static/{0}/subs/".format(self.metadata['data_dir'])
|
||||
|
||||
return self.system.render_template('videoalpha.html', {
|
||||
'streams': self.videoalpha_list(),
|
||||
'youtube_streams': self.youtube_streams,
|
||||
'id': self.location.html_id(),
|
||||
'position': self.position,
|
||||
'mp4_source': self.mp4_source,
|
||||
'webm_source': self.webm_source,
|
||||
'ogv_source': self.ogv_source,
|
||||
'sub': self.sub,
|
||||
'source': self.source,
|
||||
'sources': self.sources,
|
||||
'track': self.track,
|
||||
'display_name': self.display_name,
|
||||
# TODO (cpennington): This won't work when we move to data that isn't on the filesystem
|
||||
|
||||
@@ -8,11 +8,11 @@
|
||||
<div
|
||||
id="video_${id}"
|
||||
class="video"
|
||||
data-streams="${streams}"
|
||||
data-streams="${youtube_streams}"
|
||||
${'data-sub="{}"'.format(sub) if sub else ''}
|
||||
${'data-mp4-source="{}"'.format(mp4_source) if mp4_source else ''}
|
||||
${'data-webm-source="{}"'.format(webm_source) if webm_source else ''}
|
||||
${'data-ogg-source="{}"'.format(ogv_source) if ogv_source else ''}
|
||||
${'data-mp4-source="{}"'.format(sources.get('mp4')) if sources.get('mp4') else ''}
|
||||
${'data-webm-source="{}"'.format(sources.get('webm')) if sources.get('webm') else ''}
|
||||
${'data-ogg-source="{}"'.format(sources.get('ogv')) if sources.get('ogv') else ''}
|
||||
data-caption-data-dir="${data_dir}"
|
||||
data-show-captions="${show_captions}"
|
||||
data-start="${start}"
|
||||
@@ -30,9 +30,9 @@
|
||||
</div>
|
||||
%endif
|
||||
|
||||
% if source:
|
||||
% if sources.get('main'):
|
||||
<div class="video-sources">
|
||||
<p>Download video <a href="${source}">here</a>.</p>
|
||||
<p>Download video <a href="${source.get('main')}">here</a>.</p>
|
||||
</div>
|
||||
% endif
|
||||
|
||||
|
||||
Reference in New Issue
Block a user