#!/usr/bin/php5 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; } ?>