Skip to content

Instantly share code, notes, and snippets.

@69
Created November 16, 2020 00:48
Show Gist options
  • Save 69/405f1ab5c22ae1a30fb30c8eb16574b3 to your computer and use it in GitHub Desktop.
Save 69/405f1ab5c22ae1a30fb30c8eb16574b3 to your computer and use it in GitHub Desktop.
// ==UserScript==
// @name bandcamp-download-from-release-page
// @version 1.0.0
// @description turns the "You own this" BC link into an actually useful download link
// @author jammy
// @match https://*.bandcamp.com/*
// @grant none
// ==/UserScript==
(function () {
'use strict';
const ownsProduct = document.querySelector('.you-own-this-link')
if (ownsProduct) {
const dataObject = document.querySelector('[data-tralbum-collect-info*="fan_id"]');
const userData = dataObject?.dataset?.tralbumCollectInfo;
const albumData = dataObject?.dataset?.tralbum;
if (!userData) return;
const uid = JSON.parse(userData)?.fan_id;
const albumId = JSON.parse(albumData)?.id;
const releaseName = document.querySelector('h2.trackTitle').innerText.trim();
fetch('/api/fancollection/1/search_items', {
method: 'POST',
body: JSON.stringify({
fan_id: uid,
search_key: releaseName,
search_type: 'collection'
})
}).then(a => a.json()).then(res => {
const release = res.tralbums.find(a => a.item_id === albumId || a.album_id === albumId)
if (!release) return;
const dlUrl = res?.redownload_urls?.[release.sale_item_type + release.sale_item_id];
if (!dlUrl) return;
const dlBtn = document.createElement('a')
dlBtn.innerText = '☁️ Download'
dlBtn.style.fontSize = '16px';
dlBtn.href = dlUrl;
const useless = document.querySelector('h3.you-own-this');
useless.innerHTML = '';
useless.appendChild(dlBtn);
})
}
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment