Jestem autorem skryptu, do którego link znajduje się w odpowiedzi @ oneqeightyfour. Więc chociaż jestem trochę spóźniony na imprezę, oto zmodyfikowana wersja skryptu, której możesz użyć.
Znalazłem witrynę , w której można to zrobić jednym kliknięciem , ale nie udało mi się tego uruchomić. Możesz najpierw spróbować?
Krok 1: Uzyskaj klucz API Tumblr
Korzystanie z interfejsu API jest znacznie prostsze, z punktu widzenia programowania, niż próba zeskrobania witryny. Ponadto warunki Tumblr marszczą brwi, gdy masowo uzyskujesz dostęp do danych bez przechodzenia przez interfejs API.
Aby uzyskać klucz API:
- Upewnij się, że jesteś zalogowany do Tumblr
- Przejdź do strony rejestracji OAuth .
Wybierz „Zarejestruj aplikację” i użyj następujących informacji:
- Nazwa aplikacji: Znajdź wszystkie moje oryginalne posty
- Opis aplikacji: Znajdź wszystkie oryginalne posty na stronie; czyli posty, które nie są blogami
- Domyślny adres zwrotny: /
Spowoduje to powrót do pierwszej strony. Zostanie wyświetlony klucz klienta OAuth . Skopiuj to - wkrótce będziemy z niego korzystać.
Krok 2: Skonfiguruj skrypt
To jest lekko zmodyfikowana wersja mojego skryptu. Skopiuj i wklej to do edytora tekstu (np. TextEdit lub Notatnik) i zapisz jako originals.py
.
Powinieneś zastąpić HOSTNAME
zmienną adresem URL swojego bloga, a API_KEY
zmienną kluczem klienta OAuth odzyskanym w kroku 1.
#!/usr/bin/env python
import json
try:
from urllib.request import urlopen
except ImportError:
from urllib2 import urlopen
HOSTNAME = "alexwlchan.tumblr.com"
API_KEY = "abcdefg"
BASE_URL = (
"http://api.tumblr.com/v2/blog/{hostname}/"
"posts?api_key={key}&reblog_info=true"
) .format(hostname=HOSTNAME,key=API_KEY)
def api_response(url):
req = urlopen(url)
return json.loads(req.read())
jsonresponse = api_response(BASE_URL)
post_count = jsonresponse["response"]["total_posts"]
for count in range(0, post_count, 20):
jsonresponse = api_response("{url}&offset={count}".format(
url=BASE_URL,
count=count))
for post in jsonresponse["response"]["posts"]:
if "reblogged_from_name" not in post:
print(post["post_url"])
print("All finished!")
Krok 3: Uruchom skrypt
Jest to skrypt w języku Python, odpowiedni dla języka Python 2 lub 3. Jeśli korzystasz z Google, powinieneś być w stanie znaleźć instrukcje dotyczące uruchamiania skryptów w języku Python dla wybranego systemu operacyjnego.
Skrypt wydrukuje listę adresów URL, na których nie uzyskał żadnych informacji z interfejsu API Tumblr. W moich (bardzo krótkich) testach zdawało się, że wychwyciłem garść adresów URL, które były faktycznie ulubionymi - nie kopałem, żeby dowiedzieć się, dlaczego tak jest.
Baw się dobrze! :-)