Skip to content

Instantly share code, notes, and snippets.

@uahim
Last active April 23, 2025 15:23
Show Gist options
  • Save uahim/dc82bbedd3b5e6c999af39ab5d45c643 to your computer and use it in GitHub Desktop.
Save uahim/dc82bbedd3b5e6c999af39ab5d45c643 to your computer and use it in GitHub Desktop.
get stream url - 0.1.8.2 updated April 2025, dirty but working fix; now with concert support
// ==UserScript==
// @name arte stream url
// @namespace http://tampermonkey.net/
// @version 0.1.8.2
// @description get arte m3u8 stream url
// @author You
// @match https://www.arte.tv/de/videos/*
// @match https://www.arte.tv/fr/videos/*
// ==/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);
@uahim
Copy link
Author

uahim commented May 3, 2024

@osvivant try now

@osvivant
Copy link

osvivant commented May 3, 2024

thanks, it works!

@jeanpierrebertola
Copy link

it,s stop to work !

@uahim
Copy link
Author

uahim commented Apr 15, 2025

it,s stop to work !

hi - quick and VERY DIRTY fix, version 0.1.8.1 now works - you just have to wait 2.5 seconds after page loading, then the button will appear

@jeanpierrebertola
Copy link

jeanpierrebertola commented Apr 15, 2025 via email

@jeanpierrebertola
Copy link

jeanpierrebertola commented Apr 15, 2025 via email

@osvivant
Copy link

Thanks, works perfectly!!!

@uahim
Copy link
Author

uahim commented Apr 23, 2025

I have uploaded the script to GreasyFork, so please re-install it from
https://greasyfork.org/en/scripts/533451-arte-stream-url

this will ensure you can just auto-update future versions with one click :-)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment