Я создаю веб-сайт, на котором я хотел бы, чтобы пользователь мог начать вводить имя группы (например, «Rad»), и чтобы Discogs API отображал 10 наиболее похожих на него предложений (например, «Radical Face»). , «Radiohead» и т. Д.). Эти предложения могут быть отсортированы в алфавитном порядке или, в идеале, по популярности.
Проблема в том, что я не знаю, как сделать такой запрос к API Discogs. Вот код, с которым я сейчас работаю, который извлекает содержимое http://api.discogs.com/releases/1 и разбирает его.
Любое понимание будет оценено. Спасибо.
<?php
$url = "http://api.discogs.com/releases/1"; // add the resource info to the url. Ex. releases/1
//initialize the session
$ch = curl_init();
//Set the User-Agent Identifier
curl_setopt($ch, CURLOPT_USERAGENT, 'SiteName/0.1 +http://your-site-here.com');
//Set the URL of the page or file to download.
curl_setopt($ch, CURLOPT_URL, $url);
//Ask cURL to return the contents in a variable instead of simply echoing them
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//Execute the curl session
$output = curl_exec($ch);
//close the session
curl_close ($ch);function textParser($text, $css_block_name){
$end_pattern = '], "';
switch($css_block_name){
# Add your pattern here to grab any specific block of text
case 'description';
$end_pattern = '", "';
break;
}
# Name of the block to find
$needle = "\"{$css_block_name}\":";
# Find start position to grab text
$start_position = stripos($text, $needle) + strlen($needle);
$text_portion = substr($text, $start_position, stripos($text, $end_pattern, $start_position) - $start_position + 1);
$text_portion = str_ireplace("[", "", $text_portion);
$text_portion = str_ireplace("]", "", $text_portion);
return $text_portion;
}
$blockStyle = textParser($output, 'styles');
echo $blockStyle. '<br/>';
$blockDescription = textParser($output, 'description');
echo $blockDescription. '<br/>';?>
С API Discogs вы можете легко выполнить поиск. Я думаю, что вы уже просмотрели документацию: https://www.discogs.com/developers/#page:database,header:database-search
Там можно даже сказать, что вы хотите только искать художников. Когда вы получаете результаты, вы должны либо отсортировать их в алфавитном порядке самостоятельно, либо указать порядок следования результатов. Я думаю, что этот порядок уже пользуется популярностью среди дискотек, насколько я могу судить по документации. И это та же реализация, что и на сайте интегрированного поиска.
Следует помнить, что набор результатов может быть очень большим. Так что сортировка по алфавиту не будет лучшей идеей, так как вам нужно получить все страницы результатов. Здесь вы должны увеличить page_size
параметр максимум 100 элементов на странице.
Других решений пока нет …