获取所有上传的视频

Getting All Uploaded Videos

我需要一个 Java 方法,该方法可以为我提供一个列表,其中包含上传到我自己的 YouTube 频道的所有 YouTube 观看网址(或视频 ID)。由于应该包含私人和未列出的视频,因此必须通过用户名和密码或 OAuth 2.0.

进行身份验证

此外,我知道 YouTube API but I still don't know how this can be done. Any working code snippets e.g. no vague descriptions like 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 可以进行搜索查询。

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 和 Jeremy Walker 的 sample code