2011-07-29 13 views
5

Tôi có thể tải lên một ảnh nhưng tôi không thể tạo ảnh bằng nhiều hình ảnh bằng API.API Tumblr - cách tải nhiều hình ảnh lên một Photoet

Documentation nói: paramater: Array (URL mã hóa nội dung nhị phân) tập tin hình ảnh

một trở lên (gửi nhiều lần để tạo ra một slide show)

Có ai biết làm thế nào để làm điều đó?

+0

Vâng, tôi đang đấu tranh với điều này ngay bây giờ. Không chắc chắn ý nghĩa của chúng với mảng dữ liệu nhị phân được mã hóa URL. – Arvin

+0

@Arvin Tôi đã bắt đầu một cuộc thảo luận về nhóm tumblr. Họ nói rằng nó cố định nhưng tôi vẫn không thể làm cho nó hoạt động .. https://groups.google.com/group/tumblr-api/browse_thread/thread/d32e0e6f9028960b/6865aa7b5eb3241d?lnk=gst&q=multiple+photos#6865aa7b5eb3241d – miloshes

+0

Họ đăng một ví dụ python tại https://gist.github.com/1198576 - nhưng tôi vẫn không thể tìm ra nó trong Objective C (sử dụng ASIFormDataRequest + OAuth.h). Tôi có thể tải lên các tệp đơn lẻ, nhưng không thể tải nhiều. Tôi không nghĩ rằng ASIHTTPRequest 'url mã hóa dữ liệu nhị phân' khi tải lên các tệp trong dữ liệu biểu mẫu - cách này được thực hiện? –

Trả lời

21

Đó là một quá trình đau đớn, nhưng tôi đã tìm ra nó sau khi nghiên cứu python code Tumblr posted. Tóm lại, nó đòi hỏi phải có hệ thập lục phân cho ảnh và sau đó thực hiện một số thay thế.

Tôi đã tạo đơn giản iOS/iPad/iPhone project on GitHub that uploads multiple photos to photosets using the Tumblr API, dựa chủ yếu vào số ASIHTTPRequest+OAuth project. Nó hoạt động cho đến nay trong thử nghiệm giới hạn của tôi - cảm thấy tự do để sử dụng nó và cho tôi biết làm thế nào nó đi.

+0

@miloshes - điều này có trả lời câu hỏi của bạn không? Nếu vậy, đánh dấu điều này là câu trả lời và/hoặc một upvote sẽ được nhiều đánh giá cao. Nếu không, bạn đang sử dụng ngôn ngữ lập trình nào để thực hiện việc này? –

+2

Công việc tuyệt vời, làm việc như một sự quyến rũ;) – ferostar

+3

@VictorVanHee, công việc tuyệt vời, tài liệu API chính thức của tumblr thực sự khiến tôi mất nhiều giờ. –

1

PhotoUpLink mới cho iPhone tải lên các tập ảnh Tumblr đúng. Đây là một bản tải xuống miễn phí từ App Store tại http://uplink.to/5o ảnh ví dụ tại http://photouplink.tumblr.com

Trình tải lên Tumblr dựa trên sử thi của @ VictorVanHee. Tôi đã tối ưu hóa mã bằng cách chuyển sang thẳng C cho chuỗi chương trình con NSDataWithoutURLEncoding:

- (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

Tôi cũng đang gặp sự cố với điều này. Dưới đây là một ý chính trong trăn về những gì đã kết thúc làm việc cho tôi: https://gist.github.com/charlesbrandt/11eadaec114288d621fa

Bí quyết là tất cả ảnh phải được thêm vào thông số bài đăng của bạn bằng 'dữ liệu [#]' cho khóa. ('dữ liệu [0]', 'dữ liệu [1]', v.v.)

0

Thông số 'nguồn' cực kỳ đơn giản, nếu bạn chỉ có một hình ảnh để tải lên, nếu có nhiều hình ảnh, hãy chuyển thông số thành ' dữ liệu 'và khởi tạo nó với mảng URL hình ảnh. Đối với khách hàng php tumblr, đoạn mã sau có thể được sử dụng:

$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);