add video poster support
EDUCATOR-44
This commit is contained in:
committed by
Mushtaq Ali
parent
763f0051bd
commit
626f2896a0
@@ -13,7 +13,7 @@ import ddt
|
||||
import pytz
|
||||
from django.conf import settings
|
||||
from django.test.utils import override_settings
|
||||
from edxval.api import create_profile, create_video, get_video_info
|
||||
from edxval.api import create_profile, create_video, get_video_info, get_course_video_image_url
|
||||
from mock import Mock, patch
|
||||
|
||||
from contentstore.models import VideoUploadConfig
|
||||
|
||||
@@ -28,7 +28,7 @@ define(
|
||||
icon: '',
|
||||
text: HtmlUtils.interpolateHtml(
|
||||
// Translators: This is a 3 part text which tells the image requirements.
|
||||
gettext('Image requirements {lineBreak} 1280px by 720px {lineBreak} .jpg | .png | .gif'),
|
||||
gettext('Image requirements: {lineBreak} 1280px by 720px {lineBreak} .jpg, .png, or .gif'),
|
||||
{
|
||||
lineBreak: HtmlUtils.HTML('<br>')
|
||||
}
|
||||
@@ -208,7 +208,10 @@ define(
|
||||
this.$('.thumbnail-action .action-icon'),
|
||||
HtmlUtils.HTML(this.actionsInfo[action].icon)
|
||||
);
|
||||
this.$('.thumbnail-action .action-text').html(this.actionsInfo[action].text);
|
||||
HtmlUtils.setHtml(
|
||||
this.$('.thumbnail-action .action-text'),
|
||||
HtmlUtils.HTML(this.actionsInfo[action].text)
|
||||
);
|
||||
this.$('.thumbnail-action .action-text-sr').text(additionalSRText || '');
|
||||
this.$('.thumbnail-wrapper').attr('class', 'thumbnail-wrapper {action}'.replace('{action}', action));
|
||||
},
|
||||
|
||||
@@ -147,6 +147,11 @@
|
||||
}
|
||||
|
||||
.assets-library {
|
||||
|
||||
.js-table-body .video-id-col {
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
.assets-title {
|
||||
display: inline-block;
|
||||
width: flex-grid(5, 9);
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<div
|
||||
id="video_id"
|
||||
class="video closed"
|
||||
data-metadata='{"autohideHtml5": "true", "autoplay": "false", "captionDataDir": "", "endTime": "", "generalSpeed": "1.0", "saveStateUrl": "/save_user_state", "savedVideoPosition": "0", "showCaptions": "true", "sources": ["/base/fixtures/hls/hls.m3u8", "/base/fixtures/test.mp4","/base/fixtures/test.webm"], "speed": "1.5", "startTime": "", "streams": "", "sub": "Z5KLxerq05Y", "transcriptAvailableTranslationsUrl": "/transcript/available_translations", "transcriptLanguage": "en", "transcriptLanguages": {"en": "English", "de": "Deutsch", "zh": "普通话"}, "transcriptTranslationUrl": "/transcript/translation/__lang__", "ytApiUrl": "/base/fixtures/youtube_iframe_api.js", "ytImageUrl": "", "ytTestTimeout": "1500", "ytMetadataUrl": "www.googleapis.com/youtube/v3/videos/", "source": ""}'
|
||||
data-metadata='{"autohideHtml5": "true", "autoplay": "false", "captionDataDir": "", "endTime": "", "generalSpeed": "1.0", "saveStateUrl": "/save_user_state", "savedVideoPosition": "0", "showCaptions": "true", "sources": ["/base/fixtures/hls/hls.m3u8", "/base/fixtures/test.mp4","/base/fixtures/test.webm"], "speed": "1.5", "startTime": "", "streams": "", "sub": "Z5KLxerq05Y", "transcriptAvailableTranslationsUrl": "/transcript/available_translations", "transcriptLanguage": "en", "transcriptLanguages": {"en": "English", "de": "Deutsch", "zh": "普通话"}, "transcriptTranslationUrl": "/transcript/translation/__lang__", "ytApiUrl": "/base/fixtures/youtube_iframe_api.js", "ytImageUrl": "", "ytTestTimeout": "1500", "ytMetadataUrl": "www.googleapis.com/youtube/v3/videos/", "source": "", "poster": "/media/video-images/poster.png"}'
|
||||
>
|
||||
<div class="focus_grabber first"></div>
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<div
|
||||
id="video_id"
|
||||
class="video closed"
|
||||
data-metadata='{"autohideHtml5": "true", "autoplay": "false", "captionDataDir": "", "endTime": "", "generalSpeed": "1.0", "saveStateUrl": "/save_user_state", "savedVideoPosition": "0", "showCaptions": "true", "sources": ["/base/fixtures/test.mp4","/base/fixtures/test.webm","/base/fixtures/test.ogv"], "speed": "1.5", "startTime": "", "streams": "", "sub": "Z5KLxerq05Y", "transcriptAvailableTranslationsUrl": "/transcript/available_translations", "transcriptLanguage": "en", "transcriptLanguages": {"en": "English", "de": "Deutsch", "zh": "普通话"}, "transcriptTranslationUrl": "/transcript/translation/__lang__", "ytApiUrl": "/base/fixtures/youtube_iframe_api.js", "ytImageUrl": "", "ytTestTimeout": "1500", "ytMetadataUrl": "www.googleapis.com/youtube/v3/videos/", "source": "", "html5_sources": ["http://youtu.be/3_yD_cEKoCk.mp4"]}'
|
||||
data-metadata='{"autohideHtml5": "true", "autoplay": "false", "captionDataDir": "", "endTime": "", "generalSpeed": "1.0", "saveStateUrl": "/save_user_state", "savedVideoPosition": "0", "showCaptions": "true", "sources": ["/base/fixtures/test.mp4","/base/fixtures/test.webm","/base/fixtures/test.ogv"], "speed": "1.5", "startTime": "", "streams": "", "sub": "Z5KLxerq05Y", "transcriptAvailableTranslationsUrl": "/transcript/available_translations", "transcriptLanguage": "en", "transcriptLanguages": {"en": "English", "de": "Deutsch", "zh": "普通话"}, "transcriptTranslationUrl": "/transcript/translation/__lang__", "ytApiUrl": "/base/fixtures/youtube_iframe_api.js", "ytImageUrl": "", "ytTestTimeout": "1500", "ytMetadataUrl": "www.googleapis.com/youtube/v3/videos/", "source": "", "html5_sources": ["http://youtu.be/3_yD_cEKoCk.mp4"], "poster": "/media/video-images/poster.png"}'
|
||||
>
|
||||
<div class="focus_grabber first"></div>
|
||||
|
||||
|
||||
@@ -4,7 +4,8 @@
|
||||
var state,
|
||||
oldOTBD,
|
||||
playbackRates = [0.75, 1.0, 1.25, 1.5],
|
||||
describeInfo;
|
||||
describeInfo,
|
||||
POSTER_URL = '/media/video-images/poster.png';
|
||||
|
||||
beforeEach(function() {
|
||||
oldOTBD = window.onTouchBasedDevice;
|
||||
@@ -320,6 +321,15 @@
|
||||
}).done(done);
|
||||
});
|
||||
});
|
||||
|
||||
describe('poster', function() {
|
||||
it('has url in player config', function() {
|
||||
expect(state.videoPlayer.player.config.poster).toEqual(POSTER_URL);
|
||||
expect(state.videoPlayer.player.videoEl).toHaveAttrs({
|
||||
poster: POSTER_URL
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('non-hls encoding', function() {
|
||||
@@ -338,6 +348,28 @@
|
||||
jasmine.getEnv().describe(describeInfo.description, describeInfo.specDefinitions);
|
||||
});
|
||||
|
||||
it('does not show poster for html5 video if url is not present', function() {
|
||||
state = jasmine.initializePlayer(
|
||||
'video_html5.html',
|
||||
{
|
||||
poster: null
|
||||
}
|
||||
);
|
||||
expect(state.videoPlayer.player.config.poster).toEqual(null);
|
||||
expect(state.videoPlayer.player.videoEl).not.toHaveAttr('poster');
|
||||
});
|
||||
|
||||
it('does not show poster for hls video if url is not present', function() {
|
||||
state = jasmine.initializePlayer(
|
||||
'video_hls.html',
|
||||
{
|
||||
poster: null
|
||||
}
|
||||
);
|
||||
expect(state.videoPlayer.player.config.poster).toEqual(null);
|
||||
expect(state.videoPlayer.player.videoEl).not.toHaveAttr('poster');
|
||||
});
|
||||
|
||||
it('native controls are used on iPhone', function() {
|
||||
window.onTouchBasedDevice.and.returnValue(['iPhone']);
|
||||
|
||||
|
||||
@@ -44,8 +44,11 @@ function(_) {
|
||||
* // video format of the source. Supported
|
||||
* // video formats are: 'mp4', 'webm', and
|
||||
* // 'ogg'.
|
||||
* poster: Video poster URL
|
||||
*
|
||||
* events: { // Object's properties identify the
|
||||
* browserIsSafari: Flag to tell if current browser is Safari
|
||||
*
|
||||
* events: { // Object's properties identify the
|
||||
* // events that the API fires, and the
|
||||
* // functions (event listeners) that the
|
||||
* // API will call when those events occur.
|
||||
@@ -320,6 +323,11 @@ function(_) {
|
||||
this.videoEl.prop('controls', true);
|
||||
}
|
||||
|
||||
// Set video poster
|
||||
if (this.config.poster) {
|
||||
this.videoEl.prop('poster', this.config.poster);
|
||||
}
|
||||
|
||||
// Place the <video> element on the page.
|
||||
this.videoEl.appendTo(el.find('.video-player > div:first-child'));
|
||||
};
|
||||
|
||||
@@ -162,6 +162,7 @@ function(HTML5Video, HTML5HLSVideo, Resizer, HLS, _) {
|
||||
commonPlayerConfig = {
|
||||
playerVars: state.videoPlayer.playerVars,
|
||||
videoSources: state.config.sources,
|
||||
poster: state.config.poster,
|
||||
browserIsSafari: state.browserIsSafari,
|
||||
events: {
|
||||
onReady: state.videoPlayer.onReady,
|
||||
|
||||
@@ -310,7 +310,10 @@ class VideoModule(VideoFields, VideoTranscriptsMixin, VideoStudentViewHandlers,
|
||||
'streams': self.youtube_streams,
|
||||
'sub': self.sub,
|
||||
'sources': sources,
|
||||
|
||||
'poster': edxval_api and edxval_api.get_course_video_image_url(
|
||||
course_id=self.runtime.course_id.for_branch(None),
|
||||
edx_video_id=self.edx_video_id.strip()
|
||||
),
|
||||
# This won't work when we move to data that
|
||||
# isn't on the filesystem
|
||||
'captionDataDir': getattr(self, 'data_dir', None),
|
||||
|
||||
@@ -50,32 +50,33 @@ class TestVideoYouTube(TestVideo):
|
||||
'handout': None,
|
||||
'id': self.item_descriptor.location.html_id(),
|
||||
'metadata': json.dumps(OrderedDict({
|
||||
"saveStateUrl": self.item_descriptor.xmodule_runtime.ajax_url + "/save_user_state",
|
||||
"autoplay": False,
|
||||
"streams": "0.75:jNCf2gIqpeE,1.00:ZwkTiUPN0mg,1.25:rsq9auxASqI,1.50:kMyNdzVHHgg",
|
||||
"sub": "a_sub_file.srt.sjson",
|
||||
"sources": sources,
|
||||
"captionDataDir": None,
|
||||
"showCaptions": "true",
|
||||
"generalSpeed": 1.0,
|
||||
"speed": None,
|
||||
"savedVideoPosition": 0.0,
|
||||
"start": 3603.0,
|
||||
"end": 3610.0,
|
||||
"transcriptLanguage": "en",
|
||||
"transcriptLanguages": OrderedDict({"en": "English", "uk": u"Українська"}),
|
||||
"ytTestTimeout": 1500,
|
||||
"ytApiUrl": "https://www.youtube.com/iframe_api",
|
||||
"ytMetadataUrl": "https://www.googleapis.com/youtube/v3/videos/",
|
||||
"ytKey": None,
|
||||
"transcriptTranslationUrl": self.item_descriptor.xmodule_runtime.handler_url(
|
||||
'saveStateUrl': self.item_descriptor.xmodule_runtime.ajax_url + '/save_user_state',
|
||||
'autoplay': False,
|
||||
'streams': '0.75:jNCf2gIqpeE,1.00:ZwkTiUPN0mg,1.25:rsq9auxASqI,1.50:kMyNdzVHHgg',
|
||||
'sub': 'a_sub_file.srt.sjson',
|
||||
'sources': sources,
|
||||
'poster': None,
|
||||
'captionDataDir': None,
|
||||
'showCaptions': 'true',
|
||||
'generalSpeed': 1.0,
|
||||
'speed': None,
|
||||
'savedVideoPosition': 0.0,
|
||||
'start': 3603.0,
|
||||
'end': 3610.0,
|
||||
'transcriptLanguage': 'en',
|
||||
'transcriptLanguages': OrderedDict({'en': 'English', 'uk': u'Українська'}),
|
||||
'ytTestTimeout': 1500,
|
||||
'ytApiUrl': 'https://www.youtube.com/iframe_api',
|
||||
'ytMetadataUrl': 'https://www.googleapis.com/youtube/v3/videos/',
|
||||
'ytKey': None,
|
||||
'transcriptTranslationUrl': self.item_descriptor.xmodule_runtime.handler_url(
|
||||
self.item_descriptor, 'transcript', 'translation/__lang__'
|
||||
).rstrip('/?'),
|
||||
"transcriptAvailableTranslationsUrl": self.item_descriptor.xmodule_runtime.handler_url(
|
||||
'transcriptAvailableTranslationsUrl': self.item_descriptor.xmodule_runtime.handler_url(
|
||||
self.item_descriptor, 'transcript', 'available_translations'
|
||||
).rstrip('/?'),
|
||||
"autohideHtml5": False,
|
||||
"recordedYoutubeIsAvailable": True,
|
||||
'autohideHtml5': False,
|
||||
'recordedYoutubeIsAvailable': True,
|
||||
})),
|
||||
'track': None,
|
||||
'transcript_download_format': u'srt',
|
||||
@@ -129,32 +130,33 @@ class TestVideoNonYouTube(TestVideo):
|
||||
'handout': None,
|
||||
'id': self.item_descriptor.location.html_id(),
|
||||
'metadata': json.dumps(OrderedDict({
|
||||
"saveStateUrl": self.item_descriptor.xmodule_runtime.ajax_url + "/save_user_state",
|
||||
"autoplay": False,
|
||||
"streams": "1.00:3_yD_cEKoCk",
|
||||
"sub": "a_sub_file.srt.sjson",
|
||||
"sources": sources,
|
||||
"captionDataDir": None,
|
||||
"showCaptions": "true",
|
||||
"generalSpeed": 1.0,
|
||||
"speed": None,
|
||||
"savedVideoPosition": 0.0,
|
||||
"start": 3603.0,
|
||||
"end": 3610.0,
|
||||
"transcriptLanguage": "en",
|
||||
"transcriptLanguages": OrderedDict({"en": "English"}),
|
||||
"ytTestTimeout": 1500,
|
||||
"ytApiUrl": "https://www.youtube.com/iframe_api",
|
||||
"ytMetadataUrl": "https://www.googleapis.com/youtube/v3/videos/",
|
||||
"ytKey": None,
|
||||
"transcriptTranslationUrl": self.item_descriptor.xmodule_runtime.handler_url(
|
||||
'saveStateUrl': self.item_descriptor.xmodule_runtime.ajax_url + '/save_user_state',
|
||||
'autoplay': False,
|
||||
'streams': '1.00:3_yD_cEKoCk',
|
||||
'sub': 'a_sub_file.srt.sjson',
|
||||
'sources': sources,
|
||||
'poster': None,
|
||||
'captionDataDir': None,
|
||||
'showCaptions': 'true',
|
||||
'generalSpeed': 1.0,
|
||||
'speed': None,
|
||||
'savedVideoPosition': 0.0,
|
||||
'start': 3603.0,
|
||||
'end': 3610.0,
|
||||
'transcriptLanguage': 'en',
|
||||
'transcriptLanguages': OrderedDict({'en': 'English'}),
|
||||
'ytTestTimeout': 1500,
|
||||
'ytApiUrl': 'https://www.youtube.com/iframe_api',
|
||||
'ytMetadataUrl': 'https://www.googleapis.com/youtube/v3/videos/',
|
||||
'ytKey': None,
|
||||
'transcriptTranslationUrl': self.item_descriptor.xmodule_runtime.handler_url(
|
||||
self.item_descriptor, 'transcript', 'translation/__lang__'
|
||||
).rstrip('/?'),
|
||||
"transcriptAvailableTranslationsUrl": self.item_descriptor.xmodule_runtime.handler_url(
|
||||
'transcriptAvailableTranslationsUrl': self.item_descriptor.xmodule_runtime.handler_url(
|
||||
self.item_descriptor, 'transcript', 'available_translations'
|
||||
).rstrip('/?'),
|
||||
"autohideHtml5": False,
|
||||
"recordedYoutubeIsAvailable": True,
|
||||
'autohideHtml5': False,
|
||||
'recordedYoutubeIsAvailable': True,
|
||||
})),
|
||||
'track': None,
|
||||
'transcript_download_format': u'srt',
|
||||
@@ -185,32 +187,33 @@ class TestGetHtmlMethod(BaseTestXmodule):
|
||||
super(TestGetHtmlMethod, self).setUp()
|
||||
self.setup_course()
|
||||
self.default_metadata_dict = OrderedDict({
|
||||
"saveStateUrl": "",
|
||||
"autoplay": settings.FEATURES.get('AUTOPLAY_VIDEOS', True),
|
||||
"streams": "1.00:3_yD_cEKoCk",
|
||||
"sub": "a_sub_file.srt.sjson",
|
||||
"sources": '[]',
|
||||
"captionDataDir": None,
|
||||
"showCaptions": "true",
|
||||
"generalSpeed": 1.0,
|
||||
"speed": None,
|
||||
"savedVideoPosition": 0.0,
|
||||
"start": 3603.0,
|
||||
"end": 3610.0,
|
||||
"transcriptLanguage": "en",
|
||||
"transcriptLanguages": OrderedDict({"en": "English"}),
|
||||
"ytTestTimeout": 1500,
|
||||
"ytApiUrl": "https://www.youtube.com/iframe_api",
|
||||
"ytMetadataUrl": "https://www.googleapis.com/youtube/v3/videos/",
|
||||
"ytKey": None,
|
||||
"transcriptTranslationUrl": self.item_descriptor.xmodule_runtime.handler_url(
|
||||
'saveStateUrl': '',
|
||||
'autoplay': settings.FEATURES.get('AUTOPLAY_VIDEOS', True),
|
||||
'streams': '1.00:3_yD_cEKoCk',
|
||||
'sub': 'a_sub_file.srt.sjson',
|
||||
'sources': '[]',
|
||||
'poster': None,
|
||||
'captionDataDir': None,
|
||||
'showCaptions': 'true',
|
||||
'generalSpeed': 1.0,
|
||||
'speed': None,
|
||||
'savedVideoPosition': 0.0,
|
||||
'start': 3603.0,
|
||||
'end': 3610.0,
|
||||
'transcriptLanguage': 'en',
|
||||
'transcriptLanguages': OrderedDict({'en': 'English'}),
|
||||
'ytTestTimeout': 1500,
|
||||
'ytApiUrl': 'https://www.youtube.com/iframe_api',
|
||||
'ytMetadataUrl': 'https://www.googleapis.com/youtube/v3/videos/',
|
||||
'ytKey': None,
|
||||
'transcriptTranslationUrl': self.item_descriptor.xmodule_runtime.handler_url(
|
||||
self.item_descriptor, 'transcript', 'translation/__lang__'
|
||||
).rstrip('/?'),
|
||||
"transcriptAvailableTranslationsUrl": self.item_descriptor.xmodule_runtime.handler_url(
|
||||
'transcriptAvailableTranslationsUrl': self.item_descriptor.xmodule_runtime.handler_url(
|
||||
self.item_descriptor, 'transcript', 'available_translations'
|
||||
).rstrip('/?'),
|
||||
"autohideHtml5": False,
|
||||
"recordedYoutubeIsAvailable": True,
|
||||
'autohideHtml5': False,
|
||||
'recordedYoutubeIsAvailable': True,
|
||||
})
|
||||
|
||||
def test_get_html_track(self):
|
||||
@@ -918,6 +921,19 @@ class TestGetHtmlMethod(BaseTestXmodule):
|
||||
context = self.item_descriptor.render(STUDENT_VIEW).content
|
||||
self.assertIn("'download_video_link': None", context)
|
||||
|
||||
@patch('xmodule.video_module.video_module.edxval_api.get_course_video_image_url')
|
||||
def test_poster_image(self, get_course_video_image_url):
|
||||
"""
|
||||
Verify that poster image functionality works as expected.
|
||||
"""
|
||||
video_xml = '<video display_name="Video" download_video="true" edx_video_id="12345-67890">[]</video>'
|
||||
get_course_video_image_url.return_value = '/media/video-images/poster.png'
|
||||
|
||||
self.initialize_module(data=video_xml)
|
||||
context = self.item_descriptor.render(STUDENT_VIEW).content
|
||||
|
||||
self.assertIn('"poster": "/media/video-images/poster.png"', context)
|
||||
|
||||
|
||||
@attr(shard=1)
|
||||
class TestVideoCDNRewriting(BaseTestXmodule):
|
||||
@@ -1539,13 +1555,13 @@ class TestVideoWithBumper(TestVideo):
|
||||
Test content with rendered bumper metadata.
|
||||
"""
|
||||
get_url_for_profiles.return_value = {
|
||||
"desktop_mp4": "http://test_bumper.mp4",
|
||||
"desktop_webm": "",
|
||||
'desktop_mp4': 'http://test_bumper.mp4',
|
||||
'desktop_webm': '',
|
||||
}
|
||||
|
||||
get_bumper_settings.return_value = {
|
||||
"video_id": "edx_video_id",
|
||||
"transcripts": {},
|
||||
'video_id': 'edx_video_id',
|
||||
'transcripts': {},
|
||||
}
|
||||
|
||||
is_bumper_enabled.return_value = True
|
||||
@@ -1557,17 +1573,17 @@ class TestVideoWithBumper(TestVideo):
|
||||
'license': None,
|
||||
'bumper_metadata': json.dumps(OrderedDict({
|
||||
'saveStateUrl': self.item_descriptor.xmodule_runtime.ajax_url + '/save_user_state',
|
||||
"showCaptions": "true",
|
||||
"sources": ["http://test_bumper.mp4"],
|
||||
'showCaptions': 'true',
|
||||
'sources': ['http://test_bumper.mp4'],
|
||||
'streams': '',
|
||||
"transcriptLanguage": "en",
|
||||
"transcriptLanguages": {"en": "English"},
|
||||
"transcriptTranslationUrl": video_utils.set_query_parameter(
|
||||
'transcriptLanguage': 'en',
|
||||
'transcriptLanguages': {'en': 'English'},
|
||||
'transcriptTranslationUrl': video_utils.set_query_parameter(
|
||||
self.item_descriptor.xmodule_runtime.handler_url(
|
||||
self.item_descriptor, 'transcript', 'translation/__lang__'
|
||||
).rstrip('/?'), 'is_bumper', 1
|
||||
),
|
||||
"transcriptAvailableTranslationsUrl": video_utils.set_query_parameter(
|
||||
'transcriptAvailableTranslationsUrl': video_utils.set_query_parameter(
|
||||
self.item_descriptor.xmodule_runtime.handler_url(
|
||||
self.item_descriptor, 'transcript', 'available_translations'
|
||||
).rstrip('/?'), 'is_bumper', 1
|
||||
@@ -1580,32 +1596,33 @@ class TestVideoWithBumper(TestVideo):
|
||||
'handout': None,
|
||||
'id': self.item_descriptor.location.html_id(),
|
||||
'metadata': json.dumps(OrderedDict({
|
||||
"saveStateUrl": self.item_descriptor.xmodule_runtime.ajax_url + "/save_user_state",
|
||||
"autoplay": False,
|
||||
"streams": "0.75:jNCf2gIqpeE,1.00:ZwkTiUPN0mg,1.25:rsq9auxASqI,1.50:kMyNdzVHHgg",
|
||||
"sub": "a_sub_file.srt.sjson",
|
||||
"sources": sources,
|
||||
"captionDataDir": None,
|
||||
"showCaptions": "true",
|
||||
"generalSpeed": 1.0,
|
||||
"speed": None,
|
||||
"savedVideoPosition": 0.0,
|
||||
"start": 3603.0,
|
||||
"end": 3610.0,
|
||||
"transcriptLanguage": "en",
|
||||
"transcriptLanguages": OrderedDict({"en": "English", "uk": u"Українська"}),
|
||||
"ytTestTimeout": 1500,
|
||||
"ytApiUrl": "https://www.youtube.com/iframe_api",
|
||||
"ytMetadataUrl": "https://www.googleapis.com/youtube/v3/videos/",
|
||||
"ytKey": None,
|
||||
"transcriptTranslationUrl": self.item_descriptor.xmodule_runtime.handler_url(
|
||||
'saveStateUrl': self.item_descriptor.xmodule_runtime.ajax_url + '/save_user_state',
|
||||
'autoplay': False,
|
||||
'streams': '0.75:jNCf2gIqpeE,1.00:ZwkTiUPN0mg,1.25:rsq9auxASqI,1.50:kMyNdzVHHgg',
|
||||
'sub': 'a_sub_file.srt.sjson',
|
||||
'sources': sources,
|
||||
'poster': None,
|
||||
'captionDataDir': None,
|
||||
'showCaptions': 'true',
|
||||
'generalSpeed': 1.0,
|
||||
'speed': None,
|
||||
'savedVideoPosition': 0.0,
|
||||
'start': 3603.0,
|
||||
'end': 3610.0,
|
||||
'transcriptLanguage': 'en',
|
||||
'transcriptLanguages': OrderedDict({'en': 'English', 'uk': u'Українська'}),
|
||||
'ytTestTimeout': 1500,
|
||||
'ytApiUrl': 'https://www.youtube.com/iframe_api',
|
||||
'ytMetadataUrl': 'https://www.googleapis.com/youtube/v3/videos/',
|
||||
'ytKey': None,
|
||||
'transcriptTranslationUrl': self.item_descriptor.xmodule_runtime.handler_url(
|
||||
self.item_descriptor, 'transcript', 'translation/__lang__'
|
||||
).rstrip('/?'),
|
||||
"transcriptAvailableTranslationsUrl": self.item_descriptor.xmodule_runtime.handler_url(
|
||||
'transcriptAvailableTranslationsUrl': self.item_descriptor.xmodule_runtime.handler_url(
|
||||
self.item_descriptor, 'transcript', 'available_translations'
|
||||
).rstrip('/?'),
|
||||
"autohideHtml5": False,
|
||||
"recordedYoutubeIsAvailable": True,
|
||||
'autohideHtml5': False,
|
||||
'recordedYoutubeIsAvailable': True,
|
||||
})),
|
||||
'track': None,
|
||||
'transcript_download_format': u'srt',
|
||||
@@ -1614,8 +1631,8 @@ class TestVideoWithBumper(TestVideo):
|
||||
{'display_name': 'Text (.txt) file', 'value': 'txt'}
|
||||
],
|
||||
'poster': json.dumps(OrderedDict({
|
||||
"url": "http://img.youtube.com/vi/ZwkTiUPN0mg/0.jpg",
|
||||
"type": "youtube"
|
||||
'url': 'http://img.youtube.com/vi/ZwkTiUPN0mg/0.jpg',
|
||||
'type': 'youtube'
|
||||
}))
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user