Skip to content

Instantly share code, notes, and snippets.

@rndomhack
Last active January 18, 2019 17:31
Show Gist options
  • Select an option

  • Save rndomhack/d446478d73e341950af2 to your computer and use it in GitHub Desktop.

Select an option

Save rndomhack/d446478d73e341950af2 to your computer and use it in GitHub Desktop.
Amazon Prime Music Download Bookmarklet
javascript:(() => {
function download(uid) {
var url = "";
var metadata = null;
return new Promise((resolve, reject) => {
amznMusic.data.getServerSongForPlayer(result => {
if (!result) {
reject();
return;
}
metadata = result.metadata;
resolve();
}, { objectId: uid });
}).then(() => {
return new Promise((resolve, reject) => {
amznMusic.dmls.getStreamUrlByAsin(metadata.asin).then(result => {
url = result;
resolve();
}, err => {
reject(err);
});
});
}).then(() => {
var filename = metadata.name.replace(/\..+?$/, ".m4a").replace(/"/g, "\\\"");
var objMeta = {
title: metadata.title,
author: metadata.artistName,
album_artist: metadata.albumArtistName,
album: metadata.albumName,
track: metadata.trackNum,
genre: metadata.primaryGenre
};
var strMeta = Object.keys(objMeta).map(key => {
return `-metadata ${key}="${objMeta[key].replace(/"/g, "\\\"")}"`;
}).join(" ");
prompt(metadata.title, `ffmpeg -i "${url}" -acodec copy -bsf aac_adtstoasc ${strMeta} "${filename}"`);
});
}
var list = Array.from(document.querySelectorAll(".selectable"));
list.forEach(elem => {
var uid = elem.getAttribute("uid");
var td = document.createElement("td");
var a = document.createElement("a");
a.textContent = "DL";
a.addEventListener("click", () => {
download(uid);
});
td.appendChild(a);
elem.appendChild(td);
});
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment