Tumblr API - 如何将多个图像上传到Photoset

时间:2011-07-29 20:28:13

标签: image upload tumblr

我可以上传一张图片,但我无法使用API​​创建包含多张图片的photoset。

文件说: Paramater:Array(URL编码的二进制内容)

一个或多个图像文件(多次提交以创建幻灯片)

有谁知道怎么做?

4 个答案:

答案 0 :(得分:21)

这是一个痛苦的过程,但我在研究python code Tumblr posted后想出来了。简而言之,它需要获取照片的十六进制,然后进行一些替换。

我创建了一个简单的iOS / iPad / iPhone project on GitHub that uploads multiple photos to photosets using the Tumblr API,主要基于ASIHTTPRequest+OAuth project。它在我的有限测试中工作到目前为止 - 随意使用它并让我知道它是怎么回事。

答案 1 :(得分:1)

新的PhotoUpLink for iPhone上传真正的Tumblr照片。可以在http://uplink.to/5o <{3}}示例照片集中从App Store免费下载http://photouplink.tumblr.com

Tumblr上传器基于@ VictorVanHee的史诗。我通过切换到NSData stringWithoutURLEncoding子例程的直接C来优化代码:

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

答案 2 :(得分:0)

我也遇到了麻烦。这是最终为我工作的python中的一个要点: https://gist.github.com/charlesbrandt/11eadaec114288d621fa

诀窍是所有照片都必须添加到您的帖子参数中,数据[#]&#39;钥匙。 (&#39;数据[0]&#39;,&#39;数据[1]&#39;等)

答案 3 :(得分:0)

这非常简单,如果您只有一个图片需要上传,请使用'source'参数,如果有多个图片,请将参数切换为'data'并使用图片网址数组进行初始化。对于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);