我想使用Google的自定义搜索Api通过Java在网络上搜索歌曲歌词。
为了获得当前正在播放的歌曲的名称和艺术家,我使用了Tesseract OCR。即使OCR完美运行,我也常常无法获得任何结果。
但是,当我手动尝试时:在网络浏览器中打开Google并搜索相同的字符串,然后它可以正常工作。
所以现在我真的不知道手动搜索引擎和api调用之间有什么区别。
我必须在Api请求中添加一些参数吗?
//The String searchString is what I am searching for, so the song name and artist
String searchUrl = "https://www.googleapis.com/customsearch/v1?key=(myKEY)=de&cx=(myID)&q=" + searchString + "lyrics";
String data = getData(searchUrl);
JSONObject json = new JSONObject(data);
String link = "";
try
{
link = json.getJSONArray("items").getJSONObject(0).getString("link");
URI url = new URI(link);
System.out.println(link);
Desktop.getDesktop().browse(url);
}
catch(Exception e)
{
System.out.println("No Results");
}
private static String getData(String _urlLink) throws IOException
{
StringBuilder result = new StringBuilder();
URL url = new URL(_urlLink);
URLConnection conn = url.openConnection();
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
while((line = rd.readLine()) != null)
{
result.append(line);
}
rd.close();
return result.toString();
}
答案 0 :(得分:0)
尝试在&cx 之前删除 = de ,并使用+
来表示单词之间的间隔。像这样-
https://www.googleapis.com/customsearch/v1?key=(yourKEY)&cx=(yourID)&q=paradise+coldplay+lyrics