Je suis l'auteur du script lié dans la réponse de @ oneqeightyfour. Donc, bien que je sois un peu en retard pour la fête, voici une version modifiée du script que vous pouvez utiliser.
J'ai trouvé un site en un clic qui prétend faire cela aussi, mais je n'ai pas pu le faire fonctionner. Vous voudrez peut-être essayer cela en premier?
Étape 1: obtenir une clé API Tumblr
L'utilisation de l'API est beaucoup plus simple, du point de vue de la programmation, que d'essayer de gratter le site. En outre, Tumblr T & Cs désapprouve votre accès en masse aux données sans passer par l'API.
Pour obtenir votre clé API:
- Assurez-vous que vous êtes connecté à Tumblr
- Accédez à leur page d'enregistrement OAuth .
Sélectionnez «Enregistrer la demande» et utilisez les détails suivants:
- Nom de l'application: trouver tous mes messages d'origine
- Description de l'application: Trouvez tous les messages originaux sur un site; c'est-à-dire des articles qui ne sont pas des blogs
- URL de rappel par défaut: /
Cela vous ramène à la première page. Vous verrez une clé de consommateur OAuth . Copiez ceci - nous l'utiliserons sous peu.
Étape 2: configurer le script
Ceci est la version légèrement modifiée de mon script. Copiez et collez ceci dans un éditeur de texte (par exemple TextEdit ou Bloc-notes) et enregistrez-le sous originals.py
.
Vous devez remplacer la HOSTNAME
variable par l'URL de votre blog et la API_KEY
variable par la clé client OAuth que vous avez récupérée à l'étape 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!")
Étape 3: exécutez le script
Il s'agit d'un script Python, adapté à Python 2 ou 3. Si vous parcourez Google, vous devriez être en mesure de trouver des instructions pour exécuter des scripts Python pour le système d'exploitation de votre choix.
Le script imprimera une liste d'URL où il n'a pas obtenu d'informations de retour de l'API Tumblr. Lors de mes (très brefs) tests, il semblait avoir récupéré une poignée d'URL qui étaient en fait des renvois - je n'ai fait aucune recherche pour savoir pourquoi c'est le cas.
S'amuser! :-)