按时间倒序获取聊天消息
Get Chat Messages in Reverse Chronological Order
我想从直播中获取最新的聊天消息 API。但我总是先拿最老的。我可以按相反的顺序得到它吗?有没有 属性 我可以设置来实现这个?
下面是一些示例代码:
if ($_GET['action'] == "listchatmessages")
{
$htmlBody .= '<h1>Chatnachrichten</h1>';
$broadcastsChatResponse = $youtube->liveChatMessages ->listLiveChatMessages (
$broadcastItem['snippet']['liveChatId'], 'snippet');
$myfile = fopen("chatmessages.txt", "w") or die("Unable to open file!");
$count = 0;
if ($_GET['search'] != "")
{
if (!empty($broadcastsChatResponse['items']))
{
foreach ($broadcastsChatResponse['items'] as $broadcastChatItem)
{
if ($count < 200)
{
$broadcastsDetailsChatResponse = $youtube->liveChatMessages ->listLiveChatMessages (
$broadcastChatItem['snippet']['liveChatId'], 'authorDetails');
$broadcastDetailsChatItem = $broadcastsDetailsChatResponse['items'][0];
if ((preg_match('/'.$_GET['search'].'/',$broadcastChatItem['snippet']['textMessageDetails']['messageText'])) OR $_GET['search'] == 'all')
{
$message = $broadcastChatItem['snippet']['authorChannelId'].'_'.$broadcastDetailsChatItem['authorDetails']['displayName'].'_'.$broadcastChatItem['snippet']['textMessageDetails']['messageText']."\n";
$htmlBody .= '<li> Author: <a href="'.$broadcastChatItem['snippet']['authorChannelId'].'">'.$broadcastDetailsChatItem['authorDetails']['displayName'].'</a> schrieb: '.$broadcastChatItem['snippet']['textMessageDetails']['messageText'].'</li>';
$count++;
fwrite($myfile, $message);
}
}
else
{
break;
}
}
$htmlBody .= '<h4> Alle Chatnachrichten empfangen (Anzahl der teilnehmenden Nahcrichten: '.$count.')</h4>';
}
else
{
$htmlBody .= '<p>Der Stream scheint nicht online zu sein</p>';
}
}
else
{
$htmlBody .= 'Kein Suchwort. Nutze all um alle Nachrichten zu nehmen';
}
fclose($myfile);
}
您似乎没有可以将参数传递到您对 liveChatMessages/list
端点的请求,以首先 return 最新消息。
您必须下载所有消息,并在每条聊天消息的 snippet.publishedAt
.
下按 ISO 8601 格式日期对它们进行排序
如果您希望在 API.
中实现此功能,我还建议您向 Google here 提交增强票证
我想从直播中获取最新的聊天消息 API。但我总是先拿最老的。我可以按相反的顺序得到它吗?有没有 属性 我可以设置来实现这个?
下面是一些示例代码:
if ($_GET['action'] == "listchatmessages")
{
$htmlBody .= '<h1>Chatnachrichten</h1>';
$broadcastsChatResponse = $youtube->liveChatMessages ->listLiveChatMessages (
$broadcastItem['snippet']['liveChatId'], 'snippet');
$myfile = fopen("chatmessages.txt", "w") or die("Unable to open file!");
$count = 0;
if ($_GET['search'] != "")
{
if (!empty($broadcastsChatResponse['items']))
{
foreach ($broadcastsChatResponse['items'] as $broadcastChatItem)
{
if ($count < 200)
{
$broadcastsDetailsChatResponse = $youtube->liveChatMessages ->listLiveChatMessages (
$broadcastChatItem['snippet']['liveChatId'], 'authorDetails');
$broadcastDetailsChatItem = $broadcastsDetailsChatResponse['items'][0];
if ((preg_match('/'.$_GET['search'].'/',$broadcastChatItem['snippet']['textMessageDetails']['messageText'])) OR $_GET['search'] == 'all')
{
$message = $broadcastChatItem['snippet']['authorChannelId'].'_'.$broadcastDetailsChatItem['authorDetails']['displayName'].'_'.$broadcastChatItem['snippet']['textMessageDetails']['messageText']."\n";
$htmlBody .= '<li> Author: <a href="'.$broadcastChatItem['snippet']['authorChannelId'].'">'.$broadcastDetailsChatItem['authorDetails']['displayName'].'</a> schrieb: '.$broadcastChatItem['snippet']['textMessageDetails']['messageText'].'</li>';
$count++;
fwrite($myfile, $message);
}
}
else
{
break;
}
}
$htmlBody .= '<h4> Alle Chatnachrichten empfangen (Anzahl der teilnehmenden Nahcrichten: '.$count.')</h4>';
}
else
{
$htmlBody .= '<p>Der Stream scheint nicht online zu sein</p>';
}
}
else
{
$htmlBody .= 'Kein Suchwort. Nutze all um alle Nachrichten zu nehmen';
}
fclose($myfile);
}
您似乎没有可以将参数传递到您对 liveChatMessages/list
端点的请求,以首先 return 最新消息。
您必须下载所有消息,并在每条聊天消息的 snippet.publishedAt
.
如果您希望在 API.
中实现此功能,我还建议您向 Google here 提交增强票证