Как добавить комментарий к видео с помощью API YouTube??? Может ли кто-нибудь показать мне, как это сделать правильно?

Я делаю настольное приложение в VB.NET, которое будет взаимодействовать с YouTube. До сих пор мне удалось решить «проблему» аутентификации OAuth2, и у меня есть свои токены (аутентификация и обновление). Мне нужно обновлять токен авторизации каждый час, но это не проблема.

Я пытался оставить комментарий к видео разными способами, используя http POST и API YouTube. На HTTP-запрос POST я получаю ответ «неверный запрос», а на API-интерфейсе YouTube ничего не получаю, никаких комментариев и ошибок. Как я могу это сделать? Документация по 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)

person Florin    schedule 15.07.2013    source источник
comment
Я внес эти правки, потому что ваша версия вопроса была довольно бесполезной. Stack Overflow — это не форум, где такие вещи типичны; это сайт, где главное контент.   -  person Chris Morgan    schedule 15.07.2013
comment
Понятно... ну, я также вижу, что многие хорошие вопросы остаются без ответа, может быть, людям нужно знать больше, чем код, который представляет проблему, чтобы решить действовать и делиться своими знаниями... но в любом случае это нормально :)   -  person Florin    schedule 15.07.2013
comment
На этом этапе ваше последнее редактирование должно быть помещено в ответ, а затем вам, вероятно, следует задать новый вопрос, основываясь на этом, о том, как получить идентификатор комментария.   -  person Chris Morgan    schedule 15.07.2013


Ответы (2)


Я решил проблему с помощью API Youtube. Проблема заключалась в том, как создается объект «видео». Вот рабочий код для тех, кому это нужно:

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)

Теперь код будет работать!

Новый вопрос: как мне получить идентификатор комментария после публикации? Есть ли способ получить его из приведенного выше кода (какой-то ответ сервера или что-то в этом роде)? ... но, как предложил Крис М., я создам для этого еще один вопрос...

person Florin    schedule 15.07.2013

YouTube API v3 пока не поддерживает комментарии. Поддерживает только v2. Надеюсь, что в будущем он может появиться.

person Ibrahim Ulukaya    schedule 15.07.2013
comment
:) ты не сделал домашнее задание :)) ... в v3 нет поддержки комментариев, но в v2 есть, и v2 работает нормально... - person Florin; 15.07.2013
comment
Я решил проблему с помощью API Youtube. Проблема заключалась в том, как создается видеообъект. Я прикреплю код к основному вопросу - person Florin; 15.07.2013