2012-02-16 60 views
2

我搜索了董事会,并找到一个线程,我用它来上传一张图片到tumblr的脚本。张贴图片从目录到tumblr通过python

from tumblr import Api 
import sys 

def antearaTumblr(blog, email, password): 
    BLOG=blog 
    USER=email 
    PASSWORD=password 
    api = Api(BLOG,USER,PASSWORD) 
    #data = open('C:/Users/Kevin/Desktop/python-tumblr-0.1/1329360987775.jpg').read() 
    api.write_photo('http://www.jonathanworthington.co.uk/wp-content/uploads/2008/07/etc.jpg') 
    title = '' 
    body = '' 
    api.write_regular(title,body) 

这是行不通的,它使用write_photo从互联网抓取照片并将其上传到我的tumblr。不过,我不知道如何使它抓住从我的电脑上的目录,像这样的照片....

from tumblr import Api 
import sys 

def antearaTumblr(blog, email, password): 
    BLOG=blog 
    USER=email 
    PASSWORD=password 
    api = Api(BLOG,USER,PASSWORD) 
    data = open('C:/Users/Kevin/Desktop/python-tumblr-0.1/1329360987775.jpg').read() 
    title = '' 
    body = '' 
    api.write_regular(title,data) 

它成功地上传,但是所有这上传是这样的...ÿØÿà。 ..我认为这是jpg标题。

我发现此主题Post picture to Tumblr using Python但我不确切地知道答复的内容。

有谁知道如何让它使用目录而不是链接工作?

此外,我试过这https://gist.github.com/1242662但老实说,我只是不知道该怎么做。

感谢您收到我的任何帮助。

回答

1

纵观链接后似乎数据是关键字参数,所以你会打电话api.write这样的:

api.write_regular(title, data=data) 

我不知道这是否会工作或没有,但tumblr的API似乎well documented 。我建议使用requests,这是迄今为止最好的Python的HTTP库。上传一张照片:

import requests 

url = 'https://www.tumblr.com/api/write' 
data = {'email': your_email, 'password': your_password, 'type': 'photo'} 
files = {'data': open('your_image.jpg')} 

requests.post(url, data=data, files=files) 
+0

嗯,我试过了,但它似乎没有做任何事情= /。 – Anteara 2012-02-16 10:38:37

+0

实际上它从上面的链接工作到github。谢谢。 – Anteara 2012-02-16 11:59:44

+0

很高兴你至少在工作!实际上,我在发布之前对此进行了测试,并且对我来说工作得很好。也许你忘了设置电子邮件,密码或更改文件名,所以它指向一个真正的文件?什么都不做会令人惊讶,你可以执行'r = requests.post(...)'并查看'r.content'来查看服务给你的错误。 – zeekay 2012-02-16 14:38:35