get arte stream url with just one click
当前为
// ==UserScript==
// @name arte stream url
// @namespace http://tampermonkey.net/
// @version 1.1.1
// @description get arte stream url with just one click
// @author mihau
// @match https://www.arte.tv/de/videos/*
// @match https://www.arte.tv/fr/videos/*
// @license MIT
// @supportURL https://gf.qytechs.cn/en/scripts/533451-arte-stream-url
// ==/UserScript==
// this script provides a very simple way to get the m3u8/hls url to feed into VLC, MPC-HC or any other player capable of playing streams; it also offers a pre-built oneliner for ffmpeg to download said stream
//
// works on both DE and FR and covers standard programs as well as arte concert
//
// other tools you should consider using are "yt-dlp" and addons such as "The Stream Detector" for Firefox
// ( https://addons.mozilla.org/en-US/firefox/addon/hls-stream-detector/ )
//
// the initial version was based on https://gist.github.com/t3k4y/a88afc5907bca0ffaec316de9bdb8184
// if you want to get the url the second the page loads, change this from 0 to 1:
var loadonload = 0;
// do not edit below this line
$ = function(_) {return document.getElementById(_)}
$tn = function(_) {return document.getElementsByTagName(_)}
$cn = function(_) {return document.getElementsByClassName(_)}
$qa = function(_) {return document.querySelectorAll(_)}
$qs = function(_) {return document.querySelector(_)}
var jsoncontainer = 0;
for (var i = 0, l = $tn("script").length; i < l; ++i) {
if ($tn("script")[i].innerText.indexOf("Generate/") != -1) {
jsoncontainer = i;
break;
}
}
var nix = $tn("script")[jsoncontainer].innerText;
var myregex = /Generate\/.*?\/\//;
var match = nix.match(myregex);
var mynewregex = new RegExp("\/.*", "gi")
// very, very dirty regex, but hey - it works, no XHR necessary:
var thisisthefilmid = match[0].replace("Generate/", "").replace(mynewregex, "");
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;
url = "https://manifest-arte.akamaized.net/api/manifest/v1/Generate/" + thisisthefilmid + "/" + lang + "/XQ+KS+CHEV1/" + id + ".m3u8";
if ((loadonload != 0) && (thisisthefilmid != null) && (thisisthefilmid != "null") && (thisisthefilmid != "") && (thisisthefilmid != "undefined") && (thisisthefilmid != undefined) && (thisisthefilmid != NaN)) {
showURL();
}
var filmtitle = $qs('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("_-_", "-");
function showURL() {
var test = prompt("stream URL (OK for ffmpeg command or cancel)", url);
if (test !== null) {
prompt("ffmpeg command (OK for yt-dlp command or cancel)", 'ffmpeg -referer "' + location.href + '" -user_agent "' + window.navigator.userAgent + '" -i "' + url + '" -c copy -bsf:a aac_adtstoasc "' + filmtitle + '.mp4"');
if (test !== null) {
prompt("yt-dlp command", "yt-dlp " + url);
}
}
}
$tn("body")[0].onclick = function() {
var para = document.createElement("a");
para.setAttribute('id', 'dwnl');
para.setAttribute('style', 'color: red; font-weight: 800; padding-left: 5px');
para.setAttribute('class', 'ds-64fl0u');
var node = document.createElement("span");
node.setAttribute('class', 'ds-11ckmbs');
node.setAttribute('style', 'padding-left: 10px; color: #FA481C');
node.innerText = "Stream URL";
para.appendChild(node);
if ($cn('ds-1r0jukn')[0]) {
$cn('ds-1r0jukn')[0].insertBefore(para, null);
} else if ($cn('ds-1rm5mah')[0]) {
$cn('ds-1rm5mah')[0].insertBefore(para, null);
}
if ((thisisthefilmid != null) && (thisisthefilmid != "null") && (thisisthefilmid != "") && (thisisthefilmid != "undefined") && (thisisthefilmid != undefined) && (thisisthefilmid != NaN)) {
$('dwnl').addEventListener("click", function() {
showURL();
});
} else {
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;
$('dwnl').addEventListener("click", function() {
url = "https://manifest-arte.akamaized.net/api/manifest/v1/Generate/" + thisisthefilmid + "/" + lang + "/XQ+KS+CHEV1/" + id + ".m3u8";
showURL();
});
}
});
}
$tn("body")[0].onclick = function() {}
};
setTimeout('document.getElementsByTagName("body")[0].click()', 3500);
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址