Eu sou o autor do script vinculado na resposta de @ oneqeightyfour. Portanto, embora eu esteja um pouco atrasado para a festa, aqui está uma versão modificada do script que você pode usar.
Encontrei um site de um clique que também afirma fazer isso, mas não consegui fazer com que funcionasse. Você pode tentar isso primeiro?
Etapa 1: obtenha uma chave da API do Tumblr
Usar a API é muito mais simples, do ponto de vista da programação, do que tentar raspar o site. Além disso, os T&Cs do Tumblr desaprovam o acesso em massa a dados sem passar pela API.
Para obter sua chave de API:
- Verifique se você está logado no Tumblr
- Vá para a página de registro do OAuth .
Selecione "Registrar aplicativo" e use os seguintes detalhes:
- Nome do aplicativo: Encontre todas as minhas postagens originais
- Descrição do aplicativo: encontre todas as postagens originais em um site; ou seja, postagens que não são weblogs
- URL de retorno de chamada padrão: /
Isso leva você de volta à primeira página. Você verá uma chave do consumidor OAuth . Copie isso - nós o usaremos em breve.
Etapa 2: configurar o script
Esta é a versão levemente modificada do meu script. Copie e cole isso em um editor de texto (por exemplo, TextEdit ou Notepad) e salve-o como originals.py
.
Você deve substituir a HOSTNAME
variável pelo URL do seu blog e a API_KEY
variável pela chave do consumidor OAuth que você recuperou na etapa 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!")
Etapa 3: executar o script
Este é um script Python, adequado para Python 2 ou 3. Se você pesquisar no Google, poderá encontrar instruções para executar scripts Python para o seu sistema operacional de sua escolha.
O script imprimirá uma lista de URLs onde não obteve nenhuma informação reblogada da API do Tumblr. Nos meus (muito breves) testes, pareceu pegar um punhado de URLs que eram realmente reblogs - eu não fiz nenhuma pesquisa para descobrir por que esse é o caso.
Diverta-se! :-)