MediathekViewWeb - Single Click Download

Direct download of shows via single click

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(У мене вже є менеджер скриптів, дайте мені встановити його!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name          MediathekViewWeb - Single Click Download
// @description   Direct download of shows via single click
// @author        TheRealHawk
// @license       MIT
// @namespace     https://greasyfork.org/en/users/18936-therealhawk
// @match         https://mediathekviewweb.de/*
// @version       1.3
// @require       https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js
// @require       https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js
// @require       https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js
// @grant         GM_download
// ==/UserScript==

// Workaround to get rid of "is not defined" warnings
/* globals $, jQuery, moment */

function modTitleCol() {
    $('#mediathek > tbody > tr > td:nth-child(2),' +
      '#mediathek > tbody > tr > td:nth-child(3),' +
      '#mediathek > tbody > tr > td:nth-child(5)').hover(
        // Mouseover
        function() {
            $(this).css(
                {color:'#0ce3ac'}
            );
        },
        // Mouseout
        function() {
            $(this).css(
                {color:'#ffffff'}
            );
        }
    );

    $('#mediathek > tbody > tr').each( function() {
        const url = $('td', this).last().find('a').attr('href');
        const topic = $('td', this).eq(1).text();
        const title = $('td', this).eq(2).text();
        const orgTime = $('td', this).eq(4).text();
        const modTime = moment(orgTime, 'DD.MM.YYYY').format('YYYY-MM-DD');

        $('td', this).eq(1).bind('click', function() {
            $(this).effect('pulsate');

            const details = { url: url,
                              name: modTime + ' - ' + topic + ' - ' + title.replace(/[\\\?\.\*<>]/g, '').replace(/[\|:/]/g, ' - ').replace(/"/g, '\'').replace(/[\s]{2,}/g, ' ') + '.mp4',
                              saveAs: true
                            };
            GM_download(details);
        } );

        $('td', this).eq(2).bind('click', function() {
            $(this).effect('pulsate');

            const details = { url: url,
                              name: modTime + ' - ' + title.replace(/[\\\?\.\*<>]/g, '').replace(/[\|:/]/g, ' - ').replace(/"/g, '\'').replace(/[\s]{2,}/g, ' ') + '.mp4',
                              saveAs: true
                            };
            GM_download(details);
        } );

        $('td', this).eq(4).bind('click', function() {
            $(this).effect('pulsate');

            const details = { url: url,
                              name: modTime + '.mp4',
                              saveAs: true
                            };
            GM_download(details);
        } );
    } );
}

const observer = new MutationObserver( function() {
    modTitleCol();
} );

observer.observe($('#mediathek')[0], {childList: true});