我正在建立一个网站,我希望用户能够开始输入一个乐队名称(例如,“Rad”),并让Discogs API显示10个与他们最相似的建议(例如,“ Radical Face“,”Radiohead“等。这些建议可以按字母顺序排序,也可以按照受欢迎程度排序。
问题是我不知道如何向Discogs API提出这样的请求。这是我现在正在使用的代码,它检索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/>';
?>
答案 0 :(得分:0)
使用discogs API,您可以轻松执行搜索。我想您已经查看了文档:https://www.discogs.com/developers/#page:database,header:database-search
在那里你甚至可以说你只想搜索艺术家。检索结果时,您必须自己按字母顺序对它们进行排序,或者必须按结果的顺序进行中继。据我所知,从文档中我可以看出,这种顺序已经受到了某种程度的普及。它与网站集成搜索中的实现相同。
您应该记住,结果集可能非常大。因此,按字母顺序排序并不是最好的主意,因为您必须检索所有结果页面。在这里,您应该将page_size
参数增加到每页最多100个项目。