Tumblr API 发布到二级博客
Tumblr API posting to secondary blog
我正在尝试使用 Tumblr API 来 post 我的二级博客。我正在使用 Tumblpy Python package because official Tumblr client 仅适用于 Python 2,但它似乎已被废弃。
我授权了该应用程序,并查看了 Tumblr console 我从中获取所有密钥的地方。我开始尝试使用它,我注意到我可以成功 post 到我的主要博客,但不能在次要博客上(一直出现 {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
post转至 Tumblr 中的二级博客 API 是否有一些问题?
这很有趣。首先要注意的是,在 Tumblr API 中,任何 blog.url
都是完整的 url,包括方案:http://
或 https://
。但是,在任何 /blog/{blog-identifier}/*
API 请求中,它 不 接受完整的 url,仅接受主机名:example.com
或 demo.tumblr.com
.
鉴于此信息,您的请求似乎 都不应该工作,所以我检查了一下 Tumblpy 的代码。事实证明,Tumblpy 通过去除主机名以外的所有内容,确实接受 {blog-identifier}
的完整 url。但是,它仅适用于 http://
urls,而不适用于 https://
urls,如 here.
所示
如果您的博客启用了 SSL,url
字段将是 https://
link,然后 Tumblpy 将无法正确处理它。我假设您的二级博客就是这种情况;你可以在 settings page 上查看该博客。
假设是这种情况,最好的解决方法是在调用 Tumblpy.post()
之前自己构造主机名。只需使用 user.blogs[i].name + ".tumblr.com"
。或者,您也可以从 url 解析主机名。两种方法都行得通。
我正在尝试使用 Tumblr API 来 post 我的二级博客。我正在使用 Tumblpy Python package because official Tumblr client 仅适用于 Python 2,但它似乎已被废弃。
我授权了该应用程序,并查看了 Tumblr console 我从中获取所有密钥的地方。我开始尝试使用它,我注意到我可以成功 post 到我的主要博客,但不能在次要博客上(一直出现 {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
post转至 Tumblr 中的二级博客 API 是否有一些问题?
这很有趣。首先要注意的是,在 Tumblr API 中,任何 blog.url
都是完整的 url,包括方案:http://
或 https://
。但是,在任何 /blog/{blog-identifier}/*
API 请求中,它 不 接受完整的 url,仅接受主机名:example.com
或 demo.tumblr.com
.
鉴于此信息,您的请求似乎 都不应该工作,所以我检查了一下 Tumblpy 的代码。事实证明,Tumblpy 通过去除主机名以外的所有内容,确实接受 {blog-identifier}
的完整 url。但是,它仅适用于 http://
urls,而不适用于 https://
urls,如 here.
如果您的博客启用了 SSL,url
字段将是 https://
link,然后 Tumblpy 将无法正确处理它。我假设您的二级博客就是这种情况;你可以在 settings page 上查看该博客。
假设是这种情况,最好的解决方法是在调用 Tumblpy.post()
之前自己构造主机名。只需使用 user.blogs[i].name + ".tumblr.com"
。或者,您也可以从 url 解析主机名。两种方法都行得通。