首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Tumblr上查找无标记的帖子(请求Python-3.3编码协助)

在Tumblr上查找无标记的帖子(请求Python-3.3编码协助)
EN

Stack Overflow用户
提问于 2014-02-13 00:47:35
回答 2查看 751关注 0票数 3

我是非常熟悉编码的;为了帮助我的朋友在Tumblr上贴一万五千多篇文章,我深入研究了这个项目。我们终于完成了,但她想确定我们没有错过任何东西.所以,我搜索了互联网,试图找到一个编码解决方案。我偶然发现了一个找到这里的脚本,据说它做了我们需要的事情--所以我下载了Python,and...It不起作用。

更具体地说,当我单击脚本时,一个黑匣子出现了大约半秒钟,然后消失。我还没能从屏幕截图中找出它到底写了什么,但我相信它说了一个语法错误。一开始,我尝试使用Python2.4;它似乎没有找到创建者使用的Json模块,所以我转而使用Python3.3 --这是Windows的最新版本,这就是语法错误发生的地方。

代码语言:javascript
复制
#!/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!")

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

如果这很重要,Python安装在C:\Python 33中。

谢谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-15 10:01:33

当我单击脚本时,一个黑匣子出现了大约半秒钟,然后消失。

至少,您应该能够从命令行运行Python脚本,例如,执行练习0来自“艰难地学习Python”

“在Tumblr上查找无标记的帖子”博客文章包含Python2脚本(查看源代码中的import urllib2 )。urllib2在Python3中重命名为urllib.request )。将脚本移植到Python 3很容易:

代码语言:javascript
复制
#!/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"])

下面是使用官方v2客户端实现的相同功能(Python2专用库):

代码语言:javascript
复制
#!/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"])
票数 2
EN

Stack Overflow用户

发布于 2014-02-13 00:59:05

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21743112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档