Martin Lantzsch
Software Entwickler
2. Oktober 2011

API Bashing vom Feinsten

2. Oktober 2011 - Geschrieben von Martin - Keine Kommentare

Bei „Vier Fäuste für ein Halleluja“ ziehen Felix von Leitner und Erdgeist im Rahmen des CCC Kongresses 2009 (26C3) schön über vermurkste APIs wie HTTP, X11, smb und natürlich über Sockets her.

Nehmt euch die Stunde zeit und hört es euch an. Den Programmierern unter euch wird es sicher das ein oder andere Auge öffnen. Und natürlich ist es super lustig. Wie die beiden über die APIs herziehen ist echt vom Feinsten. Es wird kein Blatt vor den Mund genommen.

Da hab ich gesaugt: [mp3] [ogg] [mp4]
Und hier gibt es eine FTP Liste: http://events.ccc.de/congress/2009/wiki/Ftp

Das Video ist meiner Meinung nach nicht unbedingt von Nöten, auf den Folien sind nur der Vollständigkeit halber „kurze“ Code Ausschnitte und Schlagworte zu dem was gesagt wird.

30. August 2011

Jamendo Songs Downloaden (Script)

30. August 2011 - Geschrieben von Martin - Keine Kommentare

Gestern habe ich ein kleines Script in PHP geschrieben, mit dem man Jamendo Songs inklusiv Cover Bild herunterladen kann. Das Script liest die Informationen auf dem Jamendo Server aus und speichert die Tracks in folgendem Format:

/[ALBUM NAME]/[INTERPRET] - [TITEL].ogg
/[ALBUM NAME]/[INTERPRET] - [TITEL]_cover.jpg

Hier das Script, evl schreibe ich noch einen Downloader in Java oder C#, falls ich demnächst ein wenig Zeit finde:

<?php
if(isset($_GET['id'])) {
	$trackID = (int)$_GET['id'];
	// get download url
	$trackUrl = file_get_contents('http://www.jamendo.com/get/track/id/track/audio/plain/'.$trackID.'/?aue=ogg2');
	if($trackUrl == false) {
		echo 'track id not availible!';
	} else {
		// get track information
		$trackTitle = (string)file_get_contents('http://www.jamendo.com/get/album/id/album/title/plain/'.$trackID.'/');
		$trackInterpret = (string)file_get_contents('http://www.jamendo.com/get/artist/id/track/title/plain/'.$trackID.'/');
		$trackAlbum = (string)file_get_contents('http://www.jamendo.com/get/album/id/track/title/plain/'.$trackID.'/');
 
		$location = './'.$trackAlbum.'/'.$trackInterpret.' - '.$trackTitle;
		if(!file_exists($trackAlbum)) {
			mkdir($trackAlbum);
		}
		// download track
		$track = file_get_contents($trackUrl);
		file_put_contents($location.'.ogg', $track);
		// download cover
		$trackCoverUrl = file_get_contents('http://www.jamendo.com/get/album/id/track/artworkurl/plain/'.$trackID.'/?artwork_size=400');
		if($trackCoverUrl != false) {
			file_put_contents($location.'_cover.jpg', file_get_contents($trackCoverUrl));
		}
 
		echo 'track download finished!';
	}
}
echo '<p><form action="jamendo.php" method="GET"><label for="id">track id:</label> <input type="text" name="id" id="id" /><input type="submit" value="download" /></form></p>';