// ==UserScript== // @name BBC iPlayer video download // @namespace http://andrealazzarotto.com/ // @include http://www.bbc.co.uk/* // @version 3.7 // @description This script allows to save videos from BBC iPlayer. // @copyright 2015+, Andrea Lazzarotto - GPLv3 License // @require http://code.jquery.com/jquery-latest.min.js // @grant GM_xmlhttpRequest // @connect edgesuite.net // @connect bbc.co.uk // @connect akamaihd.net // @license GPL version 3 or any later version; http://www.gnu.org/copyleft/gpl.html // @downloadURL none // ==/UserScript== var added = 0; var config_url = 'http://www.bbc.co.uk/iplayer/config/windows-phone'; var mediaselector; var vpid_qualities = {}; var get_title = function(name) { var title = name || $('meta[property="og:title"]').attr('content') || 'output'; return title.replace(/\W+/g, '_'); }; var get_JSON = function(url) { var data = $.ajax({ url: url, method: 'GET', async: false }); console.log(data); return $.parseJSON(data.responseText); }; var get_XML = function(url, callback) { GM_xmlhttpRequest({ method: 'GET', url: url, onload: function(responseDetails) { var r = responseDetails.responseText; var doc = $.parseXML(r); var $xml = $(doc); callback($xml); } }); }; var get_text = function(url, callback) { GM_xmlhttpRequest({ method: 'GET', url: url, onload: function(responseDetails) { var r = responseDetails.responseText; callback(r); } }); }; var place_link_box = function(element, id) { element.after('
'); $('#' + id).css({ 'padding': '.75em', 'margin': '25px auto', 'width': $('#player-outer-outer').width(), 'border': '1px solid #444', 'background-color': '#252525', 'color': 'white', 'font-family': 'sans-serif', 'box-sizing': 'border-box', 'font-size': '0.85rem' }); }; var appendURL = function(element, id, vpid, ext, kind, title) { var extension = ext || 'mp4'; var type = kind || 'video'; var codec = type == 'video' ? ' -codec copy -qscale 0 -bsf:a aac_adtstoasc ' : ' '; var tool = 'ffmpeg'; var safe_title = get_title(title); $("#" + id).remove(); element.after('
'); place_link_box(element, id); var sizes = []; var keys = Object.keys(vpid_qualities[vpid]); for (var k in keys) sizes.push(parseInt(keys[k])); sizes.sort((function(a,b) { return b-a; })); console.log(sizes); $('#' + id).append('

Quality level: