// ==UserScript== // @name Skrypt umożliwiający pobieranie materiałów ze znanych serwisów VOD. // @version 5.6.0 // @description Skrypt służący do pobierania materiałów ze znanych serwisów VOD. // Działa poprawnie tylko z rozszerzeniem Tampermonkey. // Cześć kodu pochodzi z: // miniskrypt.blogspot.com, // miniskrypt.hubaiitv.pl // @author Przmus, zacny // @namespace http://www.ipla.tv/ // @source https://github.com/zacny/voddownloader // @include https://vod.tvp.pl/video/* // @include /^https://(bialystok|katowice|lodz|rzeszow|bydgoszcz|kielce|olsztyn|szczecin|gdansk|krakow|opole|warszawa|gorzow|lublin|poznan|wroclaw).tvp.pl/\d{6,}/ // @include https://cyfrowa.tvp.pl/video/* // @include https://www.ipla.tv/* // @include https://player.pl/* // @include https://www.cda.pl/* // @include https://vod.pl/* // @include https://redir.atmcdn.pl/* // @include https://*.redcdn.pl/file/o2/redefine/partner/* // @include https://video.wp.pl/* // @exclude https://vod.pl/playerpl* // @exclude http://www.tvp.pl/sess/* // @exclude https://www.cda.pl/iframe/* // @grant GM_getResourceText // @grant GM_getResourceURL // @grant GM_xmlhttpRequest // @grant GM_download // @grant GM_notification // @grant GM_setClipboard // @grant GM_info // @connect tvp.pl // @connect getmedia.redefine.pl // @connect player-api.dreamlab.pl // @run-at document-end // @require https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js // @resource buttons_css https://raw.githubusercontent.com/zacny/voddownloader/master/dist/voddownloader-buttons.css // @resource loader_css https://raw.githubusercontent.com/zacny/voddownloader/master/dist/voddownloader-loader.css // @resource content_css https://raw.githubusercontent.com/zacny/voddownloader/master/dist/voddownloader-content.css // @downloadURL none // ==/UserScript== (function vodDownloader($) { 'use strict'; function Exception(message, description) { this.message = message; this.description = description; } var CONFIG = (function(CONFIG) { var settings = { attempts: 10, attempt_timeout: 1500, id_error: 'Nie udało się odnaleźć idetyfikatora.', api_error: 'Nie odnaleziono adresów do strumieni.', call_error: 'Błąd pobierania informacji o materiale.', drm_error: 'Materiał posiada DRM. Ten skrypt służy do pobierania darmowych, niezabezpieczonych materiałów.', timeout_error: 'Zbyt długi czas odpowiedzi. Przypuszczalnie problem sieciowy.' }; CONFIG.get = function(name) { return settings[name]; }; return CONFIG; }(CONFIG || {})); var AsyncStep = (function(AsyncStep){ AsyncStep.setup = function(properties){ var step = { urlTemplate: '', beforeStep: function(input){return input}, afterStep: function (output) {return output}, resolveUrl: function (input) { var url = this.urlTemplate; var urlParams = {}; $.each(input, function (key, value) { url = url.replace(new RegExp('#'+key,'g'), value); urlParams[key] = value; }); return { url: url, urlParams: urlParams }; } }; return $.extend(true, step, properties); }; return AsyncStep; }(AsyncStep || {})); var Tool = (function(Tool) { Tool.deleteParametersFromUrl = function(url){ return decodeURIComponent(url.replace(/\?.*/,'')); }; Tool.getUrlParameter = function(paramName, url){ var results = new RegExp('[\?&]' + paramName + '=([^&#]*)').exec(url); if (results==null) { return null; } return decodeURIComponent(results[1]) || 0; }; Tool.numberModeSort = function(formats){ formats.sort(function (a, b) { return b.bitrate - a.bitrate; }); }; Tool.formatConsoleMessage = function(message, params){ console.log.apply(this, $.merge([message], params)); }; Tool.downloadFile = function(fileUrl, title){ var extension = Tool.deleteParametersFromUrl(fileUrl.split('.').pop()); var title = (title !== undefined && title !== '' ) ? title : 'nieznany'; var name = title + '.' + extension; GM_download(fileUrl, name); GM_notification({ title: 'Rozpoczęto pobieranie pliku', text: name }); }; return Tool; }(Tool || {})); var DomTamper = (function(DomTamper){ DomTamper.injectStyle = function(w, name){ var head = $(w.document.head); if(!head.find('style[name="' + name + '"]').length){ var styleElement = $('