-
-
Save rsvp/4626300 to your computer and use it in GitHub Desktop.
Bookmarklet which creates download links on *any* Soundcloud page. Full credit goes to duncanbeevers, see https://gist.github.com/2157987 -- Last tested on newer Soundcloud site: 24 Jan 2013 Successful :-)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(function(a){var b,c,d,e=$(".sound"),f=require("config").get("client_id"),g=require("lib/connect").getAuthToken(),h=require("lib/helpers/conversion-helper"),i,j,k,l,m;for(b=e.length-1;b>=0;b--){c=$(e[b]);if(0==c.find(".sc-button-download").length){var n="https://soundcloud.com"+(c.find(".soundTitle__title").attr("href")||a.location.pathname);k={url:n,client_id:f},m=function(a){return function(b){var c={client_id:f};l=require("lib/url").stringify({query:c},b.stream_url+".mp3"),d=a.find(".sound__soundActions .sc-button-group"),j=d.find(".sc-button:first")[0].className.match(/sc-button-((?:small)|(?:medium))/)[1],i=$('<a class="sc-button sc-button-download sc-button-icon sc-button-responsive">Download</a>').attr({title:"Download this sound ("+h.bytesToMB(b.original_content_size)+")",href:l}).addClass("sc-button-"+j),d.append(i)}}(c),$.getJSON("http://api.soundcloud.com/resolve.json",k).success(m)}}})(window) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(function(window) { | |
var i, $sound, $buttonGroup; | |
var $sounds = $(".sound"); | |
var clientId = require("config").get("client_id"); | |
var oauthToken = require("lib/connect").getAuthToken(); | |
var conversionHelper = require("lib/helpers/conversion-helper"); | |
var $downloadButton, size; | |
var params, downloadUrl, onSuccess; | |
for (i = $sounds.length - 1; i >= 0; i--) { | |
$sound = $($sounds[i]); | |
if (0 == $sound.find(".sc-button-download").length) { | |
var soundcloudUrl = "https://soundcloud.com" + ($sound.find(".soundTitle__title").attr("href") || window.location.pathname); | |
params = { | |
url: soundcloudUrl, | |
client_id: clientId | |
}; | |
onSuccess = (function($sound) { | |
return function(data) { | |
var params = { | |
client_id: clientId | |
}; | |
downloadUrl = require("lib/url").stringify({ query: params }, data.stream_url + ".mp3"); | |
$buttonGroup = $sound.find(".sound__soundActions .sc-button-group"); | |
size = ($buttonGroup.find(".sc-button:first")[0].className).match(/sc-button-((?:small)|(?:medium))/)[1]; | |
$downloadButton = $('<a class="sc-button sc-button-download sc-button-icon sc-button-responsive">Download</a>').attr({ | |
title: "Download this sound (" + conversionHelper.bytesToMB(data.original_content_size) + ")", | |
href: downloadUrl | |
}).addClass("sc-button-" + size); | |
$buttonGroup.append($downloadButton); | |
}; | |
})($sound); | |
$.getJSON("http://api.soundcloud.com/resolve.json", params).success(onSuccess); | |
} | |
} | |
})(window); |
Note the bookmarklet should be a single line:
javascript:[INSERT sc-dl-min.js];
Notice the semicolon at the end. The code works as of 24 Jan 2013.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
ARCHIVE PRE-2013 WORKING VERSION for Firefox bookmarklet:
javascript:(function(a){var%20b=a.createElement("a"),c=a.createElement("span"),d=a.querySelector("#main-content-inner%20img[class=waveform]").src.match(/.com/(.+)_/)[1],e=a.querySelector("em").innerText+".mp3";c.innerText="Download",b.appendChild(c),b.setAttribute("class","pl-button"),b.setAttribute("style","background-image:%20url(http://soundcloud.com/images/icons_mini.png?unicorn26);%20background-repeat:%20no-repeat;%20padding-left:%2018px;%20background-position:%20-77px%20-236px;"),b.download=e,a.querySelector(".primary").appendChild(b),b.href="http://media.soundcloud.com/stream/"+d})(document);