Twitter API mit Perl: Tweet mit Bild

Aufgrund einer aktuellen Anfrage: Wer meine Codebeispiele für die Twitter API mit Perl nutzt und noch ein Bild mit dem Tweet senden möchte, kann den Code wie folgt ergänzen:

Bevor der eigentlich Tweet geschickt wird, muss das Bild bei Twitter upgeloaden werden. Nach dem Upload erhält man die „Media-ID“, die man dann bei dem eigentlichen Tweet angibt – so wird dann das zuvor hochgeladene Bild mit dem Tweet verknüpft:

#...
use GD;
use MIME::Base64;
#...

my $APIurl = 'https://upload.twitter.com/1.1/media/upload.json';      

     my $im = new GD::Image->newFromPng("test.png",1);
     my $binfiledata=encode_base64($im->png(0));      
      
     my $oarequest 
      = Net::OAuth->request('protected resource')->new(
           version => '1.0',
        consumer_key     => $consumerkey,
        consumer_secret => $consumerkeysecret,
        request_url => $APIurl,
        request_method => "POST",
        signature_method => 'HMAC-SHA1',
        timestamp => time,
        nonce => int(rand(9000) + 1000),
        token => $accesstoken,
        token_secret => $accesssecret,
        extra_params => {
            media_data => $binfiledata
        }
     );
     
    $oarequest->sign;

    my $httpheader = HTTP::Headers->new(        
          'Authorization' => $oarequest->to_authorization_header,
          'Content-Type' => 'application/x-www-form-urlencoded'          
    );
              
              
    my $httprequest = HTTP::Request->new("POST", $APIurl, 
        $httpheader, $oarequest->to_post_body);    
      
    my $response = $ua->request($httprequest);      

    print "\nUpload: "; 
    
    if ($response->is_success) 
    {
            
            print "\n\nerfolgreich - ";
             
            my @splitTemp1;
            @splitTemp1=split(/\,/,$response->content);
            my $temp1=$splitTemp1[0];

            my @splitTemp2;
            @splitTemp2=split(/\:/,$temp1);

            $mediaId=$splitTemp2[1];

            print "Media-ID:$mediaId\n\n";

    }
    else 
    {
             print "fehlgeschlagen: ";
             print "\n\n".$response->content."\n\n";
             print "\n\n".$response->status_line."\n\n";
    }

Den eigentlichen Tweet erweitert man dann um den folgenden Extra-Parameter:

        token => $accesstoken,
        token_secret => $accesssecret,
        extra_params => {
                media_ids => $mediaId,
                status => decode("iso-8859-1",$nachricht) 
        }
     );

Probleme? Fragen? Anregungen? Ich helfe jederzeit und gerne  – einfach einen Kommentar oder Mail schreiben, die Antwort kommt schnellstmöglich. Unternehmen, die Unterstützung, Beratung oder Schulung bei der API- oder Webprogrammierung, der Social-Media-Entwicklung oder dem Social-Media-Management benötigen finden zudem entsprechende Angebote meiner Firma auf der Website www.Frank-IT-Beratung.de

Dieser Beitrag wurde unter API, OAuth, Perl, Programmierung, Social Networks, Twitter veröffentlicht. Setze ein Lesezeichen auf den Permalink.

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.