All pastes #673755 Raw Edit

Mine

public php v1 · immutable
#673755 ·published 2007-08-28 17:26 UTC
rendered paste body
#!/usr/bin/php5<?/****************************************************************	Cover Reciever 0.0.5	27.o8.2oo7 00:16 GMT+3 :)	!! descr:	Тащит из сети обложки к альбомам из сети.	!! info:	Заточил немножко под плеер Amarok (http://amarok.kde.org)	!! running	copy to ~/.kde/share/apps/amarok/scripts and restart amarok	!! changes	[*] small fixes	[*] now it is an amarok script )))	 lokee, http://lokee.rv.ua	tnx 2 dicson ****************************************************************/$line = trim(fgets(STDIN));while (TRUE) {	switch ($line) {		case 'trackChange':			getCover();			break;	}	$line = trim(fgets(STDIN));}/*******    Main func*****/function getCover() {		// getting info from amarok	$song = array();	$keys = array(	'artist',			'title',			'coverImage',			'album',			'rating',			'path' );	for ($i=0; $i < count($keys); $i++) {		$tmp = array();		exec ("dcop amarok player $keys[$i]", &$tmp);		$song[$keys[$i]] = $tmp[0];	}	$trimlist = " \t\n\r";	print_r($song);	echo "\n\n";	if (strlen($song['album']) == 0 || strlen($song['artist']) == 0) {		// no album		outmsg("ERR: No Album or Artist in tags!\n", true);		return;	}/*elseif (strpos($song['coverImage'], 'nocover.png') == false) {	// cover exist	echo "ATT: Cover already exist!\n";	die();}*/	// sleep (убрать спячку если не нужна)	sleep(3);	$lastfmURL = 'http://ws.audioscrobbler.com/1.0/album/'.rawurlencode($song[artist]).'/'.rawurlencode($song[album]).'/info.xml';	outmsg("NFO: XML URL:\n".$lastfmURL."\n\n", false);	// getting xml file from Last.FM	// убрать если не нужны//	$proxy = 'proxy.energi.net.ua:3128';	$useragent = 'FlashGet';	$socketTimeout = 20;	$ch = curl_init();	curl_setopt ($ch, CURLOPT_URL, $lastfmURL);	curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);	curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $socketTimeout);	if (isset($useragent)) {		curl_setopt ($ch, CURLOPT_USERAGENT, $useragent);		outmsg("\tUser Agent: $useragent\n", false);	}	if (isset($proxy)) {		curl_setopt ($ch, CURLOPT_PROXY, $proxy);		outmsg("\tProxy: $proxy\n", false);	}	$albumXML = curl_exec($ch);	curl_close($ch);	if (strlen($albumXML) == 0) {		// no data recieved or some error		outmsg("ERR: No XML data recieved!\n", true);		return;	}	elseif (strpos($albumXML, 'No such album') !== false || strpos($albumXML, 'not found')) {		outmsg("ERR: Some Shit! :((\n\n\tRECV:\n\t$albumXML\n\n", true);		return;	}	// all allright	$album = array();	$xml = simplexml_load_string($albumXML);	$song['release'] = trim((string) $xml->releasedate, $trimlist);	$song['coverURL'] = (string) $xml->coverart->large;	$dir = substr($song['path'], 0, strrpos($song['path'], '/')); 	$ext = substr(strrchr($song['coverURL'], '.'), 1);	$cn = 'cover';	$fn = $dir.'/'.$cn.'.'.$ext;	if (file_exists($dir.'/'.$cn.'.png')) {		outmsg("NFO: Cover exists!\n", true);		return;	}	outmsg("\nNFO: Album release date:\t$song[release]\n", false);	outmsg("NFO: Cover (large size) URL:\n\t$song[coverURL]\n", false);	outmsg("NFO: Path for saving:\n\t$fn\n", false);	// download cover	$socketTimeout = 45;	outmsg("\nNFO: Recieving cover.. Timeout: $socketTimeout sec.\n". false);	$ch = curl_init();	curl_setopt ($ch, CURLOPT_URL, $song['coverURL']);	curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);	curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $socketTimeout);	if (isset($useragent)) {		curl_setopt ($ch, CURLOPT_USERAGENT, $useragent);		outmsg("\tUser Agent: $useragent\n", false);	}	if (isset($proxy)) {		curl_setopt ($ch, CURLOPT_PROXY, $proxy);		outmsg("\tProxy: $proxy\n", false);	}	$cover = curl_exec($ch);	curl_close($ch);	if (strlen($cover) > 0) {		// save pic		if (!$fp = fopen($fn, 'wb')) {			outmsg("ERR: Can't create file:\n$fn\n", true);			return;		}		if (fwrite($fp, $cover) == false) {			outmsg("ERR: Can't write to file:\n$fn\n", true);			return;		}		fclose($fp);		outmsg("NFO: Cover recieved and saved! Size: ".filesize($fn)."\n", false);			if ($ext == 'jpg' || $ext == 'jpeg') {			outmsg("NFO: Converting JPG -> PNG\n", false);			exec ("convert \"$dir/$cn.$ext\" \"$dir/$cn.png\"");			// remove jpeg file			unlink($fn);			outmsg("NFO: Deleting JPG cover\n", false);			$ext = 'png';		}		$dirfile = $dir.'/.directory';		if (!$fp = fopen($dirfile, 'wb')) {			outmsg("ERR: Can't create $dirfile!\n", true);			return;		}		if (fwrite($fp, "[Desktop Entry]\nIcon=./$cn.$ext\n") == false) {			outmsg("ERR: Can't write to $dirfile!\n", true);			return;		}		fclose($fp);		outmsg("NFO: $dirfile successfully saved!\n", false);	}	// print popup	exec ("kdialog --title \"Cover Reciever log\" --passivepopup \"Cover for $song[artist] - $song[album] recieved and saved!\" 3");	return;}/*****/*    Outputs script message (ERR, NFO, ATT, etc)/****/function outmsg($message, $die = false) {	fwrite (STDERR, $message);	if ($die) {		//return 3;	}	return;}?>