// ==UserScript== // @name HTML5 player for BBC News // @match http://www.bbc.com/* // @version 2015.07.15 // @description Use a natively uncluttered hardware-accelerated player, no ads or annoyances. Also, easily downloadable videos. // @grant GM_xmlhttpRequest // @namespace https://greasyfork.org/users/4813 // @downloadURL none // ==/UserScript== for (var i in (src = document.querySelectorAll('script:not([src])'))) { if (typeof src[i] !== 'object' || src[i].textContent.indexOf('externalId') === -1) { continue; } var vpid = src[i].textContent.match(/externalId":"([^"]+)"/)[1]; console.log(i, vpid); } if (!vpid) throw 'BBC HTML5: nothing to do :)'; GM_xmlhttpRequest( { method: 'GET', url: 'http://open.live.bbc.co.uk/mediaselector/5/select/version/2.0/vpid/' + vpid + '/format/json/mediaset/journalism-http-tablet/', onreadystatechange: function(e) { if (e.readyState !== XMLHttpRequest.DONE) { return; } this.responseJSON = JSON.parse(e.responseText); /* just for taking a look, please don't mind me! :-) */ console.log(e, this.responseJSON); if (!this.responseJSON.media) { console.warn('BBC HTML5: the listing did not come with any video at all!', this.responseJSON); return; } /* add a download button per result video */ for(var vid in this.responseJSON.media) { console.log(this.responseJSON.media, this.responseJS.media[vid]); /* dwnbutton = document.createElement("a"); dwnbutton.setAttribute('style', 'padding-left: 35px; padding-right:12px'); dwnbutton.textContent = 'Descargar [' + vid + ']'; dwnbutton.className = 'mar-l_10 fn_slide_link left btn_black icon_35 descarga'; dwnbutton.href = this.responseJSON.media[vid]; dwnbutton.download = document.querySelector('#imagen_modulo_player > img').alt + '.' + vid + '.mp4'; / / * replace it on the page * / / dwnbuttonHolderElement = document.querySelector('.mod_producto_social > div > div'); dwnbuttonHolderElement.appendChild(dwnbutton); */ } var hq = 0; /* build our own html5 player with our own stuff */ vplayer = document.createElement('video'); vplayer.src = this.responseJSON.media[hq].connection[0].href; vplayer.poster = document.querySelector('#media-asset-placeholder').src; vplayer.controls = 'true'; vplayer.volume = '0.4'; vplayer.height = 549; vplayer.width = 976; vplayer.style.marginBottom = '-2px'; /* replace it on the page */ videoHolderElement = document.querySelector('#media-asset-page-video'); videoHolderElement.parentElement.replaceChild(vplayer, videoHolderElement); }, onerror: function(e) { console.warn('BBC HTML5: Houston, we have an unidentified problem!', e); } });