Nutzung von Creative Commons Lizenzen

anger.jpg

Ich nutze ganz gerne Bilder, die unter einer Creative Commons Lizenz stehen. Besonders wenn ich zu einem Blogeintrag nur ein Symbolbild benötige. Ein gängiger Fehler der dabei jedoch gemacht wird, ist das benötigte Bild einfach zu kopieren, und so zu tun, als sei eine Lizenzierung unter Creative Commons gleichbedeutend mit einer freien Nutzung.

Neben der rechtlichen Verpflichtung, sich an die Lizenzbedingungen zu halten, die auch schon von einigen Gerichten bestätigt wurde, empfinde ich es auch als schlichte Höflichkeit den Urheber eines Bildes zu nennen, und nicht etwa seine Lorbeeren für mich zu beanspruchen. Leider macht das schon ein wenig Arbeit, beim verlinken auf die Lizenz, die Kurzfassung der Lizenz, den Urheber und den ursprünglichen Ort, an dem das Bild veröffentlicht wurde.

Wenn man das Ganze besonders vorbildlich machen möchte, kommen auch noch die ganzen RDFa Metadaten dazu, damit die Lizenz auch für Suchmaschinen auf Anhieb erkennbar wird.

Wie das ganze dann im Blog erscheinen soll kann man Beispielhaft an dem Bild in diesem Artikel sehen.

Im Grunde genommen geht es aber immer nur um die selbe handvoll Daten, die lediglich immer anders dargestellt wird:

  • Autor
  • Name des Bildes
  • Lizenz
  • Ort an dem das Bild zuerst veröffentlicht wurde
  • Ein Profil des Autors

Eine klassische Aufgabe also um sie zu automatisieren. Ich habe das für mich als eine erste Programmierübung für einen Nanoc-Filter gelöst

Zunächst mal brauchen wir eine Klasse, die von der Nanoc Filterklasse abgeleitet ist.

class CensorFilter < Nanoc3::Filter
identifier :CreaComm

Der Identifier sagt Nanoc, unter welchem Namen er diesen Filter ansprechen soll.

def run(content, params={})
content.gsub(/\!\S+\(.+\)\!/) do |match|
  author=''
  license=''
  version=''
  bildlink=''
  authorurl=''

Die Methode, die jeder Nanoc Filter braucht ist run(). Als Parameter bekommt sie den ungefilterten Content, sowie optional diverse Parameter als Hash übergeben. die Methode muss zwingend am Ende den fertig gefilterten Content explizit wieder zurückgeben, andernfalls bleiben die Beiträge in der Ausgabe leer. Was dieser Filter als erstes tut, ist mittels eines regulären Ausdrucks einen Bildlink zu suchen. Da ich meine Beiträge mit Textile auszeichne, sieht ein korrekter Bildlink so aus: <notextile>!Pfad/zum/Bild.jpg(Alt-Text des Bildes)!</notextile>.

if match[1] == 62
  test = '<div class="right">'
  match = match.reverse.chop.chop.reverse
elsif match[1] == 60
  test = '<div class="left">'
  match = match.reverse.chop.chop.reverse
else
  test = '<div class="right">'
  match = match.reverse.chop.reverse
end

Dieser Bildlink wird nun noch etwas genauer untersucht. Als zweites Zeichen (das hinter dem Ausrufezeichen kann nämlich noch ein Zeichen stehen, welches angibt, ob das Bild links- oder rechtsbündig ausgegeben werden soll. Diese Möglichkeit möchte ich natürlich nach wie vor Nutzen, und verwandle das Zeichen in die entsprechende Klasse für die CSS Formatierung

	  itemname ="/assets/images/"+match[0...match.index(".")]+"/"
	  @items.each do |bild|
		if bild.identifier==itemname then
		  author=bild[:author]
		  license=bild[:license]
		  version=bild[:version].to_s
		  bildlink=bild[:url]
		  authorurl=bild[:authorurl]
		end
	  end
	  test=test+'<div> !/assets/images/'
	  test=test + match
	  test=test +':'
	  test=test+bildlink
	  test=test+'</div><div>"Bestimmte Rechte vorbehalten":http://creativecommons.org/licenses/'
	  test=test+license+'/'+version
	  test=test+"/deed.de \n"
	  test=test+' !/assets/images/cc-'
	  test=test+license + '.png(CC'
	  test=test+license +' ' + version
	  test=test +')!:http://creativecommons.org/licenses/'
	  test=test+license+'/'+version +" "
	  test=test+'"' +author +'":'
	  test=test+ authorurl+'</div></div>'
	  test
	end
  end
end

Dem Bild wird zu Anfang zunächst mal der vollständige Pfad hinzugefügt. Das erspart mir die Arbeit, das bei jedem Bild schon beim Schreiben zu tun. Danach werden die Lizenz mit Ihren Eigenschaften aus den Attributen des Bildes ausgelesen Der große Teil zum Schluss baut schließlich den HTML Code auf, mit dem das Bild eingebunden wird.

Ein paar Dinge Bleiben für die Zukunft noch zu tun:

  • Eine zusätzliche maschinenlesbare Auszeichnung mittels RDFa wäre schön, damit Suchmaschinen das Bild auch korrekt als Creative Commons erkennen können
  • Die Attribute sind derzeit noch case sensitive
  • Der lange Aufbau des Strings am Ende sollte optimiert werden

Für einen ersten Filter fand ich es ein ganz nettes Projekt, das mir die ein oder andere Falltür aufgezeigt hat.