HTML5 player for BBC News

Use a natively uncluttered hardware-accelerated player, no ads or annoyances. Also, easily downloadable videos.

Per 16-07-2015. Zie de nieuwste versie.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey, Greasemonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals {tampermonkey_link:Tampermonkey}.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Userscripts.

Voor het installeren van scripts heb je een extensie nodig, zoals {tampermonkey_link:Tampermonkey}.

Voor het installeren van scripts heb je een gebruikersscriptbeheerder nodig.

(Ik heb al een user script manager, laat me het downloaden!)

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

(Ik heb al een beheerder - laat me doorgaan met de installatie!)

// ==UserScript==
// @name        HTML5 player for BBC News
// @match       http://www.bbc.com/*
// @version     2015.07.16
// @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
// ==/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);

      unsafeWindow.cock = e.responseText;//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("=>", vid, this.responseJSON.media, this.responseJSON.media[vid], this.responseJSON.media[vid].connection[0].href);

        console.log("=>", vid, this.responseJSON.media[vid].width,
                               this.responseJSON.media[vid].height,
                               this.responseJSON.media[vid],
                               this.responseJSON.media[vid].connection[0].href);

      /*
        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 = 2 // 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.autoplay = 'false';
      vplayer.preload  = 'none';

      vplayer.volume   = '0.4';

      vplayer.style.width = '100%';

      /* 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);
    }
  });