使用Python在Tumblr上发布图片

3
我将尝试使用Python来向Tumblr上发布图片,具体来说是使用http://code.google.com/p/python-tumblr/

#!/usr/bin/python

from tumblr import Api
import sys

BLOG='example.tumblr.com'
USER='example@example.com'
PASSWORD='example'
api = Api(BLOG,USER,PASSWORD)
post_data = "picture.png"   
title = "Title of my entry"
body = "this is a story with a picture"

api.write_regular(title, body + post_data)

当我运行这个程序时,结果是博客被访问,但是输出的内容如下所示:

我的文章标题

这是一个带有图片的故事

[img]

而实际上输出的内容是这样的:

我的文章标题

这是一个带有图片的故事 picture.png


2
也许有人会写一个正确的答案,但我可以告诉你,你现在发送的是作为字符串的“picture.png”,与“这是一个故事”没有什么区别。查看API文档以了解如何传输__图像__。 - porgarmingduod
我觉得你不需要http://code.google.com/p/python-tumblr/。它只会使简单的POST问题更加复杂化。看看这个:https://dev59.com/PE_Sa4cB1Zd3GeqP9h8P - DocWiki
3个回答

2

在您当前的代码中,您没有上传图片,而是发送了一个名为“picture.png”的字符串。正如Daniel DiPaolo所说,您必须使用write_photo来写入照片。write_photo的参数是图像的链接,例如。

#!/usr/bin/python
from tumblr import Api
import sys

BLOG='example.tumblr.com'
USER='example@example.com'
PASSWORD='example'
api = Api(BLOG,USER,PASSWORD)
api.write_photo('http://example.org/somewhere/lolcat.jpg')

如果您想发送HTML内容,您可以创建一个包含所选标记的长正文。

title = "life is amazing" 
body = """
_here my html code_
"""

然后使用API编写它

api.write_regular(title,body)

并且你应该已经准备就绪了。

数据上传

更加精确地说,如果您想发送数据,您需要打开对象。假设您的图像是“lolcat.jpg”。

data = open('lolcat.jpg').read()


如果您选择不将图像数据作为“data”参数传递,则“write_photo”的参数仅为图像链接 :) - Daniel DiPaolo

2
您实际上并没有发送图像数据,而只是发送了一个包含文件名的字符串,因此这并不令人惊讶。 write_regular 调用允许使用 HTML,因此如果您可以将照片上传到某个地方,则应该能够在帖子文本中使用 <img src="..." /> 标签来显示图像。
或者,您可以使用write_photo调用上传照片(而不仅仅是文件名!)到 Tumblr,然后以某种方式获取该 URL 并在您的帖子的 <img> 标签中使用它。

我已经猜到了,只是不知道该如何更改才能使它工作 :) 无论如何,稍微有点关联的问题是:如何保存一个包含 HTML 的字符串?因为 HTML 标记显然会影响 Python。 - HankSmackHood
HTML字符串如何影响Python?在Python中,'This is a cool picture: <img src="my_url_goes_here"/>'可以完美地工作(请注意,如果使用单引号更方便,则可以在字符串中使用单引号,在这种情况下可能更好)。 - Daniel DiPaolo
啊,那可能就是原因了。我习惯使用双引号。 - HankSmackHood
您也可以转义双引号:x = "< a href=\"\" />" - charlax

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接