Merge branch 'feature/valera/video_alpha' of github.com:MITx/mitx into feature/valera/video_alpha

This commit is contained in:
Valera Rozuvan
2013-02-13 14:09:44 +02:00
2 changed files with 28 additions and 31 deletions

View File

@@ -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

View File

@@ -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