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