Last active
April 24, 2016 04:58
-
-
Save nathanbedford/2339251945cc73d0375b114af871afee to your computer and use it in GitHub Desktop.
Userscript: IHOP Media Downloader
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // ==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