我正在尝试使用Tumblr API在我的二级博客上发布一些东西。我使用的是TumblpyPython包,因为official Tumblr client只用于python2,而且似乎已经放弃了它。在
我授权了这个应用程序,然后查看了一下Tumblr console我从那里拿到了所有的钥匙。我开始玩它,我注意到我可以成功地发布到我的主要博客,但不能在第二博客上(总是出现{TumblpyError} 404 'There was an error making your request.'
错误)。在
这是我一直在尝试的代码:
from tumblpy import Tumblpy
def post_tumblr(
url,
comment='',
tags='',
**kwargs
):
t = Tumblpy(
APP_KEY, APP_SECRET,
OAUTH_TOKEN, OAUTH_TOKEN_SECRET
)
blog_url = t.post('user/info')
blog_url = blog_url['user']['blogs'][0]['url'] # POSTING TO PRIMARY BLOG WORKS
# blog_url = blog_url['user']['blogs'][1]['url'] # CANNOT POST TO SECONDARY BLOG?
post_url = t.post(
'post',
blog_url=blog_url,
params={
'type': 'video',
'embed': url,
'caption': comment,
'tags': tags,
}
)
return True
在TumblrAPI中发布到二级博客有什么问题吗?在
这是一个有趣的例子。首先要注意的是,在Tumblr API中,任何}。但是,在任何}。在
blog.url
都是一个完整的url,包括方案:http://
或{/blog/{blog-identifier}/*
API请求中,它不接受完整的url,只接受主机名:example.com
或{考虑到这些信息,您的请求似乎都不起作用,所以我检查了Tumblpy的代码。结果是Tumblpy确实接受}url,如here。在
{blog-identifier}
的完整url,除去了主机名之外的所有内容。但是,它只适用于http://
url,而不是{如果您有一个启用了SSL的博客,
url
字段将是一个https://
链接,Tumblpy将无法正确处理它。我假设您的第二个博客就是这样;您可以在您的settings page上查看该博客。在假设是这样,最好的解决方法是在调用
Tumblpy.post()
之前自己构造主机名。只需使用user.blogs[i].name + ".tumblr.com"
。或者,也可以从url解析主机名。任何一种方法都会奏效。在相关问题 更多 >
编程相关推荐