Reading comments
Each video carries a discussion of comment threads, and each thread can have
replies. TTMSFNCCloudGoogleYouTube fetches a video's threads into its
CommentThreads collection, and every thread exposes its own Replies. This
chapter covers requesting the threads for a video and reading the threads together
with their replies.
Reading comment threads
Comments belong to a video, so the request starts from a video object:
AVideo.GetCommentThreads triggers the fetch, and OnGetCommentThreadsComplete
fires when the threads are ready. Read them from the component's CommentThreads
collection; each TTMSFNCCloudGoogleYouTubeCommentThread exposes
AuthorDisplayName and TextDisplay. This example, combining a video from
Working with videos with its comments, lists every
thread and its replies.
procedure TForm1.LoadComments(AVideo: TTMSFNCCloudGoogleYouTubeVideo);
begin
// GetCommentThreads is a method on the video object itself.
AVideo.GetCommentThreads; // result arrives in OnGetCommentThreadsComplete
end;
procedure TForm1.YouTubeGetCommentThreads(Sender: TObject;
const ARequestResult: TTMSFNCCloudBaseRequestResult);
var
I, J: Integer;
Thread: TTMSFNCCloudGoogleYouTubeCommentThread;
Reply: TTMSFNCCloudGoogleYouTubeReply;
begin
if not ARequestResult.Success then
Exit;
ListBox2.Clear;
for I := 0 to FYouTube.CommentThreads.Count - 1 do
begin
Thread := FYouTube.CommentThreads[I];
ListBox2.Items.AddObject(Thread.AuthorDisplayName + ': ' + Thread.TextDisplay, Thread);
// Each top-level comment can carry replies.
for J := 0 to Thread.Replies.Count - 1 do
begin
Reply := Thread.Replies[J];
ListBox2.Items.Add(' ' + Reply.AuthorDisplayName + ': ' + Reply.TextDisplay);
end;
end;
end;
Replies
A thread's Replies collection holds the responses to the top-level comment. Each
TTMSFNCCloudGoogleYouTubeReply exposes the same AuthorDisplayName and
TextDisplay, so you can render a thread and its responses with the same code, as
the snippet does by indenting replies under their thread.
Pitfalls
- Start from the video.
GetCommentThreadsis a method on theTTMSFNCCloudGoogleYouTubeVideo, not the component; load the videos first. - Read in the completion event.
CommentThreadsis only guaranteed afterOnGetCommentThreadsCompletefires. - A video may have comments disabled, in which case the threads collection comes back empty — handle that case rather than assuming results.
See also
- Authentication and connecting — connect first.
- Working with videos — load the videos whose comments you read.
- API reference — full class reference.