Как добавить комментарий к видео с помощью Yo uTube API??? Может кто-нибудь показать мне, как это сделать правильно?
Я делаю настольное приложение в VB.NET, которое будет взаимодействовать с YouTube. До сих пор мне удалось решить "проблему" аутентификации OAuth2, и у меня есть токены (auth и refresh). Мне нужно обновлять токен аутентификации один раз в час, но это не проблема.
Я пытался оставить комментарий к видео разными способами, используя http POST и API YouTube. На HTTP-запрос POST я получаю ответ "неверный запрос", а на YouTube API пытаюсь ничего не получать, никаких комментариев нет и ошибок нет. Как я могу это сделать? Документация по API данных YouTube повреждена, и я не могу открыть или установить ее в Visual Studio, поэтому я делаю тесты методом проб и ошибок, используя маленькие примеры, которые люди размещали в Интернете.
Это код, который я использовал для версии HTTP:
'create the xml comment as in API example
Dim ContentLenght As Long
Dim xmlData As New System.Xml.XmlDocument()
Dim commentXML As XDocument =
<?xml version="1.0" encoding="UTF-8"?>
<entry xmlns="http://www.w3.org/2005/Atom"
xmlns:yt="http://gdata.youtube.com/schemas/2007">
<content><%= comment %></content>
</entry>
ContentLenght = commentXML.ToString.Length
'---------------------------------------------------------
'create the POST request to submit the comment
Dim sentXml As Byte() = System.Text.Encoding.ASCII.GetBytes(commentXML.ToString)
Dim url = "http://gdata.youtube.com/feeds/api/videos/" & videoID & "/comments"
Dim req As New WebClient
req.Headers.Add("Host: gdata.youtube.com")
req.Headers.Add("Length:" & ContentLenght)
req.Headers.Add("Content-Type: application/atom+Xml")
req.Headers.Add("Authorization: Bearer " & Token)
req.Headers.Add("GData-Version: 2")
req.Headers.Add("X-GData-Key: key=" & developerKey)
Dim response As Byte() = req.UploadData(url, "POST", sentXml)
Код API, который я пробовал:
Dim commentingSettings As New YouTubeRequestSettings(appName, developerKey, Token)
Dim lcommentingRequest As New YouTubeRequest(commentingSettings)
Dim video As New Video()
video.VideoId = "JEvV0RHMU-Y"
Dim comm As New Comment
comm.Content = "comm text here"
lcommentingRequest.AddComment(video, comm)
2 ответа
Я решил проблему с помощью YouTube API. Проблема заключалась в том, как создается объект "видео". Вот рабочий код для людей, которым это нужно:
Dim commentingSettings As New YouTubeRequestSettings(appName, developerKey, Token)
Dim lcommentingRequest As New YouTubeRequest(commentingSettings)
Dim videodUrl As New Uri(String.Format("{0}/{1}",Google.GData.YouTube.YouTubeQuery.DefaultVideoUri, "BtrFZmZjalE"))
Dim video As Google.YouTube.Video = request.Retrieve(Of Google.YouTube.Video)(videoEdUrl)
Dim comm As New Comment
comm.Content = "comm text here"
lcommentingRequest.AddComment(video, comm)
Теперь код будет работать!
Новый вопрос: как получить идентификатор комментария после публикации? Есть ли способ получить его из кода выше (какой-то ответ сервера или что-то)? ... но, как предположил Крис М., я создам еще один вопрос для этого...
YouTube API v3 не имеет поддержки комментариев на данный момент. Поддерживает только v2. Надеюсь, что может быть один в будущем.