youtube-api搜索响应(java)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了youtube-api搜索响应(java),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含7360字,纯文字阅读大概需要11分钟。
内容图文
![youtube-api搜索响应(java)](/upload/InfoBanner/zyjiaocheng/767/ca343208444349a2aca2189b15d234f8.jpg)
使用java的YoutubeApi,我进行了视频搜索.
通过使用以下样本,它运作良好.
载荷大小://developers.google.com/youtube/v3/code_samples/java#search_by_keyword
获得以下数据.
{
"Items": [
search resource
]
}
我想要“NextPageToken”和“PrevPageToken”.
所以我添加了以下代码.
searchResponse.getNextPageToken();
但结果是“无效”;
我错了什么?
参考:ttps://developers.google.com/youtube/v3/docs/search/list
这是代码.谢谢.
/ *
*版权所有(c)2012 Google Inc.
*
*根据Apache许可证2.0版(“许可证”)获得许可;你可能不会使用这个文件,除了
*符合许可证.您可以在以下位置获取许可证副本
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*除非适用法律要求或书面同意,否则根据许可证分发的软件
*按“原样”分发,不附带任何形式的保证或条件,快递
*或暗示.有关管理权限和限制的特定语言,请参阅许可证
*许可证.
* /
package com.google.api.services.samples.youtube.cmdline.youtube_cmdline_search_sample;
import com.google.api.client.googleapis.json.GoogleJsonResponseException;
import com.google.api.client.http.HttpRequest;
import com.google.api.client.http.HttpRequestInitializer;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.jackson2.JacksonFactory;
import com.google.api.services.youtube.YouTube;
import com.google.api.services.youtube.YouTube.Search;
import com.google.api.services.youtube.model.ResourceId;
import com.google.api.services.youtube.model.SearchListResponse;
import com.google.api.services.youtube.model.SearchResult;
import com.google.api.services.youtube.model.Thumbnail;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;
/**
* Prints a list of videos based on a search term.
*
* @author Jeremy Walker
*/
public class Youtube_sample_2 {
/** Global instance properties filename. */
private static String PROPERTIES_FILENAME = "youtube.properties";
/** Global instance of the HTTP transport. */
private static final HttpTransport HTTP_TRANSPORT = new NetHttpTransport();
/** Global instance of the JSON factory. */
private static final JsonFactory JSON_FACTORY = new JacksonFactory();
/** Global instance of the max number of videos we want returned (50 = upper limit per page). */
private static final long NUMBER_OF_VIDEOS_RETURNED = 25;
/** Global instance of Youtube object to make all API requests. */
private static YouTube youtube;
/**
* Initializes YouTube object to search for videos on YouTube (Youtube.Search.List). The program
* then prints the names and thumbnails of each of the videos (only first 50 videos).
*
* @param args command line args.
*/
public static void main(String[] args) {
// Read the developer key from youtube.properties
Properties properties = new Properties();
try {
InputStream in = Search.class.getResourceAsStream("/" + PROPERTIES_FILENAME);
properties.load(in);
} catch (IOException e) {
System.err.println("There was an error reading " + PROPERTIES_FILENAME + ": " + e.getCause()
+ " : " + e.getMessage());
System.exit(1);
}
try {
/*
* The YouTube object is used to make all API requests. The last argument is required, but
* because we don't need anything initialized when the HttpRequest is initialized, we override
* the interface and provide a no-op function.
*/
youtube = new YouTube.Builder(HTTP_TRANSPORT, JSON_FACTORY, new HttpRequestInitializer() {
public void initialize(HttpRequest request) throws IOException {}
}).setApplicationName("youtube-cmdline-search-sample").build();
// Get query term from user.
String queryTerm = getInputQuery();
YouTube.Search.List search = youtube.search().list("id,snippet");
// System.out.println(search);
/*
* It is important to set your developer key from the Google Developer Console for
* non-authenticated requests (found under the API Access tab at this link:
* code.google.com/apis/). This is good practice and increased your quota.
*/
String apiKey = properties.getProperty("youtube.apikey");
search.setKey(apiKey);
search.setQ(queryTerm);
/*
* We are only searching for videos (not playlists or channels). If we were searching for
* more, we would add them as a string like this: "video,playlist,channel".
*/
search.setType("video");
/*
* This method reduces the info returned to only the fields we need and makes calls more
* efficient.
*/
search.setFields("items(id/kind,id/videoId,snippet/title,snippet/thumbnails/default/url)");
search.setMaxResults(NUMBER_OF_VIDEOS_RETURNED);
SearchListResponse searchResponse = search.execute();
System.out.println(searchResponse);
// System.out.println(searchResponse.getNextPageToken());
// System.out.println(searchResponse.getPageInfo());
List<SearchResult> searchResultList = searchResponse.getItems();
// System.out.println(searchResultList);
if (searchResultList != null) {
prettyPrint(searchResultList.iterator(), queryTerm);
}
} catch (GoogleJsonResponseException e) {
System.err.println("There was a service error: " + e.getDetails().getCode() + " : "
+ e.getDetails().getMessage());
} catch (IOException e) {
System.err.println("There was an IO error: " + e.getCause() + " : " + e.getMessage());
} catch (Throwable t) {
t.printStackTrace();
}
}
/*
* Returns a query term (String) from user via the terminal.
*/
private static String getInputQuery() throws IOException {
String inputQuery = "";
System.out.print("Please enter a search term: ");
BufferedReader bReader = new BufferedReader(new InputStreamReader(System.in));
inputQuery = bReader.readLine();
if (inputQuery.length() < 1) {
// If nothing is entered, defaults to "YouTube Developers Live."
inputQuery = "YouTube Developers Live";
}
return inputQuery;
}
/*
* Prints out all SearchResults in the Iterator. Each printed line includes title, id, and
* thumbnail.
*
* @param iteratorSearchResults Iterator of SearchResults to print
*
* @param query Search query (String)
*/
private static void prettyPrint(Iterator<SearchResult> iteratorSearchResults, String query) {
System.out.println("\n=============================================================");
System.out.println(
" First " + NUMBER_OF_VIDEOS_RETURNED + " videos for search on \"" + query + "\".");
System.out.println("=============================================================\n");
if (!iteratorSearchResults.hasNext()) {
System.out.println(" There aren't any results for your query.");
}
while (iteratorSearchResults.hasNext()) {
SearchResult singleVideo = iteratorSearchResults.next();
ResourceId rId = singleVideo.getId();
// Double checks the kind is video.
if (rId.getKind().equals("youtube#video")) {
Thumbnail thumbnail = (Thumbnail) singleVideo.getSnippet().getThumbnails().get("default");
System.out.println(" Video Id" + rId.getVideoId());
System.out.println(" Title: " + singleVideo.getSnippet().getTitle());
System.out.println(" Thumbnail: " + thumbnail.getUrl());
System.out.println("\n-------------------------------------------------------------\n");
}
}
}
}
这是文件.
youtube.properties
youtube.apikey = AIzaSyDLnvt0SJRc4hLUWQBiLxkGFLWbsjsRvjQ
解决方法:
user65415642,
我不知道java的youtube api,但我已经在我的应用程序中完成了youtube api,即iphone app(ios).
searchString = [NSString stringWithFormat:@“https://www.googleapis.com/youtube/v3/search?part=snippet&contentdetails&q=%@&type=video&videoSyndicated=true&key=%@&maxResults=%d”,searchKey,YOUTUBE_API_KEY,RESULTS_PER_CALL];
通过调用此URL,您可以获得带有nextpage令牌的响应
内容总结
以上是互联网集市为您收集整理的youtube-api搜索响应(java)全部内容,希望文章能够帮你解决youtube-api搜索响应(java)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。