Skip to content

Instantly share code, notes, and snippets.

@nathanbedford
Last active April 24, 2016 04:58
Show Gist options
  • Select an option

  • Save nathanbedford/2339251945cc73d0375b114af871afee to your computer and use it in GitHub Desktop.

Select an option

Save nathanbedford/2339251945cc73d0375b114af871afee to your computer and use it in GitHub Desktop.
Userscript: IHOP Media Downloader
// ==UserScript==
// @name IHOP Media Downloader
// @namespace http://nathanbedford.com/
// @version 0.6
// @description Save those mp3s and mp4s
// @author Nathan Bedford
// @match http://www.ihopkc.org.edgesuite.net/video-player/?&pid*
// @updateURL https://gist.github.com/nathanbedford/2339251945cc73d0375b114af871afee/raw/ihop-media-downloader.user.js
// ==/UserScript==
(function() {
'use strict';
var intervalHolder;
var loopCounter = 0;
function getObjectFromValues(valueString){
var obj = {};
var valueArray = valueString.split('&');
valueArray.forEach(function(kvp){
var pair = kvp.split('=');
if(pair.length > 0){
obj[pair[0]] = pair[1];
}
});
return obj;
}
function checkForVideo(){
var mp3Link;
var mp4Link;
var html5VideoPlayer = $('video');
loopCounter++;
if(loopCounter === 10){
clearInterval(intervalHolder);
console.log('Couldn\'t find video player.');
}
if( html5VideoPlayer.length>0 && html5VideoPlayer.attr('src')){
clearInterval(intervalHolder);
mp4Link = html5VideoPlayer.attr('src');
var urlParts = mp4Link.split('IHOP');
var pathToFile = urlParts[1];
mp3Link = 'http://www.ihopkc.org.edgesuite.net/platform/IHOP' + pathToFile.replace('.mp4', '.mp3');
showHtmlElements(mp3Link, mp4Link);
}
}
var flashVars = $('param[name="flashvars"]');
if(flashVars.length > 0){
var values = flashVars.attr('value');
var decodedValues = unescape(values);
var valueObject = getObjectFromValues(decodedValues);
var releaseUrl = valueObject.releaseurl.split('?')[0];
var mp3Link = releaseUrl + '?format=redirect&formats=mp3,mpeg';
var mp4Link = releaseUrl + '?format=redirect&formats=mpeg4';
showHtmlElements(mp3Link, mp4Link);
}else{
intervalHolder = setInterval(checkForVideo, 250);
}
function showHtmlElements(mp3Link, mp4Link){
var styleDownloadMenu = {
position: 'absolute',
'z-index': '100',
top: '0',
right: '0',
'font-size': '12px',
padding: '7px',
'z-index': '200',
'height': '100px',
'width': '150px'
};
var stylesAudio = {
position: 'absolute',
'z-index': '100',
color: 'white',
top: '10px',
right: '10px',
'font-size': '11px',
border: '1px solid gray',
padding: '7px',
'border-radius': '5px',
'background-color': 'rgba(0, 0, 0, 0.5)',
'display': 'none',
'z-index': '250'
};
var stylesVideo = {
position: 'absolute',
'z-index': '100',
color: 'white',
top: '45px',
right: '10px',
'font-size': '11px',
border: '1px solid gray',
padding: '7px',
'border-radius': '5px',
'background-color': 'rgba(0, 0, 0, 0.5)',
'display': 'none',
'z-index': '250'
};
var contentMenu = '<div id="download-menu"></div>';
var contentAudio = '<a class="download-mp3-button" href="' + mp3Link + '">Download Audio</a>';
var contentVideo = '<a class="download-mp4-button" href="' + mp4Link + '">Download Video</a>';
$('#ihopkc_video').prepend(contentMenu);
$('#download-menu').prepend(contentVideo);
$('#download-menu').prepend(contentAudio);
$('#download-menu').css(styleDownloadMenu);
$('.download-mp3-button').css(stylesAudio);
$('.download-mp4-button').css(stylesVideo);
$('#download-menu').click(function(){
$('.download-mp3-button').fadeToggle();
$('.download-mp4-button').fadeToggle();
});
$('#download-menu').hover(function(){
$('.download-mp3-button').fadeToggle();
$('.download-mp4-button').fadeToggle();
});
}
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment