layout base Transcript Edit Source Slide View Slides View Plain Text Other Videos See all GTN Videos <script type="text/javascript"> var params = (new URL(document.location)).searchParams, videoid = params.get('v').startsWith('/') ? params.get('v').substring(1) : params.get('v'), seekTo = params.get('t'), videohost = 'https://training.galaxyproject.org', vtt = `${videohost}/videos/topics/${videoid}.en.vtt`, mp4 = `${videohost}/videos/topics/${videoid}.mp4`, png = `${videohost}/videos/topics/${videoid}.mp4.png`, player = document.getElementById("player"); player.setAttribute('poster', png); player.innerHTML = ` `; document.getElementById("transcript-edit").innerHTML = `Edit Source Slide` document.getElementById("source-slides").innerHTML = `View Slides` document.getElementById("transcript-plain").innerHTML = `View Plain Text` if(seekTo !== null){ if(seekTo.indexOf(":") > -1){ var seekToparts = seekTo.split(":"); if(seekToparts.length == 2) { player.currentTime = (parseInt(seekToparts[0]) * 60) + parseInt(seekToparts[1]); } else if (seekToparts.length == 3){ player.currentTime = (parseInt(seekToparts[0]) * 3600) + (parseInt(seekToparts[1]) * 60) + parseInt(seekToparts[2]); } else { console.error("Could not parse time") } } else { player.currentTime = parseInt(seekTo); } } fetch(vtt) .then(response => response.text()) .then(data => { lines = data.split("\n").slice(4).filter((x, i) => { return i % 4 == 0 || i % 4 == 1}); timestamps = lines.filter((x, i) => i % 2 == 0).map(x => x.split(' ')[0]); words = lines.filter((x, i) => i % 2 == 1); var zipped = timestamps.map(function(e, i) { return [e, words[i]]; }); lines = zipped.map(x => { return `${x[0]}${x[1]}` }).join(''); document.getElementById("transcript").innerHTML = '' + lines + ''; }); fetch('{{ site.baseurl }}/api/videos.json') .then(response => response.json()) .then(data => { // Remove empty data = data.filter(x => x !== null); // We've got a 'list' of video, we'll pretend this is a 'ring' buffer. var idx = data.findIndex(x => x.id == videoid); var videoSelf = data[idx]; document.getElementById("title").innerHTML = videoSelf.title; var ring = [...data.slice(idx + 1), ...data.slice(0, idx)].slice(0, 8); var fmt = ring.map(x => { return ` ${x.title} ${x.topic} `; }) document.getElementById("playlist").innerHTML = fmt; }); </script>