В настоящее время я пытаюсь использовать метаданные нашего потокового провайдера StreamOn, чтобы отправить запрос в Last.FM, чтобы получить оригинальные обложки альбомов. Я новичок в мире API, так что это довольно запутанно для меня, однако я управляю. Моя проблема возникает при отправке и получении изображения по XML. В приведенном ниже коде содержимое страницы метаданных устанавливается как переменные, которые затем отображаются A.) и B.) используется для поиска соответствующих обложек альбомов.Ошибка Отправка запроса для Last.FM Обложка альбома
<?php
$request = file_get_contents('http://ckpk.streamon.fm/card.php');
$doubleQuotation = '"';
//Artist Request
$artistTitle = '"artist": "';
$artistTitlePosition = intval(strpos($request, $artistTitle));
$artistBeginningPosition = $artistTitlePosition + 11;
$artistEndingPosition = intval(strpos($request, $doubleQuotation, $artistBeginningPosition));
$artistName = substr($request, $artistBeginningPosition, $artistEndingPosition - $artistBeginningPosition);
echo '<b>' . $artistName . '</b>';
echo '<br />';
$artist = $artistName;
//Track Request
$trackTitle = '"title": "';
$trackTitlePosition = intval(strpos($request, $trackTitle));
$trackBeginningPosition = $trackTitlePosition + 10;
$trackEndingPosition = intval(strpos($request, $doubleQuotation, $trackBeginningPosition));
$trackName = substr($request, $trackBeginningPosition, $trackEndingPosition - $trackBeginningPosition);
echo '<i>' . $trackName . '</i>';
echo '<br />';
//Album Name Request
$albumTitle = '"album": "';
$albumTitlePosition = intval(strpos($request, $albumTitle));
$albumBeginningPosition = $albumTitlePosition + 10;
$albumEndingPosition = intval(strpos($request, $doubleQuotation, $albumBeginningPosition));
$albumName = substr($request, $albumBeginningPosition, $albumEndingPosition - $albumBeginningPosition);
echo $albumName;
$album = $albumName;
/*
* Last.FM Artwork Class
* Author: Caleb Mingle (@dentafrice)
* http://dentafrice.com
*/
class LastFM {
const API_KEY = "7facb82a2a573dd483d931044030e30c";
public static $size_map = array("small" => 0, "medium" => 1, "large" => 2, "extralarge" => 3, "mega" => 4);
public static function getArtwork($artist, $return_image = false, $size = "image_mega", $album) {
$artist = urlencode($artist);
$returnedInfo = "http://ws.audioscrobbler.com/2.0/?method=artist.getinfo&api_key=" . self::API_KEY . "&artist=" . $artist . "&album=" . $album . "&image=" . self::$size_map[$size] . "&format=json";
$returnedInfo = @file_get_contents($returnedInfo);
if(!$returnedInfo) {
return; // Artist lookup failed.
}
$xml = new SimpleXMLElement($xml);
$xml = $xml->artist;
$xml = $xml->image[self::$size_map[$size]];
return (!$return_image) ? $xml : '<img src="' . $xml . '" alt="' . urldecode($artist) . '" />';
}
}
$artwork = LastFM::getArtwork($artist, true, $size, $album);
if($artwork) {
echo $artwork;
}
else{
return;
}
?>
Я временно стилизовал элементы, чтобы различать их, и я буду беспокоиться о стилизации позже. Тем не менее, я хотел бы знать, как использовать данные для отправки запроса на сервер Lsat.FM и получать изображение, чтобы правильно отобразить его. С StreamOn отличается от других, например, ShoutCast.
Каков ваш точный вопрос? Не могу понять это на данный момент. Кстати, формат указан как JSON, в то время как он предполагает объект XML .. 'self :: $ size_map [$ size]. "& format = json"; ' – edwardmp
Может ли быть проблема? Мой вопрос касался того, как загрузить изображение XML, потому что я думал, что правильно его отправляю в Last.FM. Я должен использовать метаданные и вставлять их в этот URL через конкатенацию. Когда вы переходите к файлу JSON, он ссылается на исходное изображение. Мне нужен этот образ, но я не знаю, как туда добраться. Это страница, которую я использовал для тестирования: http://wpovfm.org/moldycheese/asdf.php – montelc0