获取所有上传的视频

时间:2015-06-07 17:08:46

标签: java video youtube

我需要一种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可以进行搜索查询。

1 个答案:

答案 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