1

J'écris une application qui télécharge et met à jour la bannière de la chaîne YouTube. J'utilise node.js et google api client. Dans la documentation api officielle il n'y a pas d'exemple sur Node.js comment envoyer le contenu d'image, aussi il n'y a pas d'informations sur la signature du rappel Voici mon code:Comment télécharger et mettre à jour une bannière de chaîne YouTube en utilisant le client jos googleapis

var google = require('googleapis'); 
var OAuth2 = google.auth.OAuth2; 
var oauth2Client = new OAuth2(); 
var youtube = google.youtube({ version: 'v3' }); 

//Setting the credentials 
oauth2Client.setCredentials({ 
    access_token: 'STORED_IN_DATABASE', 
    refresh_token: 'STORED_IN_DATABASE',   
}); 

//Send the request 
youtube.channelBanners.insert({ 
    auth: oauth2Client, 
    //image_content 
}, callback); 

Après avoir appelé la méthode d'insertion, je dois appeler la méthode channels.update, qui n'a pas non plus les exemples sur Node.js

Répondre

1

de Channel banners insert, vous devez appeler:

  • channelBanners.insert, et obtenir le champ URL de la réponse
  • channels.update avec la précédente URL récupérée

Vous aurez également besoin du numéro de canal pour channels.update demande. Notez également que from Channel update:

Si vous soumettez une demande de mise à jour, et votre demande ne spécifie pas de valeur pour une propriété qui a déjà une valeur, sera supprimé la valeur actuelle de la propriété.

Vous pouvez appeler channels.list pour obtenir l'objet de canal avec brandingSettings partie mise à jour

L'appel API avec google-api-nodejs-client:

  • channelBanners.insert

    youtube.channelBanners.insert({ 
        media: { 
         mimeType: "image/jpeg", 
         body: fs.createReadStream('banner.jpeg') 
        } 
    }, function(err, uploadResponse, response) { 
    
    }); 
    

Les mimeType disponibles sont image/jpeg, image/png, application/octet-stream

  • channels.list

    youtube.channels.list({ 
        part: "brandingSettings", 
        mine: true 
    }, function(err, channelListRsp, response) { 
    
    }); 
    
  • channels.update

    channelListRsp.items[0].brandingSettings.image.bannerExternalUrl = uploadResponse.url; 
    
    youtube.channels.update({ 
        part: "brandingSettings", 
        resource: channelListRsp.items[0] 
    }, function(err, channelUpdateResp, response) { 
    
    }); 
    

Exemple complet qui mettent à jour le ba nner pour le premier canal trouvé dans la liste des canaux de l'utilisateur actuel:

youtube = google.youtube({ 
    version: 'v3', 
    auth: oauth2Client 
}); 

youtube.channelBanners.insert({ 
    media: { 
     mimeType: "image/jpeg", 
     body: fs.createReadStream('banner.jpeg') 
    } 
}, function(err, uploadResponse, response) { 

    if (err) 
     console.error("channelBanners.insert error : ", err); 
    if (response) 
     console.log('channelBanners.insert : ' + response.statusCode); 

    if (uploadResponse && uploadResponse.url) { 

     console.log("setting channel brandingSettings : " + uploadResponse.url); 

     youtube.channels.list({ 
      part: "brandingSettings", 
      mine: true 
     }, function(err, channelListRsp, response) { 

      if (err) 
       console.error('channels.list error : ', err); 
      if (response) 
       console.log('channels.list : ' + response.statusCode); 

      if (channelListRsp && channelListRsp.items && channelListRsp.items.length > 0) { 

       console.log("updating banner for channel id : " + channelListRsp.items[0].id); 

       // set the url 
       channelListRsp.items[0].brandingSettings.image.bannerExternalUrl = uploadResponse.url; 

       //update channel brandingSettings 
       youtube.channels.update({ 
        part: "brandingSettings", 
        resource: channelListRsp.items[0] 
       }, function(err, channelUpdateResp, response) { 

        if (err) 
         console.error('channels.update error : ', err); 
        if (response) 
         console.log('channels.update : ' + response.statusCode); 
        if (channelUpdateResp) 
         console.log(channelUpdateResp); 
       }); 
      } 
     }); 
    } 
}); 
+0

Merci, ça marche – Goolishka