Greasy Fork is available in English.
Adds a download button to the Mixcloud player.
// ==UserScript==
// @name Mixcloud Download
// @namespace schwarztee
// @description Adds a download button to the Mixcloud player.
// @include https://www.mixcloud.com/*
// @copyright 2016, schwarztee
// @license MIT
// @version 0.1.2-deactivated
// @grant none
// ==/UserScript==
(function(){
'use strict'
console.log( '[Mixcloud Download] Script deactivated. Needs update to support HTTP live streaming, sorry.' )
/*function makeButton( href )
{
let title = ''
try
{
// try to get audio title
title = document.querySelector( '.player-cloudcast-title' ).textContent
}
catch ( exception ) {}
// strip any sensitive characters for use as filename
title = title.replace( /[^A-Za-z0-9\-\.\+]/g, '_' )
// create anchor element
let button = document.createElement( 'a' )
button.className = 'player-follow-button dwnld'
button.download = title && title+'.m4a' || ''
button.style.display = 'inline'
button.style.color = 'inherit'
button.title = "Download"
button.innerHTML = '↓'
button.href = href
// add button to player
document.querySelector( '.player-cloudcast-author' ).appendChild( button )
}
function removeButton()
{
try
{
// try to find and remove existing download button
document.querySelector( '.player-cloudcast-author a.dwnld' ).remove()
}
catch ( exception ) {}
}
let oldURL = ''
function checkAudio()
{
let newURL = ''
try
{
// try to find audio and get current source URL
newURL = document.querySelector( 'audio source' ).src
}
catch ( exception )
{
// developer information
console.log( "[Mixcloud Download] No active audio element found." )
}
// source URL found?
if ( newURL )
{
// new URL or download button not present?
if ( newURL != oldURL || !document.querySelector( '.player-cloudcast-author a.dwnld' ) )
{
// developer information
console.log( "[Mixcloud Download] Found audio source:", newURL )
// remove any old button
removeButton()
// make new button
makeButton( newURL )
}
}
else
{
// remove any old button
removeButton()
}
// update URL cache
oldURL = newURL
}
// check player every four seconds
setInterval( checkAudio, 4000 )*/
})()