我需要一种Java方法,它会为我提供一个列表,其中列出了在我自己的YouTube频道上传的所有YouTube观看网址(或视频ID)。由于应包含私有和不公开的视频,因此必须通过用户名和密码或OAuth 2.0
进行身份验证。
另外,我知道YouTube API,但我仍然不知道如何做到这一点。任何有效的代码片段,例如:没有像here那样模糊的描述,因为当它必须自动完成时它没有用。
我基本上需要这样的方法:
public static List<String> getAllUploadedVideos(String channelUrl)
{
// use OAuth 2.0 to gain viewing permissions for the YouTube account
// get all uploaded videos
}
Here可以进行搜索查询。
答案 0 :(得分:0)
public static List<String> getUploadedVideoIds() throws IOException
{
YouTube youtube;
List<String> scopes = Lists
.newArrayList("https://www.googleapis.com/auth/youtube.readonly");
Credential credential = Auth.authorize(scopes, "myuploads");
youtube = new YouTube.Builder(Auth.HTTP_TRANSPORT, Auth.JSON_FACTORY,
credential).setApplicationName(
"youtube-cmdline-myuploads-sample").build();
YouTube.Channels.List channelRequest = youtube.channels().list(
"contentDetails");
channelRequest.setMine(true);
channelRequest.setFields("items/contentDetails,nextPageToken,pageInfo");
ChannelListResponse channelResult = channelRequest.execute();
List<Channel> channelsList = channelResult.getItems();
String uploadPlaylistId = channelsList.get(0).getContentDetails()
.getRelatedPlaylists().getUploads();
List<PlaylistItem> playlistItemList = new ArrayList<PlaylistItem>();
YouTube.PlaylistItems.List playlistItemRequest = youtube
.playlistItems().list("id,contentDetails,snippet");
playlistItemRequest.setPlaylistId(uploadPlaylistId);
playlistItemRequest
.setFields("items(contentDetails/videoId),nextPageToken,pageInfo");
String nextToken = "";
do
{
playlistItemRequest.setPageToken(nextToken);
PlaylistItemListResponse playlistItemResult = playlistItemRequest
.execute();
playlistItemList.addAll(playlistItemResult.getItems());
nextToken = playlistItemResult.getNextPageToken();
} while (nextToken != null);
List<String> videoIds = new ArrayList<>();
for (PlaylistItem playListItem : playlistItemList)
{
videoIds.add(playListItem.getContentDetails().getVideoId());
}
return videoIds;
}
基于YouTube API和杰里米·沃克的sample code。