webForumDet fria alternativet

Hämta JSON, hantera och extrahera data och sedan prutta ut på sidan

PHP

1 svar · 698 visningar · startad av Palle

Medlem sedan apr. 20003 174 inlägg
Frågan#1

Hej,

Jag har försökt knåpat ihop en spellista, baserad på LastFMs API, dit jag scrobblar det jag lyssnar på i Spotify.
Det fungerar jättebra när jag gör det med JavaScript .. men nu vill jag omvandla den till PHP, men där går jag bet kan jag lova. Fattar ingenting, haha. ;)

Som sagt, jag är ingen fena på det här med php så rätta mig gärna, men framförallt - hilfe bitte.

Här är min class:

<?php 
class SpotifyPlaylist{
	function SpotifyPLAYLIST(){
		$this->searchURL = 'http://url-och-password-och-grejjer-till-deras-api';
	}
 	function getPlaylist(){
		$ch = curl_init();
		curl_setopt($ch,CURLOPT_URL,$this->searchURL);
		curl_setopt($ch,CURLOPT_POST,1);
		curl_setopt($ch,CURLOPT_HTTPHEADER,array("Content-Type: application/json"));
		curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
		$playlist = curl_exec($ch);
		curl_close($ch);
		return json_decode($playlist);
	}
}
?>

Och här är försöket att få ut något:

<?php

	$spotify = new SpotifyPLAYLIST();
	$tracks = $spotify->getPlaylist();

	foreach ($tracks->recenttracks->track as $track){

		echo print_r($track) .'<br><br>';

	}

?>

När jag kör en echo print_r($track), här ovan, får jag ut spellistan så här, här är 2 exempel:

stdClass Object ( [artist] => stdClass Object ( [#text] => In Flames [mbid] => 31745282-b1ea-4d62-939f-226b14d68e7c ) [name] => Enter Tragedy [streamable] => 1 [mbid] => [album] => stdClass Object ( [#text] => Sounds Of A Playground Fading [mbid] => ) => http://www.last.fm/music/In+Flames/\_/Enter+Tragedy [image] => Array ( [0] => stdClass Object ( [#text] => http://userserve-ak.last.fm/serve/34s/64957262.jpg => small ) [1] => stdClass Object ( [#text] => http://userserve-ak.last.fm/serve/64s/64957262.jpg => medium ) [2] => stdClass Object ( [#text] => http://userserve-ak.last.fm/serve/126/64957262.jpg => large ) [3] => stdClass Object ( [#text] => http://userserve-ak.last.fm/serve/300x300/64957262.jpg => extralarge ) ) [@attr] => stdClass Object ( [nowplaying] => true ) ) 1

stdClass Object ( [artist] => stdClass Object ( [#text] => In Flames [mbid] => 31745282-b1ea-4d62-939f-226b14d68e7c ) [name] => Ropes [streamable] => 1 [mbid] => [album] => stdClass Object ( [#text] => Sounds Of A Playground Fading [mbid] => ) => http://www.last.fm/music/In+Flames/\_/Ropes [image] => Array ( [0] => stdClass Object ( [#text] => http://userserve-ak.last.fm/serve/34s/64957262.jpg => small ) [1] => stdClass Object ( [#text] => http://userserve-ak.last.fm/serve/64s/64957262.jpg => medium ) [2] => stdClass Object ( [#text] => http://userserve-ak.last.fm/serve/126/64957262.jpg => large ) [3] => stdClass Object ( [#text] => http://userserve-ak.last.fm/serve/300x300/64957262.jpg => extralarge ) ) [date] => stdClass Object ( [#text] => 21 Oct 2011, 11:28 [uts] => 1319196515 ) ) 1

Informationen jag vill ha ut ur detta är artist, titel, album, datum (eller om låten spelas just nu). Jag har rödmarkerat dessa värden i citat här ovan.

Hur ska jag lyckas med detta? :q

Tack på förhand! :bire

Medlem sedan apr. 20003 174 inlägg
#2

Fick hjälp av en kompis som kan det här bra mycket bättre än mig. :)

Edit: Av nån anledning laggar datumet 2h, därav fifflandet med datumet.

I runda slängar är detta lösningen, resultatet ser ni här.

<?php

	$spotify = new SpotifyPLAYLIST();
	$tracks = $spotify->getPlaylist();

	foreach ($tracks->recenttracks->track as $track){

	    $title = $track->name;
	    $artist = $track->artist->{'#text'}; 
	    $album = $track->album->{'#text'};
		$date = (isset($track->date)) ? $track->date->{'#text'} : '';
		$playing = (isset($track->{'@attr'}) && $track->{'@attr'}->nowplaying == 'true') ? true : false;

		if($playing){

			// echo ...

		} else {

			$newdate = strtotime('+2 hours', strtotime($date));
			$longDate = date('D M d Y H:i', $newdate);
			$shortDate = date('Y-m-d H:i', $newdate);

			// echo ...

		}
	}

?>
249 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)