Uses 72K of libraries. Compilation Failed (169L/3K).
1 | !7 |
2 | |
3 | lib 1009385 // google auth client |
4 | lib 1009386 // google api client json (not useful) |
5 | |
6 | import com.google.api.client.auth.oauth2.Credential; |
7 | import com.google.api.client.googleapis.json.GoogleJsonResponseException; |
8 | import com.google.api.services.samples.youtube.cmdline.Auth; |
9 | import com.google.api.services.youtube.YouTube; |
10 | import com.google.api.services.youtube.model.Channel; |
11 | import com.google.api.services.youtube.model.ChannelListResponse; |
12 | import com.google.api.services.youtube.model.PlaylistItem; |
13 | import com.google.api.services.youtube.model.PlaylistItemListResponse; |
14 | import com.google.common.collect.Lists; |
15 | |
16 | /** |
17 | * Print a list of videos uploaded to the authenticated user's YouTube channel. |
18 | * |
19 | * @author Jeremy Walker |
20 | */ |
21 | |
22 | /** |
23 | * Define a global instance of a Youtube object, which will be used |
24 | * to make YouTube Data API requests. |
25 | */ |
26 | private static YouTube youtube; |
27 | |
28 | /** |
29 | * Authorize the user, call the youtube.channels.list method to retrieve |
30 | * the playlist ID for the list of videos uploaded to the user's channel, |
31 | * and then call the youtube.playlistItems.list method to retrieve the |
32 | * list of videos in that playlist. |
33 | * |
34 | * @param args command line args (not used). |
35 | */ |
36 | public static void main(String[] args) { |
37 | |
38 | // This OAuth 2.0 access scope allows for read-only access to the |
39 | // authenticated user's account, but not other types of account access. |
40 | List<String> scopes = Lists.newArrayList("https://www.googleapis.com/auth/youtube.readonly"); |
41 | |
42 | try { |
43 | // Authorize the request. |
44 | Credential credential = Auth.authorize(scopes, "myuploads"); |
45 | |
46 | // This object is used to make YouTube Data API requests. |
47 | youtube = new YouTube.Builder(Auth.HTTP_TRANSPORT, Auth.JSON_FACTORY, credential).setApplicationName( |
48 | "youtube-cmdline-myuploads-sample").build(); |
49 | |
50 | // Call the API's channels.list method to retrieve the |
51 | // resource that represents the authenticated user's channel. |
52 | // In the API response, only include channel information needed for |
53 | // this use case. The channel's contentDetails part contains |
54 | // playlist IDs relevant to the channel, including the ID for the |
55 | // list that contains videos uploaded to the channel. |
56 | YouTube.Channels.List channelRequest = youtube.channels().list("contentDetails"); |
57 | channelRequest.setMine(true); |
58 | channelRequest.setFields("items/contentDetails,nextPageToken,pageInfo"); |
59 | ChannelListResponse channelResult = channelRequest.execute(); |
60 | |
61 | List<Channel> channelsList = channelResult.getItems(); |
62 | |
63 | if (channelsList != null) { |
64 | // The user's default channel is the first item in the list. |
65 | // Extract the playlist ID for the channel's videos from the |
66 | // API response. |
67 | String uploadPlaylistId = |
68 | channelsList.get(0).getContentDetails().getRelatedPlaylists().getUploads(); |
69 | |
70 | // Define a list to store items in the list of uploaded videos. |
71 | List<PlaylistItem> playlistItemList = new ArrayList<PlaylistItem>(); |
72 | |
73 | // Retrieve the playlist of the channel's uploaded videos. |
74 | YouTube.PlaylistItems.List playlistItemRequest = |
75 | youtube.playlistItems().list("id,contentDetails,snippet"); |
76 | playlistItemRequest.setPlaylistId(uploadPlaylistId); |
77 | |
78 | // Only retrieve data used in this application, thereby making |
79 | // the application more efficient. See: |
80 | // https://developers.google.com/youtube/v3/getting-started#partial |
81 | playlistItemRequest.setFields( |
82 | "items(contentDetails/videoId,snippet/title,snippet/publishedAt),nextPageToken,pageInfo"); |
83 | |
84 | String nextToken = ""; |
85 | |
86 | // Call the API one or more times to retrieve all items in the |
87 | // list. As long as the API response returns a nextPageToken, |
88 | // there are still more items to retrieve. |
89 | do { |
90 | playlistItemRequest.setPageToken(nextToken); |
91 | PlaylistItemListResponse playlistItemResult = playlistItemRequest.execute(); |
92 | |
93 | playlistItemList.addAll(playlistItemResult.getItems()); |
94 | |
95 | nextToken = playlistItemResult.getNextPageToken(); |
96 | } while (nextToken != null); |
97 | |
98 | // Prints information about the results. |
99 | prettyPrint(playlistItemList.size(), playlistItemList.iterator()); |
100 | } |
101 | |
102 | } catch (GoogleJsonResponseException e) { |
103 | e.printStackTrace(); |
104 | System.err.println("There was a service error: " + e.getDetails().getCode() + " : " |
105 | + e.getDetails().getMessage()); |
106 | |
107 | } catch (Throwable t) { |
108 | t.printStackTrace(); |
109 | } |
110 | } |
111 | |
112 | /* |
113 | * Print information about all of the items in the playlist. |
114 | * |
115 | * @param size size of list |
116 | * |
117 | * @param iterator of Playlist Items from uploaded Playlist |
118 | */ |
119 | private static void prettyPrint(int size, Iterator<PlaylistItem> playlistEntries) { |
120 | System.out.println("============================================================="); |
121 | System.out.println("\t\tTotal Videos Uploaded: " + size); |
122 | System.out.println("=============================================================\n"); |
123 | |
124 | while (playlistEntries.hasNext()) { |
125 | PlaylistItem playlistItem = playlistEntries.next(); |
126 | System.out.println(" video name = " + playlistItem.getSnippet().getTitle()); |
127 | System.out.println(" video id = " + playlistItem.getContentDetails().getVideoId()); |
128 | System.out.println(" upload date = " + playlistItem.getSnippet().getPublishedAt()); |
129 | System.out.println("\n-------------------------------------------------------------\n"); |
130 | } |
131 | } |
download show line numbers debug dex old transpilations
Travelled to 13 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, cfunsshuasjs, gwrvuhgaqvyk, ishqpsrjomds, lpdgvwnxivlt, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tslmcundralx, tvejysmllsmz, vouqrxazstgt
No comments. add comment
Snippet ID: | #1003373 |
Snippet name: | List my YouTube uploads (not working, needs Google APIs) |
Eternal ID of this version: | #1003373/4 |
Text MD5: | b9d4acac778a6b93d5a1cce7c489875d |
Transpilation MD5: | 7ae68da2a1a565f06c341cca5066d29b |
Author: | stefan |
Category: | javax / networking |
Type: | JavaX source code |
Public (visible to everyone): | Yes |
Archived (hidden from active list): | No |
Created/modified: | 2017-07-28 17:42:00 |
Source code size: | 6212 bytes / 131 lines |
Pitched / IR pitched: | No / No |
Views / Downloads: | 605 / 677 |
Version history: | 3 change(s) |
Referenced in: | [show references] |