!7 module FollowLiveStreamChat > DynPrintLog { S videoID = "https://www.youtube.com/watch?v=hGmdFxQ80vE"; transient S liveStreamID; transient S pageToken; transient L messages = synchroList(); start { thread "Grab Live Stream Chat" { while licensed { try { setField(liveStreamID := youTubeGetLiveStreamID(videoID)); while licensed { YTChatMessages result = youTubeGetChatMessages(liveStreamID, pageToken); programLogStruct(result); if (nempty(result.messages)) print("Got " + n2(result.messages, "message") + " from live stream chat"); for (YTChatMessage msg : result.messages) { print("> " + msg.publishedAt + " [" + msg.authorDisplayName + "] " + msg.text); vmBus_send('gotYouTubeLiveStreamMessage, msg); } pageToken = result.nextPageToken; sleep(result.pollingIntervalMillis + 1000); } } on fail { sleepSeconds(10.0); } } } } }