Obtenga datos del canal de YouTube utilizando Google YouTube Data API en VB. NET
Me gustaría obtener datos de canal usando la API de datos de YouTube en un VB. Aplicación NET. No puedo encontrar ningún tipo de documentación, todo está dentro. La documentación de NET y Google es demasiado críptica para mí. Solía conseguir estos datos usando la solicitud URL, pero me gustaría hacerlo más... programáticamente! He añadido Google. Apis.YouTube.v3 Nuget, pero no se puede imaginar cómo establecer credenciales y recuperar datos.
Pregunta hecha hace 3 años, 4 meses, 28 días - Por codexcrafter
4 Respuestas:
-
Hay un VB. NET Resumable Subir ejemplo en este repositorio GITHUB que contiene algún código que debería ayudarte a empezar.
Este es un código de muestra que recupera todos los videos en los "Uploads" PlayList para el canal conectado.
Imports Google.Apis.YouTube.v3 Imports Google.Apis.YouTube.v3.Data ... ... Dim strUploadsListId As String = "" Try bOK = False Dim objChannelListRequest As ChannelsResource.ListRequest = objYouTubeService.Channels.List("contentDetails") objChannelListRequest.Mine = True Dim objChannelListResponse As ChannelListResponse = objChannelListRequest.Execute Dim objChannel As Channel For Each objChannel In objChannelListResponse.Items strUploadsListId = objChannel.ContentDetails.RelatedPlaylists.Uploads ' The Uploads PlayList Debug.WriteLine("PlayList ID=" & strUploadsListId) Next bOK = True Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.Critical, "ChannelListRequest") End Try If bOK Then Dim objNextPageToken As String = "" While Not objNextPageToken Is Nothing Dim objPlayListItemRequest As PlaylistItemsResource.ListRequest = objYouTubeService.PlaylistItems.List("contentDetails") Dim objPlayListItemsListResponse As PlaylistItemListResponse = Nothing objPlayListItemRequest.PlaylistId = strUploadsListId objPlayListItemRequest.MaxResults = 50 objPlayListItemRequest.PageToken = objNextPageToken Try bOK = False objPLayListItemsListResponse = objPlayListItemRequest.Execute bOK = True Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.Critical, "PlayListRequest") End Try If bOK Then Dim objPlayListItem As PlaylistItem Dim strVideoIds As New StringBuilder("") With {.Capacity = objPLayListItemsListResponse.Items.Count * 16} For Each objPlayListItem In objPlayListItemsListResponse.Items strVideoIds.Append(objPlayListItem.ContentDetails.VideoId) strVideoIds.Append(",") Next strVideoIds.Remove(strVideoIds.Length - 1, 1) ' Remove Last Character (Extra comma) Dim objListRequest As VideosResource.ListRequest Dim objVideoListResponse As VideoListResponse = Nothing Try bOK = False objListRequest = New VideosResource.ListRequest(objYouTubeService, "id,snippet,recordingDetails,status,contentDetails") With {.Id = strVideoIds.ToString} Debug.WriteLine("IDs to retrieve: " & strVideoIds.ToString) objVideoListResponse = objListRequest.Execute bOK = True Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.Critical, "ListRequest") End Try If bOK Then For Each objVideo As Video In objVideoListResponse.Items Dim TheTitle as string = objVideo.Snippet.Title Dim Embeddable as boolean = objVideo.Status.Embeddable Dim dtRecorded as date - Nothing If (Not objVideo.RecordingDetails Is Nothing) AndAlso (Not objVideo.RecordingDetails.RecordingDate Is Nothing) Then dtRecorded = CDate(objVideo.RecordingDetails.RecordingDate) End If Dim Duration As Date = GetDuration(objVideo.ContentDetails.Duration) Dim Category As string = objVideo.Snippet.CategoryId Dim PrivacyStatus As string = objVideo.Status.PrivacyStatus Dim Description as string = objVideo.Snippet.Description AndAlso ' ' Next End If End If objNextPageToken = objPlayListItemsListResponse.NextPageToken End While End If '_______________________________________________________ Friend Function GetDuration(ByVal Duration As String) As Date ' Only an elapsed time value ' Format returned from YouTube: PT#H#M#S or PT#M#S or PT#S GetDuration = EMPTYDATE If Duration IsNot Nothing Then If Duration.StartsWith("PT") Then Dim x As Integer = 2 Dim y As Integer = x Dim Hours As Integer = 0 Dim Minutes As Integer = 0 Dim Seconds As Integer = 0 Do While y < Duration.Length AndAlso IsNumeric(Duration.Substring(y, 1)) y += 1 End While If y < Duration.Length Then Select Case Duration.Substring(y, 1) Case "H" Hours = CInt(Duration.Substring(x, y - x)) Case "M" Minutes = CInt(Duration.Substring(x, y - x)) Case "S" Seconds = CInt(Duration.Substring(x, y - x)) End Select End If x = y + 1 y = x Loop Until x >= Duration.Length GetDuration = CDate("01/01/1900 " & Format(Hours, "00") & ":" & Format(Minutes, "00") & ":" & Format(Seconds, "00")) End If End If End Function
Respondida el Dec 18, 2020 a las 12:45 - por debugdynamo
Votos positivos: 0 | Votos negativos: 0 -
Lo hice, gracias a Mike Meinz y a las herramientas de depuración de Visual Studio Aquí el código para obtener algunos datos de canales (no necesarios) usando YouTube Data API en un VB. NET:
Dim youtube_api_key As String = "Your_Key" Dim youtube_api_application_name As String = "Your_Project_Name_In_the_Google_Developper_Console" Dim youtube_initialiser As New Google.Apis.Services.BaseClientService.Initializer() youtube_initialiser.ApiKey = youtube_api_key youtube_initialiser.ApplicationName = youtube_api_application_name Dim youtube_service As Google.Apis.YouTube.v3.YouTubeService = New YouTubeService(youtube_initialiser) Dim objChannelListRequest As ChannelsResource.ListRequest = youtube_service.Channels.List("id,snippet,statistics") objChannelListRequest.Id = youtube_channel Dim objChannelListResponse As ChannelListResponse = objChannelListRequest.Execute() Debug.Print(objChannelListResponse.Items(0).Snippet.Description) Debug.Print(objChannelListResponse.Items(0).Statistics.SubscriberCount) Debug.Print(objChannelListResponse.Items(0).Statistics.VideoCount) Debug.Print(objChannelListResponse.Items(0).Statistics.ViewCount)
Respondida el Dec 18, 2020 a las 12:52 - por rubyrover
Votos positivos: 0 | Votos negativos: 0 -
Para obtener datos de un canal de YouTube utilizando la API de datos de YouTube en un proyecto VB.NET, primero debes configurar credenciales de la API de Google y luego hacer una llamada a la API para obtener los datos del canal.
A continuación, te proporciono un ejemplo de cómo puedes lograr esto en VB.NET:
- Crea un proyecto en la Consola de Desarrolladores de Google y habilita la API de YouTube Data API v3. Para ello, sigue los pasos detallados aquí: https://developers.google.com/youtube/registering_an_application
- Necesitarás obtener credenciales de la API de Google, descarga el archivo JSON con tus credenciales, y luego incrusta este archivo en tu proyecto VB.NET.
- Asegúrate de agregar las referencias necesarias en tu proyecto para trabajar con la API de YouTube. Puedes hacerlo a través de NuGet Manager.
- A continuación, te muestro un ejemplo de cómo puedes recuperar los datos de un canal de YouTube utilizando la API de YouTube Data API en VB.NET:
vb.net Imports Google.Apis.Services Imports Google.Apis.YouTube.v3 Imports Google.Apis.Auth.OAuth2 Module Module1 Sub Main() Dim credenciales As UserCredential Using stream = New FileStream("ruta a tu archivo JSON de credenciales", FileMode.Open, FileAccess.Read) credenciales = GoogleWebAuthorizationBroker.AuthorizeAsync(GoogleClientSecrets.Load(stream).Secrets, {YouTubeService.Scope.YoutubeReadonly}, "usuario", CancellationToken.None).Result End Using Dim youtubeService As New YouTubeService(New BaseClientService.Initializer() With { .HttpClientInitializer = credenciales, .ApplicationName = "Nombre de tu aplicación" }) Dim listaSolicitud = youtubeService.Channels.List("snippet,contentDetails,statistics").Id = "ID del canal de YouTube"; Dim listaRespuesta = listaSolicitud.Execute() ' Iterar sobre los datos del canal obtenidos For Each canal In listaRespuesta.Items Console.WriteLine("Título del canal: " & canal.Snippet.Title) Console.WriteLine("Descripción del canal: " & canal.Snippet.Description) Console.WriteLine("Número de suscriptores: " & canal.Statistics.SubscriberCount) ' Puedes acceder a más información sobre el canal en canal.ContentDetails Next End Sub End Module
Asegúrate de reemplazar "ruta a tu archivo JSON de credenciales" con la ubicación de tu archivo de credenciales descargado desde la Consola de Desarrolladores de Google, e "ID del canal de YouTube" con el ID del canal de YouTube del que deseas obtener datos.
Espero que esta información te sea útil y te ayude a obtener datos de un canal de YouTube utilizando la API de datos de YouTube en VB.NET. ¡Déjame saber si tienes alguna otra pregunta!
Respondida el Dec 19, 2020 a las 12:46 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
Paso 1: Configura las credenciales
vb.net Dim credential = GoogleWebAuthorizationBroker.AuthorizeAsync( new ClientSecrets() { ClientId = "TU_ID_DE_CLIENTE", ClientSecret = "TU_SECRETO_DE_CLIENTE" }, Scope.YoutubeReadonly, "user", CancellationToken.None ).Result()
Paso 2: Crea un servicio de YouTube
vb.net Dim service = new YouTubeService(new BaseClientService.Initializer() { HttpClientInitializer = credential, ApplicationName = "TuNombreDeAplicacion" })
Paso 3: Realiza la solicitud
vb.net Dim listaDeCanales = Await service.Channels.List("snippet").Mine().ExecuteAsync()
Paso 4: Accede a los datos del canal
Puedes acceder a los datos del canal como se muestra a continuación:
vb.net For Each canal In listaDeCanales.Items Console.WriteLine(canal.Snippet.Title) Next
Ejemplo completo
vb.net Imports Google.Apis.Auth.OAuth2 Imports Google.Apis.YouTube.v3 Imports Google.Apis.Services Imports System.Threading.Tasks Module Module1 Sub Main() Dim credential = GoogleWebAuthorizationBroker.AuthorizeAsync( New ClientSecrets() { ClientId = "TU_ID_DE_CLIENTE", ClientSecret = "TU_SECRETO_DE_CLIENTE" }, Scope.YoutubeReadonly, "user", CancellationToken.None ).Result() Dim service = New YouTubeService(New BaseClientService.Initializer() { HttpClientInitializer = credential, ApplicationName = "TuNombreDeAplicacion" }) Dim listaDeCanales = Await service.Channels.List("snippet").Mine().ExecuteAsync() For Each canal In listaDeCanales.Items Console.WriteLine(canal.Snippet.Title) Next End Sub End Module
Respondida el Dec 19, 2020 a las 12:56 - por Gemini
Votos positivos: 0 | Votos negativos: 0