Bandcamp vs. Greasemonkey

Ich habe vor einiger Zeit mal einen Artikel über die Plattform Bandcamp verfasst - genauer gesagt darüber, wie man dank des Firefox Caches die Lieder einer Bandcamp-Seite speichern kann. Aufgrund des Artikels wurde ich sogar vom Deutschlandradio Kultur gefragt, ob ich nicht für ein Interview bereitstehen würde.

Für das Interview hatte ich extra ein kleines Greasemonkey-Script geschrieben, um zu zeigen, wie sich die Nachlässigkeit der Bandcamp-Programmierer auf die Umsätze eines Künstlers auswirken könnte. Leider wurde das Interview nun abgesagt, da das Bandcamp-Thema wohl nicht mehr eine so hohe Priorität hat. Trotzdem wollte ich den Nutzern von Bandcamp gerne mal vor Augen führen, worauf sie sich einlassen, wenn sie Bandcamp als Vertriebspartner nutzen wollen.

Bandcamp vorher

Das gleich präsentierte Greasemonkey-Userscript macht einfach folgendes: Es holt sich die TralbumData-Variable aus der Bandcamp-Seite, die man gerade besucht. In der stehen alle wichtigen Informationen zu den einzelnen Liedern, die auf der Seite präsentiert werden - inklusive dem Download-Link für die 128kbps-Version der Lieder. Die Links werden dafür einfach aufbereitet in einem neuen Tab angezeigt.

Bandcamp nachher

Wer jetzt denkt, dass das ganze Aufbereiten eine große Herausforderung ist, der irrt - liegt nämlich alles fertig im Quelltext. Zur Not könnte man diese Arbeit auch manuell machen: Im Quelltext nach der Variable suchen und die einzelnen URLs darin abgrasen.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// ==UserScript==
// @name           Grab Bandcamp Songs
// @namespace      https://weizenspr.eu/
// @include        http://*.bandcamp.com/*
// @include        https://*.bandcamp.com/*
// @grant          none
// ==/UserScript==

// grab Bandcamp data
var albumData = TralbumData;
var embedData = EmbedData;

// grab album name - optional
var albumName = "";
if ((embedData != undefined) &&
    (embedData.album_title != undefined) &&
    (embedData.artist != undefined)) {
  albumName = embedData.artist + ": " + embedData.album_title;
}

// generate download output
if ((albumData != undefined) &&
    (albumData.trackinfo != undefined) &&
    (albumData.trackinfo.length > 0)) {
  var newText = "";

  newText += "<html>";
  newText += "<head>";
  newText += "<title>" + albumName + "</title>";
  newText += "</head>";
  newText += "<body>";
  newText += "<h1>" + albumName + "</h1>";

  var item = null;
  for (var index = 0; index < albumData.trackinfo.length; index++) {
    item = albumData.trackinfo[index];

    newText += "<a href='https://" + item["file"]["mp3-128"] + "'>" + item["title"] + "</a> (" + item["duration"] + " seconds)<br/>";
  }

  newText += "</body>";
  newText += "</html>";

  var newWindow = window.open("data:text/html;charset=UTF-8," + newText);
}

Würdet ihr eure Musik über einen Dienst verkaufen wollen, bei dem es für die Kunden problemlos möglich ist, auch ohne Bezahlung an die einzelnen Lieder zu kommen?!

Zum Schluss noch etwas Rechtliches:
Der Autor dieses Programms haftet nicht für Schäden an Soft- oder Hardware oder Vermögensschäden, die durch das Benutzen des Programms entstehen, es sei denn, diese beruhen auf einem grob fahrlässigen oder vorsätzlichen Handeln des Autors, seiner Erfüllungsgehilfen oder seiner gesetzlichen Vertreter.
Affige Grüße, Kenny