2011-07-29 18 views
5

Mogę przesłać jedno zdjęcie, ale nie mogę utworzyć fotoksiążki z wieloma obrazami przy użyciu interfejsu API.Interfejs API Tumblr - jak przesłać wiele zdjęć do zestawu zdjęć

Dokumentacja mówi: paramater: Array (URL zakodowane zawartość binarne)

Jeden lub więcej plików graficznych (złożyć kilka razy, aby utworzyć pokaz slajdów)

czy ktoś wie jak to zrobić?

+0

Tak, teraz walczę z tym. Nie wiem, co mieli na myśli, mając do czynienia z tablicą danych binarnych zakodowanych w adresie URL. – Arvin

+0

@Arvin Zacząłem dyskusję na temat grupy tumblr. Mówią, że jest on poprawiony, ale nadal nie mogę go uruchomić. Https://groups.google.com/group/tumblr-api/browse_thread/thread/d32e0e6f9028960b/6865aa7b5eb3241d?lnk=gst&q=multiple+photos#6865aa7b5eb3241d – miloshes

+0

napisałem przykład Pythona na https://gist.github.com/1198576 - ale nadal nie mogę tego rozgryźć w Objective C (używając ASIFormDataRequest + OAuth.h). Mogę przesłać pojedyncze pliki, ale nie wiele. Nie sądzę, że adres URL ASIHTTPRequest koduje dane binarne podczas przesyłania plików w danych formularza - jak to się dzieje? –

Odpowiedz

21

To trochę bolesny proces, ale odkryłem to po zapoznaniu się z python code Tumblr posted. Krótko mówiąc, wymaga uzyskania szesnastkowego zdjęcia, a następnie dokonania pewnych zmian.

Stworzyłem prosty iOS/iPad/iPhone project on GitHub that uploads multiple photos to photosets using the Tumblr API, oparty w dużej mierze na ASIHTTPRequest+OAuth project. Działa to jak dotąd w moich ograniczonych testach - skorzystaj z niego i daj mi znać, jak to działa.

+0

@miloshes - czy to była odpowiedź na twoje pytanie? Jeśli tak, zaznaczenie tego jako odpowiedzi i/lub przekazu zostanie bardzo docenione. Jeśli nie, to w jakim języku programowania to robisz? –

+2

Świetna robota, zadziałała jak wdzięk;) – ferostar

+3

@VictorVanHee, świetna robota, oficjalny tumblr API doc naprawdę doprowadza mnie do szału przez wiele godzin. –

1

Nowy PhotoUpLink na iPhone'a ładuje prawdziwe wydruki Tumblr. Jest do pobrania za darmo ze sklepu App Store pod adresem http://uplink.to/5o przykład photosets pod http://photouplink.tumblr.com

Przesyłający Tumblr jest oparty na epopei @ VictorVanHee. Zrobiłem optymalizacji kodu przez przejście do prostej C dla podprogramu NSData stringWithoutURLEncoding:

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

miałem problemy z tym też. Oto najważniejszy wątek w pythonie, który zakończył się dla mnie: https://gist.github.com/charlesbrandt/11eadaec114288d621fa

Podstępem jest to, że wszystkie zdjęcia muszą zostać dodane do parametrów wpisu za pomocą "data [#]" dla kluczy. ("dane [0]", "dane [1]" itp.)

0

To bardzo proste, użyj parametru "źródło", jeśli masz tylko jeden obraz do przesłania, jeśli jest wiele obrazów, przełącz parametr na " danych "i zainicjować go za pomocą tablicy adresów URL obrazów. W przypadku klienta php tumblr można użyć następującego fragmentu kodu:

$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); 
Powiązane problemy