-
Notifications
You must be signed in to change notification settings - Fork 3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #110 from jimrogerz/live_chat
Add samples for live chat
- Loading branch information
Showing
6 changed files
with
578 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
84 changes: 84 additions & 0 deletions
84
...main/java/com/google/api/services/samples/youtube/cmdline/live/DeleteLiveChatMessage.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,84 @@ | ||
/* | ||
* Copyright (c) 2017 Google Inc. | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except | ||
* in compliance with the License. You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software distributed under the License | ||
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express | ||
* or implied. See the License for the specific language governing permissions and limitations under | ||
* the License. | ||
*/ | ||
|
||
package com.google.api.services.samples.youtube.cmdline.live; | ||
|
||
import com.google.api.client.auth.oauth2.Credential; | ||
import com.google.api.client.googleapis.json.GoogleJsonResponseException; | ||
import com.google.api.services.samples.youtube.cmdline.Auth; | ||
import com.google.api.services.youtube.YouTube; | ||
import com.google.api.services.youtube.YouTubeScopes; | ||
import com.google.common.collect.Lists; | ||
import java.io.IOException; | ||
import java.util.List; | ||
|
||
/** | ||
* Delets a message from a live broadcast, using OAuth 2.0 to authorize API requests. | ||
* | ||
* @author Jim Rogers | ||
*/ | ||
public class DeleteLiveChatMessage { | ||
|
||
/** | ||
* Define a global instance of a Youtube object, which will be used | ||
* to make YouTube Data API requests. | ||
*/ | ||
private static YouTube youtube; | ||
|
||
/** | ||
* Deletes a message from a live broadcast. | ||
* | ||
* @param args The message id to delete (required) followed by the videoId (optional). If the | ||
* videoId is given, live chat messages will be retrieved from the chat associated with this | ||
* video. If the videoId is not specified, the signed in user's current live broadcast will be | ||
* used instead. | ||
*/ | ||
public static void main(String[] args) { | ||
// Get the message id to delete | ||
if (args.length == 0) { | ||
System.err.println("No message id specified"); | ||
System.exit(1); | ||
} | ||
String messageId = args[0]; | ||
|
||
// This OAuth 2.0 access scope allows for write access to the authenticated user's account. | ||
List<String> scopes = Lists.newArrayList(YouTubeScopes.YOUTUBE_FORCE_SSL); | ||
|
||
try { | ||
// Authorize the request. | ||
Credential credential = Auth.authorize(scopes, "deletelivechatmessage"); | ||
|
||
// This object is used to make YouTube Data API requests. | ||
youtube = new YouTube.Builder(Auth.HTTP_TRANSPORT, Auth.JSON_FACTORY, credential) | ||
.setApplicationName("youtube-cmdline-deletechatmessages-sample").build(); | ||
|
||
// Delete the message from live chat | ||
YouTube.LiveChatMessages.Delete liveChatDelete = | ||
youtube.liveChatMessages().delete(messageId); | ||
liveChatDelete.execute(); | ||
System.out.println("Deleted message id " + messageId); | ||
} catch (GoogleJsonResponseException e) { | ||
System.err | ||
.println("GoogleJsonResponseException code: " + e.getDetails().getCode() + " : " | ||
+ e.getDetails().getMessage()); | ||
e.printStackTrace(); | ||
} catch (IOException e) { | ||
System.err.println("IOException: " + e.getMessage()); | ||
e.printStackTrace(); | ||
} catch (Throwable t) { | ||
System.err.println("Throwable: " + t.getMessage()); | ||
t.printStackTrace(); | ||
} | ||
} | ||
} |
143 changes: 143 additions & 0 deletions
143
java/src/main/java/com/google/api/services/samples/youtube/cmdline/live/GetLiveChatId.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,143 @@ | ||
/* | ||
* Copyright (c) 2017 Google Inc. | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except | ||
* in compliance with the License. You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software distributed under the License | ||
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express | ||
* or implied. See the License for the specific language governing permissions and limitations under | ||
* the License. | ||
*/ | ||
|
||
package com.google.api.services.samples.youtube.cmdline.live; | ||
|
||
import com.google.api.client.auth.oauth2.Credential; | ||
import com.google.api.client.googleapis.json.GoogleJsonResponseException; | ||
import com.google.api.services.samples.youtube.cmdline.Auth; | ||
import com.google.api.services.youtube.YouTube; | ||
import com.google.api.services.youtube.YouTubeScopes; | ||
import com.google.api.services.youtube.model.LiveBroadcast; | ||
import com.google.api.services.youtube.model.LiveBroadcastListResponse; | ||
import com.google.api.services.youtube.model.Video; | ||
import com.google.api.services.youtube.model.VideoListResponse; | ||
import com.google.common.collect.Lists; | ||
import java.io.IOException; | ||
import java.util.List; | ||
|
||
/** | ||
* Gets a live chat id from a video id or current signed in user. | ||
* | ||
* The videoId is often included in the video's url, e.g.: | ||
* https://www.youtube.com/watch?v=L5Xc93_ZL60 | ||
* ^ videoId | ||
* The video URL may be found in the browser address bar, or by right-clicking a video and selecting | ||
* Copy video URL from the context menu. | ||
* | ||
* @author Jim Rogers | ||
*/ | ||
public class GetLiveChatId { | ||
|
||
/** | ||
* Define a global instance of a Youtube object, which will be used | ||
* to make YouTube Data API requests. | ||
*/ | ||
private static YouTube youtube; | ||
|
||
/** | ||
* Poll live chat messages and SuperChat details from a live broadcast. | ||
* | ||
* @param args videoId (optional). If the videoId is given, live chat messages will be retrieved | ||
* from the chat associated with this video. If the videoId is not specified, the signed in | ||
* user's current live broadcast will be used instead. | ||
*/ | ||
public static void main(String[] args) { | ||
|
||
// This OAuth 2.0 access scope allows for read-only access to the | ||
// authenticated user's account, but not other types of account access. | ||
List<String> scopes = Lists.newArrayList(YouTubeScopes.YOUTUBE_READONLY); | ||
|
||
try { | ||
// Authorize the request. | ||
Credential credential = Auth.authorize(scopes, "getlivechatid"); | ||
|
||
// This object is used to make YouTube Data API requests. | ||
youtube = new YouTube.Builder(Auth.HTTP_TRANSPORT, Auth.JSON_FACTORY, credential) | ||
.setApplicationName("youtube-cmdline-getlivechatid-sample").build(); | ||
|
||
// Get the liveChatId | ||
String liveChatId = args.length == 1 | ||
? getLiveChatId(youtube, args[0]) | ||
: getLiveChatId(youtube); | ||
if (liveChatId != null) { | ||
System.out.println("Live chat id: " + liveChatId); | ||
} else { | ||
System.err.println("Unable to find a live chat id"); | ||
System.exit(1); | ||
} | ||
} catch (GoogleJsonResponseException e) { | ||
System.err | ||
.println("GoogleJsonResponseException code: " + e.getDetails().getCode() + " : " | ||
+ e.getDetails().getMessage()); | ||
e.printStackTrace(); | ||
|
||
} catch (IOException e) { | ||
System.err.println("IOException: " + e.getMessage()); | ||
e.printStackTrace(); | ||
} catch (Throwable t) { | ||
System.err.println("Throwable: " + t.getMessage()); | ||
t.printStackTrace(); | ||
} | ||
} | ||
|
||
/** | ||
* Retrieves the liveChatId from the authenticated user's live broadcast. | ||
* | ||
* @param youtube The object is used to make YouTube Data API requests. | ||
* @return A liveChatId, or null if not found. | ||
*/ | ||
static String getLiveChatId(YouTube youtube) throws IOException { | ||
// Get signed in user's liveChatId | ||
YouTube.LiveBroadcasts.List broadcastList = youtube | ||
.liveBroadcasts() | ||
.list("snippet") | ||
.setFields("items/snippet/liveChatId") | ||
.setBroadcastType("all") | ||
.setBroadcastStatus("active"); | ||
LiveBroadcastListResponse broadcastListResponse = broadcastList.execute(); | ||
for (LiveBroadcast b : broadcastListResponse.getItems()) { | ||
String liveChatId = b.getSnippet().getLiveChatId(); | ||
if (liveChatId != null && !liveChatId.isEmpty()) { | ||
return liveChatId; | ||
} | ||
} | ||
|
||
return null; | ||
} | ||
|
||
/** | ||
* Retrieves the liveChatId from the broadcast associated with a videoId. | ||
* | ||
* @param youtube The object is used to make YouTube Data API requests. | ||
* @param videoId The videoId associated with the live broadcast. | ||
* @return A liveChatId, or null if not found. | ||
*/ | ||
static String getLiveChatId(YouTube youtube, String videoId) throws IOException { | ||
// Get liveChatId from the video | ||
YouTube.Videos.List videoList = youtube.videos() | ||
.list("liveStreamingDetails") | ||
.setFields("items/liveStreamingDetails/activeLiveChatId") | ||
.setId(videoId); | ||
VideoListResponse response = videoList.execute(); | ||
for (Video v : response.getItems()) { | ||
String liveChatId = v.getLiveStreamingDetails().getActiveLiveChatId(); | ||
if (liveChatId != null && !liveChatId.isEmpty()) { | ||
return liveChatId; | ||
} | ||
} | ||
|
||
return null; | ||
} | ||
} |
Oops, something went wrong.