Поиск Нетегированных сообщений на Tumblr (требуется помощь в кодировании Python-3.3)
Я чрезвычайно новичок в кодировании вообще; я углубился в этот проект, чтобы помочь моей подруге пометить ее пятнадцать тысяч и более постов на Tumblr. Мы наконец закончили, но она хочет быть уверенной, что мы ничего не пропустили... Итак, я рыскал по интернету, пытаясь найти кодовое решение. Я наткнулся на скрипт, найденный здесь , который якобы делает именно то, что нам нужно-поэтому я скачал Python, and...It не работает.
Более конкретно, когда я нажимаю на по сценарию, черный ящик появляется примерно на полсекунды, а затем исчезает. Я не смог сделать скриншот коробки, чтобы узнать точно , что там написано, но я думаю, что это говорит о синтаксической ошибке. Сначала я попробовал использовать 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!")
Итак, мой вопрос таков: если эта кодировка имеет синтаксическую ошибку это можно исправить, а затем использовать для поиска не помеченных сообщений на Tumblr, что это может быть за ошибка? Если этот код устарел (либо через Tumblr, либо через обновления Python), то может ли кто-то с небольшим количеством свободного времени помочь создать новый скрипт для поиска не помеченных записей на Tumblr? Поиск Tumblr, это, кажется, полу-распространенная проблема.
Если это имеет значение, Python устанавливается в C:Python33.
Спасибо за вашу помощь.2 ответа:
Когда я нажимаю на скрипт, черный ящик появляется примерно на полсекунды, а затем исчезает
По крайней мере, вы должны иметь возможность запускать скрипт Python из командной строки, например, выполните Упражнение 0 из "Learn Python The Hard Way".
"Поиск Нетегированных сообщений на Tumblr" сообщение в блоге содержит скрипт Python 2 (Смотрите
import urllib2
в исходном коде.urllib2
переименован вurllib.request
в Python 3). Легко перенести скрипт на Python 3:#!/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"])