2015-08-21 80 views
2

我想問你的幫助我有一個xml源(http://livefmhits.6te.net/nowplay.xml)它給了我這首歌的來源,我想通過lastfm去掉封面( artist.getinfo)回聲我試過如下:從last.fm獲取藝術家圖像xml(api artist.getinfo)

<?php 
$xml = simplexml_load_file('http://livefmhits.6te.net/nowplay.xml'); 
$artist = urlencode($xml->TRACK["ARTIST"]);  
$url = 'http://ws.audioscrobbler.com/2.0/?method=artist.getinfo&artist='.$artist.&api_key=b25b959554ed76058ac220b7b2e0a026; 
$xml2 = @simplexml_load_file($url); 
if ($xml2 === false) 
{ 
    echo("Url failed"); // do whatever you want to do 
} 
else 
{ 
    if($xml2->track->album->image[3]) 
    { 
     echo '<img src="'; 
     echo((string) $xml2->track->album->image[3]);  
     echo '">'; 
    } 
    else 
    { 
     echo "<img src='http://3.bp.blogspot.com/-SEsYAbASI68/VZ7xNuKy-GI/AAAAAAAAA3M/IWcGRDoXXms/s1600/capaindisponivel.png'"; // do whatever you want to do 
    } 
} 

我不能夠提取源必須是錯的回聲,我想刪除,上面寫着「巨型」的形象。我向你完整的鏈接 http://ws.audioscrobbler.com/2.0/?method=artist.getinfo&lang=ru&artist=COLDPLAY&api_key=ae9dc375e16f12528b329b25a3cca3ee,但我做了後你的,但我不能(Get large artist image from last.fm xml (api artist.getinfo)

我來問你的幫助,這項工作從一開始就感謝可用性

回答

0

這裏我如何在json中做這件事。這在XML中幾乎是一樣的。

首先,我們定義的API KEY:

define('YOUR_API_KEY', 'b25b959554ed76058ac220b7b2e0a026'); 

最好是它從代碼中分離出來,這讓事情變得更簡單,如果你需要在你的代碼在其他地方重複使用它。 (例如用於其他功能)

然後,我們創建了2個我們需要使魔法發生的功能。

1)要查詢LastFM等的API,並得到它的內容,我們將使用捲曲:

function _curl($url) 
    { 

     $ch = curl_init(); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
     curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15); 

     if(strtolower(parse_url($url, PHP_URL_SCHEME)) == 'https') 
     { 
      curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,1); 
      curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,1); 
     } 

     curl_setopt($ch, CURLOPT_URL, $url); 
     $data = curl_exec($ch); 
     curl_close($ch); 

     return $data; 
    } 

2)LastFM等提供了許多選擇。就我個人而言,我發現將主查詢分解成函數更容易。但是,因爲你只要目標圖像,這裏是功能我會用:

function lfm_img($artist) 
{ 
    $url = "http://ws.audioscrobbler.com/2.0/?method=artist.getinfo&artist=$artist&api_key=".YOUR_API_KEY."&format=json";    
    $json = _cul($url); 

    $data = str_ireplace("#text", "text", $json); 
    $list = json_decode($data); 
    //If an error occurs... 
    if($list->error) 
     return 'ERROR.'. $list->error;  
    //That's where we get the photo. We try to get the biggest size first, if not we try smaller sizes. Returns '0' if nothing is found. 
    if($list->artist->image[4]) 
     $img = $list->artist->image[4]->text; 
    else if($list->artist->image[3]) 
     $img = $list->artist->image[3]; 
    else if($list->artist->image[2]) 
     $img = $list->artist->image[2]; 
    else if($list->artist->image[1]) 
     $img = $list->artist->image[1]; 
    else if($list->artist->image[0]) 
     $img = $list->artist->image[0]; 
    else 
     $img = 0; 

    return $img; 
} 

最後,使用它們:

$artist_query = 'Nirvana'; 
$artist_image = lfm_img($artist); 
//display image 
echo '<img src="'. $artist_image .'" alt="'. $artist_query .'" />'; 

我認爲這是自我解釋在這裏。 ;)

希望它有幫助!

+0

SuN,這個工作沒事,謝謝! –

相關問題