2011-07-29 18 views
5

1つの画像をアップロードできますが、APIを使用して複数の画像でフォトセットを作成することはできません。Tumblr API - 複数の画像をPhotosetにアップロードする方法

ドキュメントは言う: のparamaterを:アレイ(URLエンコードされたバイナリコンテンツ)

つまたは複数の画像ファイル(スライドショーを作成するために、複数回の提出)

はそれを行う方法を誰もが知っていますか?

+0

ええ、私は今これで苦労しています。彼らがURLエンコードされたバイナリデータの配列で何を意味していたか分からない。 – Arvin

+0

@Arvin tumblrグループで議論を始めました。彼らはそれが修正されたと言うが、私はまだそれを動作させることはできません.. https://groups.google.com/group/tumblr-api/browse_thread/thread/d32e0e6f9028960b/6865aa7b5eb3241d?lnk=gst&q=multiple+photos#6865aa7b5eb3241d – miloshes

+0

彼らはhttps://gist.github.com/1198576にpythonの例を掲載しましたが、(ASIFormDataRequest + OAuth.hを使用して)Objective Cでそれを理解することはまだできません。私は1つのファイルをアップロードできますが、複数のファイルはアップロードできません。フォームデータにファイルをアップロードするときにASIHTTPRequestの 'url encoded binary data'とは思わない - これはどのように行われるのですか? –

答えて

21

これは苦しいプロセスですが、python code Tumblr postedを勉強してから分かりました。要するに、写真の16進数を取得してから、いくつかの置換を行う必要があります。

ASIHTTPRequest+OAuth projectに大きく基づいて簡単なiOS/iPad/iPhone project on GitHub that uploads multiple photos to photosets using the Tumblr APIを作成しました。私の限定されたテストでこれまでのところ動作します。自由に使用して、どのように動くか教えてください。

+0

@miloshes - これはあなたの質問に答えましたか?もしそうなら、これを答えとして、そして/またはアップヴォートとしてマークすることは、非常に高く評価されるでしょう。そうでない場合は、これを行うためにどのようなプログラミング言語を使用していますか? –

+2

偉大な仕事、魅力的なように働いた;) – ferostar

+3

@VictorVanHee、優れた仕事、公式のtumblr APIのドキュメントは本当に何時間もナットを運転します。 –

1

新しいPhotoUpLink for iPhoneは真のTumblrフォトセットをアップロードします。 App Storeから無料でダウンロードできます。http://uplink.to/5o例のフォトセットhttp://photouplink.tumblr.com

Tumblrのアップローダは、@ VictorVanHeeの叙事詩に基づいています。私もこれで問題を抱えていた

- (NSString *) stringWithoutURLEncoding 
{ 
    NSString *hexDataDesc = [self description]; 
    hexDataDesc = [[hexDataDesc stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]] stringByReplacingOccurrencesOfString:@" " withString:@""]; 

    int hlen = [hexDataDesc length]; 

    NSString *hexDataDescU = [hexDataDesc uppercaseString]; 

    const char *hexcString = [hexDataDescU cStringUsingEncoding:NSASCIIStringEncoding]; 

    char *newStringC = malloc(hlen *3); 
    memset(newStringC, 0, hlen *3); 

    int xC= 0, upd = 3000, value = 0; 

    char *componentC = malloc(5); // = "XX"; 

    componentC[2] = 0; 

    const char *px = "%x"; char ptc = '%'; 

    for (int x=0; x<hlen; x+=2) 
    {       
     componentC[0] = hexcString[x]; 
     componentC[1] = hexcString[x+1]; 

     value = 0; 
     sscanf(componentC, px, &value); 
     if ((value <=46 && value >= 45) || (value <=57 && value >= 48) || (value <=90 && value >= 65) || (value == 95) || (value <=122 && value >= 97)) //48-57, 65-90, 97-122 
     { 
      newStringC[xC++] = (char)value; 
     } 
     else 
     { 
      newStringC[xC++] = ptc; 
      newStringC[xC++] = (char)componentC[0]; 
      newStringC[xC++] = (char)componentC[1]; 
     } 
    } 

    NSString *newString = [NSString stringWithCString:newStringC encoding:NSASCIIStringEncoding]; 
    NSString *aNewString = [newString stringByReplacingOccurrencesOfString:@"%20" withString:@"+"]; 

    free (newStringC); 
    free (componentC); 

    return aNewString; 
} 
0

:私はNSDataのstringWithoutURLEncodingサブルーチンのためにまっすぐCに切り替えて、コードを最適化しました。 https://gist.github.com/charlesbrandt/11eadaec114288d621fa

秘密は、すべての写真をキー用の[データ] [#]で投稿パラメータに追加する必要があるということです。 ( 'data [0]'、 'data [1]'など)

0

アップロードする画像が1つだけの場合は 'source'パラメータを使用し、画像が複数ある場合はパラメータを 'データ 'との画像URLの配列で初期化します。 php tumblrクライアントの場合、次のスニペットを使用できます:

$paramsToPost = [ 
    'type' => 'photo', 
    'tags' => 'tag1, tag2, tag2', 
    'caption' => 'caption for photo(s)', 
    'link' => 'http://example.com/click-through-url' 
]; 
if (is_array($imageData)) { 
    $paramsToPost['data'] = $imageData; 
} else { 
    $paramsToPost['source'] = $imageData; 
} 
$client = new Tumblr\API\Client($consumerKey, $consumerSecret); 
$client->setToken($token, $tokenSecret); 
$response = $client->createPost($blogName, $paramsToPost); 
関連する問題