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