provide transcript download for xuetangx
// ==UserScript==
// @name XuetangX-Transcipt
// @namespace https://git.panda2134.site/panda_2134/XuetangX-Transcript
// @version 0.2.1
// @description provide transcript download for xuetangx
// @author panda_2134
// @match *://*.xuetangx.com/courses/*/courseware/*/*/
// @run-at document-idle
// @grant unsafeWindow
// @grant GM_xmlhttpRequest
// @grant GM_setValue
// @grant GM_getValue
// @grant GM_openInTab
// ==/UserScript==
(function() {
'use strict';
$("body").on('DOMSubtreeModified', "div.xmodule_display.xmodule_VideoModule", function() {
setTimeout(function(){
function heredoc(fn) {
return fn.toString().split('\n').slice(1,-1).join('\n') + '\n'
}
const transcript_tmpl = heredoc(function() {/*
<li class="video-tracks video-download-button">
<a href="DOWNLOAD_HREF">下载字幕</a>
<div class="a11y-menu-container">
<a class="a11y-menu-button" href="#" title=".txt">.txt</a>
<ol class="a11y-menu-list">
<li class="a11y-menu-item">
<a class="a11y-menu-item-link" href="#txt" title="字幕 (.txt) 文件" data-value="txt">
字幕 (.txt) 文件
</a>
</li>
</ol>
</div>
</li>
*/});
let isVideo = $("a.seq_video").length > 0;
if(!isVideo) return;
let urls = window.location.href.split('/');
let coursename = urls[4];
let hasSubtitle = $('li.video-download-button').length > 0;
if(hasSubtitle) return;
var HTML = transcript_tmpl.replace('DOWNLOAD_HREF',
'/' + urls[3] + '/' + coursename + '/xblock/' + $('div.vert.vert-0').attr('data-id')
+ '/handler/transcript/download');
if($('.wrapper-downloads').html().length > 35) return;
var $download = $('.wrapper-downloads').html(HTML),
$container = $download.find(".video-tracks .a11y-menu-container"),
$button = $download.find(".a11y-menu-button").on("click", function(event) {
event.preventDefault()
});
$container.on({
mouseover: function() {
$(this).addClass("open")
},
mouseout: function() {
$(this).removeClass("open")
}
})
}, 800)}
)
})();