use of com.google.api.services.youtube.model.LiveChatMessage in project api-samples by youtube.
the class InsertLiveChatMessage method main.
/**
* Inserts a message into a live broadcast.
*
* @param args The message to insert (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 chat message to insert
if (args.length == 0) {
System.err.println("No message specified");
System.exit(1);
}
String message = 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, "insertlivechatmessage");
// This object is used to make YouTube Data API requests.
youtube = new YouTube.Builder(Auth.HTTP_TRANSPORT, Auth.JSON_FACTORY, credential).setApplicationName("youtube-cmdline-insertchatmessage-sample").build();
// Get the liveChatId
String liveChatId = args.length == 2 ? GetLiveChatId.getLiveChatId(youtube, args[1]) : GetLiveChatId.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);
}
// Insert the message into live chat
LiveChatMessage liveChatMessage = new LiveChatMessage();
LiveChatMessageSnippet snippet = new LiveChatMessageSnippet();
snippet.setType("textMessageEvent");
snippet.setLiveChatId(liveChatId);
LiveChatTextMessageDetails details = new LiveChatTextMessageDetails();
details.setMessageText(message);
snippet.setTextMessageDetails(details);
liveChatMessage.setSnippet(snippet);
YouTube.LiveChatMessages.Insert liveChatInsert = youtube.liveChatMessages().insert("snippet", liveChatMessage);
LiveChatMessage response = liveChatInsert.execute();
System.out.println("Inserted message id " + response.getId());
} 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();
}
}
use of com.google.api.services.youtube.model.LiveChatMessage in project api-samples by youtube.
the class ListLiveChatMessages method listChatMessages.
/**
* Lists live chat messages, polling at the server supplied interval. Owners and moderators of a
* live chat will poll at a faster rate.
*
* @param liveChatId The live chat id to list messages from.
* @param nextPageToken The page token from the previous request, if any.
* @param delayMs The delay in milliseconds before making the request.
*/
private static void listChatMessages(final String liveChatId, final String nextPageToken, long delayMs) {
System.out.println(String.format("Getting chat messages in %1$.3f seconds...", delayMs * 0.001));
Timer pollTimer = new Timer();
pollTimer.schedule(new TimerTask() {
@Override
public void run() {
try {
// Get chat messages from YouTube
LiveChatMessageListResponse response = youtube.liveChatMessages().list(liveChatId, "snippet, authorDetails").setPageToken(nextPageToken).setFields(LIVE_CHAT_FIELDS).execute();
// Display messages and super chat details
List<LiveChatMessage> messages = response.getItems();
for (int i = 0; i < messages.size(); i++) {
LiveChatMessage message = messages.get(i);
LiveChatMessageSnippet snippet = message.getSnippet();
System.out.println(buildOutput(snippet.getDisplayMessage(), message.getAuthorDetails(), snippet.getSuperChatDetails()));
}
// Request the next page of messages
listChatMessages(liveChatId, response.getNextPageToken(), response.getPollingIntervalMillis());
} catch (Throwable t) {
System.err.println("Throwable: " + t.getMessage());
t.printStackTrace();
}
}
}, delayMs);
}
Aggregations