Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 34 additions & 22 deletions js/skiptotimestamp.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
var tag = document.createElement('script');

tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

var STT = {
settings: STTSettings,
media: undefined,
Expand All @@ -19,9 +25,9 @@ var STT = {
};

STTSkipTo = function(time) {
var audio = document.getElementsByTagName('audio'),
var audio = document.getElementsByTagName('audio'),
video = document.getElementsByTagName('video'),
iframe = document.getElementsByTagName('iframe'),
iframe = document.getElementsByTagName('iframe'),
timeArray = time.split(':').reverse(),
seconds = parseInt(timeArray[0]),
minutes = timeArray.length > 1 ? parseInt(timeArray[1]) : 0,
Expand All @@ -33,6 +39,8 @@ STTSkipTo = function(time) {
STT.doSkip();
return;
}

// We don't have a YT player so try to find an audio or video player

if ((parseInt(STT.settings.link_audio) && audio.length) ||
(parseInt(STT.settings.link_video) && video.length))
Expand All @@ -51,35 +59,39 @@ STTSkipTo = function(time) {
STT.media.playbackRate = playbackRate;
STT.media.play();
return;
} else if (parseInt(STT.settings.link_youtube && iframe.length)) {
// Inspect the iframes, looking for a src with youtube in the URI
for (var i = 0; i < iframe.length; i++) {
if (iframe[i].src.search('youtube') !== -1) {
// Set up the JS interface
STT.doSkip = STT.doYoutubeSkip;

iframe[0].id = 'stt-youtube-player';
STT.media = new YT.Player('stt-youtube-player', {
events: {
onReady: STT.doYoutubeSkip
}
});
return;
}
}
}

console.log('Skip to Timestamp: No media player found!');
return;
}

// YT API calls this when loaded. This initializes player.
function onYouTubeIframeAPIReady() {
iframe = document.getElementsByTagName('iframe');

for (var i = 0; i < iframe.length; i++) {
if (iframe[i].src.search('youtube') !== -1) {
// Set up the JS interface
STT.doSkip = STT.doYoutubeSkip;

iframe[i].id = 'stt-youtube-player';
STT.media = new YT.Player('stt-youtube-player', {
events: {
'onReady': STT.doYoutubeSkip
}
});
return;
}
}
}

// Listen to all clicks on the document
document.addEventListener('click', function (event) {
var elem = event.target;
var elem = event.target;
// If the event target doesn't match bail
if (!elem.hasAttribute('data-stt-time')) {
return;
}
return;
}
var time = elem.getAttribute('data-stt-time');
STTSkipTo(time);
STTSkipTo(time);
}, false);