arte stream url

get arte m3u8 stream url

// ==UserScript==
// @name         arte stream url
// @namespace    http://tampermonkey.net/
// @version      0.1.9
// @description  get arte m3u8 stream url
// @author       mihau
// @match        https://www.arte.tv/de/videos/*
// @match        https://www.arte.tv/fr/videos/*
// @supportURL   https://greasyfork.org/en/scripts/533451-arte-stream-url
// ==/UserScript==

// this UserJavaScript provides a simple way to get the m3u8 to feed into VLC or any other player capable of playing streams.
// though it's probably best to get the url or download videos via yt-dlp or addons such as The Stream Detector for Firefox
// https://addons.mozilla.org/en-US/firefox/addon/hls-stream-detector/ 

    var loc = window.location.pathname.split('/');
    var lang = loc[1];
    var id = loc[3];
    var name = loc[4];
    var url = "";

    var api_base = " https://api.arte.tv/api/player/v2/config/" + lang + "/";
    var download_url = api_base + id;

    var filmtitle = document.querySelector('meta[property="og:title"]').content;
    [" | ARTE Concert"," | ARTE"," - Komplette Sendung"," - Programm in voller Länge"," - Film in voller Länge"," - Regarder le film complet"," - Regarder l’émission complète"].forEach((item) => { filmtitle = filmtitle.replace(item, "") });
    filmtitle = filmtitle.replace(/ /g, "_").replace(/[^a-z0-9 \.,_-]/gim, "").replace("_-_","-");

    document.getElementsByTagName("body")[0].onclick = function () {
        var para = document.createElement("a");
        para.setAttribute('id', 'dwnl');
        para.setAttribute('style', 'font-weight: bold');
        para.setAttribute('style', 'color: white');
        para.setAttribute('class', ' ds-tgzo04'); 

        var node = document.createElement("span");
        node.setAttribute('class', ' ds-eul86b'); 
        node.innerText = "Stream URL";
        para.appendChild(node);

      if (document.getElementsByClassName(' ds-rymcfw')[0]) {
        document.getElementsByClassName(' ds-rymcfw')[0].insertBefore(para, null);
      } else if (document.getElementsByClassName(' ds-2aqyii')[0]) {
        document.getElementsByClassName(' ds-2aqyii')[0].insertBefore(para, null);
      }

                var getJSON = function(url, callback) {

                    var xhr = new XMLHttpRequest();
                    xhr.open('GET', url, true);
                    xhr.responseType = 'json';

                    xhr.onload = function() {

                        var status = xhr.status;

                        if (status == 200) {
                            callback(null, xhr.response);
                        } else {
                            callback(status);
                        }
                    };

                    xhr.send();
                };

                getJSON(download_url,  function(err, data) {
                    if (err != null) {
                        console.error(err);
                    } else {
                            url = data.data.attributes.streams[0].url;
                    }
                });
        
      
        document.getElementById('dwnl').addEventListener("click", function(){
              var test = prompt("stream URL (OK for ffmpeg command or cancel)", url);
			    if (test !== null) {
			        prompt("ffmpeg command", 'ffmpeg -referer "' + location.href + '" -user_agent "' + window.navigator.userAgent + '" -i "' + url + '" -c copy -bsf:a aac_adtstoasc "' + filmtitle + '.mp4"');
			    }
        });
      
      
      
      document.getElementsByTagName("body")[0].onclick = function () {}

    };

setTimeout('document.getElementsByTagName("body")[0].click()', 2500);