在汤博乐上查找未标记的帖子(请求Python-3.3编码帮助)



我对编码非常陌生;我深入研究这个项目是为了帮助我的朋友在汤博乐上标记她的一万五千条和一些奇怪的帖子。我们终于完成了,但她想确保我们没有错过任何东西。。。所以,我搜索了互联网,试图找到一个编码解决方案。我在这里发现了一个脚本,据说它正是我们所需要的——所以我下载了Python,然后。。。它不起作用。

更具体地说,当我点击脚本时,一个黑框会出现大约半秒钟,然后消失。我还没能截屏框来找出它到底说了什么,但我相信它说有语法错误。起初,我尝试使用Python 2.4;它似乎没有找到创建者使用的Json模块,所以我切换到Python 3.3——Windows的最新版本,这就是语法错误发生的地方。

#!/usr/bin/python
import urllib2
import json
hostname = "(Redacted for Privacy)"
api_key = "(Redacted for Privacy)"
url = "http://api.tumblr.com/v2/blog/" + hostname + "/posts?api_key=" + api_key
def api_response(url):
req = urllib2.urlopen(url)
return json.loads(req.read())
jsonresponse = api_response(url)
post_count = jsonresponse["response"]["total_posts"]
increments = (post_count + 20) / 20
for i in range(0, increments):
jsonresponse = api_response(url + "&offset=" + str((i * 20)))
posts = jsonresponse["response"]["posts"]
for i in range(0, len(posts)):
if not posts[i]["tags"]:
print posts[i]["post_url"]
print("All finished!")

所以,嗯,我的问题是:如果这个编码有一个语法错误,可以修复,然后用来在汤博乐上查找未标记的帖子,那么这个错误可能是什么?如果这个代码已经过时了(无论是通过汤博乐还是通过Python更新),那么有一点空闲时间的人会愿意帮助创建一个新的脚本来在汤博乐上查找未标记的帖子吗?搜索汤博乐,这似乎是一个半常见的问题。

如果重要的话,Python安装在C:\Python33中。

感谢您的帮助。

当我点击脚本时,一个黑框会出现大约半秒钟,然后消失

至少,您应该能够从命令行运行Python脚本,例如,执行"Learn Python the Hard Way"中的练习0。


"在汤博乐上寻找未标记的帖子"博客文章包含Python 2脚本(查看源代码中的import urllib2urllib2在Python 3中重命名为urllib.request)。将脚本移植到Python3:很容易

#!/usr/bin/env python3
"""Find untagged tumblr posts.
Python 3 port of the script from
http://www.alexwlchan.net/2013/08/untagged-tumblr-posts/
"""
import json
from itertools import count
from urllib.request import urlopen
hostname, api_key = "(Redacted for Privacy)", "(Redacted for Privacy)"
url = "https://api.tumblr.com/v2/blog/{blog}/posts?api_key={key}".format(
blog=hostname, key=api_key)
for offset in count(step=20):
r = json.loads(urlopen(url + "&offset=" + str(offset)).read().decode())
posts = r["response"]["posts"]
if not posts: # no more posts
break
for post in posts:
if not post["tags"]: # no tags
print(post["post_url"])

以下是使用官方Python Tumblr API v2客户端(仅Python 2库)实现的相同功能:

#!/usr/bin/env python
from itertools import count
import pytumblr # $ pip install pytumblr
hostname, api_key = "(Redacted for Privacy)", "(Redacted for Privacy)"
client = pytumblr.TumblrRestClient(api_key, host="https://api.tumblr.com")
for offset in count(step=20):
posts = client.posts(hostname, offset=offset)["posts"]
if not posts: # no more posts
break
for post in posts:
if not post["tags"]: # no tags
print(post["post_url"])

Tumblr有一个API。你可能会有更好的成功使用它。

https://code.google.com/p/python-tumblr/

最新更新