UI: Add SendChatMessage to YouTube API wrappers

master
gxalpha 2022-05-08 16:42:20 +02:00 committed by Ryan Foster
parent 5a298106bc
commit 49dfc113c1
4 changed files with 35 additions and 5 deletions

View File

@ -1326,3 +1326,8 @@ YouTube.Errors.livePermissionBlocked="Live streaming is unavailable on the selec
YouTube.Errors.errorExecutingTransition="Transition failed due to a backend error. Please try again in a few seconds."
YouTube.Errors.errorStreamInactive="YouTube is not receiving data for your stream. Please check your configuration and try again."
YouTube.Errors.invalidTransition="The attempted transition was invalid. This may be due to the stream not having finished a previous transition. Please wait a few seconds and try again."
# Chat errors
YouTube.Errors.liveChatDisabled="Live chat is disabled on this stream."
YouTube.Errors.liveChatEnded="Live stream has ended."
YouTube.Errors.messageTextInvalid="The message text is not valid."
YouTube.Errors.rateLimitExceeded="You are sending messages too quickly."

View File

@ -497,7 +497,8 @@ bool OBSYoutubeActions::CreateEventAction(YoutubeApiWrappers *api,
blog(LOG_DEBUG, "No stream created.");
return false;
}
if (!apiYouTube->BindStream(broadcast.id, stream.id)) {
json11::Json json;
if (!apiYouTube->BindStream(broadcast.id, stream.id, json)) {
blog(LOG_DEBUG, "No stream binded.");
return false;
}
@ -547,7 +548,8 @@ bool OBSYoutubeActions::ChooseAnEventAction(YoutubeApiWrappers *api,
blog(LOG_DEBUG, "No stream created.");
return false;
}
if (!apiYouTube->BindStream(selectedBroadcast, stream.id)) {
if (!apiYouTube->BindStream(selectedBroadcast, stream.id,
json)) {
blog(LOG_DEBUG, "No stream binded.");
return false;
}

View File

@ -29,6 +29,7 @@ using namespace json11;
#define YOUTUBE_LIVE_TOKEN_URL "https://oauth2.googleapis.com/token"
#define YOUTUBE_LIVE_VIDEOCATEGORIES_URL YOUTUBE_LIVE_API_URL "/videoCategories"
#define YOUTUBE_LIVE_VIDEOS_URL YOUTUBE_LIVE_API_URL "/videos"
#define YOUTUBE_LIVE_CHAT_MESSAGES_URL YOUTUBE_LIVE_API_URL "/liveChat/messages"
#define YOUTUBE_LIVE_THUMBNAIL_URL \
"https://www.googleapis.com/upload/youtube/v3/thumbnails/set"
@ -274,7 +275,8 @@ bool YoutubeApiWrappers::InsertStream(StreamDescription &stream)
}
bool YoutubeApiWrappers::BindStream(const QString broadcast_id,
const QString stream_id)
const QString stream_id,
json11::Json &json_out)
{
lastErrorMessage.clear();
lastErrorReason.clear();
@ -285,7 +287,6 @@ bool YoutubeApiWrappers::BindStream(const QString broadcast_id,
const QString url = url_template.arg(broadcast_id, stream_id);
const Json data = Json::object{};
this->broadcast_id = broadcast_id;
Json json_out;
return InsertCommand(QT_TO_UTF8(url), "application/json", "",
data.dump().c_str(), json_out);
}
@ -583,3 +584,22 @@ bool YoutubeApiWrappers::FindStream(const QString &id, json11::Json &json_out)
return true;
}
bool YoutubeApiWrappers::SendChatMessage(const std::string &chat_id,
const QString &message)
{
QByteArray url = YOUTUBE_LIVE_CHAT_MESSAGES_URL "?part=snippet";
json11::Json json_in = Json::object{
{"snippet",
Json::object{
{"liveChatId", chat_id},
{"type", "textMessageEvent"},
{"textMessageDetails",
Json::object{{"messageText", QT_TO_UTF8(message)}}},
}}};
json11::Json json_out;
return InsertCommand(url, "application/json", "POST",
json_in.dump().c_str(), json_out);
}

View File

@ -57,7 +57,8 @@ public:
bool GetChannelDescription(ChannelDescription &channel_description);
bool InsertBroadcast(BroadcastDescription &broadcast);
bool InsertStream(StreamDescription &stream);
bool BindStream(const QString broadcast_id, const QString stream_id);
bool BindStream(const QString broadcast_id, const QString stream_id,
json11::Json &json_out);
bool GetBroadcastsList(json11::Json &json_out, const QString &page,
const QString &status);
bool
@ -74,6 +75,8 @@ public:
json11::Json &json_out);
bool StartLatestBroadcast();
bool StopLatestBroadcast();
bool SendChatMessage(const std::string &chat_id,
const QString &message);
void SetBroadcastId(QString &broadcast_id);
QString GetBroadcastId();