2016-04-06 7 views
0

Ich muss ein Remote-Image herunterladen, dass sein Pfad auf dem wineTweet.label Attribut gespeichert ist. Und dann einen Tweet mit diesem Bild POST.Wie effizient posten Sie einen Tweet mit einem Remote-Bild mit Nodejs Stream?

Meine Implementierung funktioniert, aber ich zuerst speichern Sie das Bild in eine Datei und lesen Sie es dann vor dem Posten. Hier

ist der Code:

var file = fs.createWriteStream("file.jpg"); 
    https.get(wineTweet.label, function (response) { 
     response.pipe(file); 
     file.on('finish', function() { 
      var data = require('fs').readFileSync('file.jpg'); 
      // Make post request on media endpoint. Pass file data as media parameter 
      client.post('media/upload', {media: data}, function (error, media, response) { 
       if (!error) { 
        // If successful, a media object will be returned.       // Lets tweet it 
        var status = { 
         status : 'I am a tweet', 
         media_ids: media.media_id_string // Pass the media id string 
        } 
        client.post('statuses/update', status, function (error, tweet, response) { 
         if (!error) { 
          console.log(tweet); 
        }); 
       } 
      }); 
     }); 
    }); 

Wie direkt verbinden ReadingStream auf die Anforderung POST?

+0

Welche Bibliothek verwenden Sie zum Posten von Tweets? – mscdex

+0

das Twitter-Paket – Anthony

Antwort

1

Verwenden Sie einfach die response direkt, die bereits ein lesbarer Strom ist, statt zu schreiben/eine temporäre Datei zu lesen:

https.get(wineTweet.label, function(res) { 
    // Make post request on media endpoint. Pass file data as media parameter 
    client.post('media/upload', {media: res}, function(error, media, response) { 
    if (!error) { 
     // If successful, a media object will be returned.       // Lets tweet it 
     var status = { 
     status : 'I am a tweet', 
     media_ids: media.media_id_string // Pass the media id string 
     }; 
     client.post('statuses/update', status, function(error, tweet, response) { 
     if (!error) 
      console.log(tweet); 
     }); 
    } 
    }); 
}); 

auf einer nicht verwandte Notiz, Sie soll Griff Fehler in geeigneter Weise statt sie zu ignorieren sie.

+0

, das funktioniert. Dies ist nur ein Snipet für eine Demo, also werde ich jetzt Fehler behandeln. – Anthony