Tenho um discourse onde sou moderador (não tenho acesso ao backend). Alguém postou vários tópicos onde as imagens foram vinculadas a um provedor de hospedagem de terceiros (neste caso, Google docs). Eles deixaram a empresa e todos esses links de imagem agora estão quebrados.
Eu posso (e tenho) revisado manualmente alguns de seus posts para encontrar e corrigir (graças ao Internet Archive) imagens quebradas. Mas isso é trabalhoso. Eu gostaria de obter uma lista de todos os tópicos contendo esses URLs de imagem quebrados para que possamos corrigi-los coletivamente, reenviando as imagens para o site.
Eu posso, é claro, usar a pesquisa para encontrar with:images #tutorials, mas não consigo pesquisar dentro dos URLs das imagens por (por exemplo) googleusercontent. Isso é possível, sem acesso à API ou ao backend rake?
Um administrador poderia criar uma consulta no explorador de dados que encontrasse essas postagens.
Mas se o administrador quisesse que isso não acontecesse, ele teria que ativar o download de imagens para o local. É um problema que eles criaram e não é realmente trabalho de um moderador corrigi-lo.
Isso significa que você também não pode instalar o explorador de dados? Essa seria a ferramenta de escolha para isso.
Como as imagens são formatadas nas postagens? Elas mostram apenas o URL simples, usam [img], \u003cimg\u003e, …?
Apenas para ilustrar seu problema. Uma postagem poderia conter um URL de imagem quebrado, como https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNaW4QQ43EQ-8qqQPntDP7so6Cg19PVSLN9bXv3ZhQqHZtomb8CGY3XArx3GIaZ04d0p9K3V-buaf73-M5dpq2wPuvnjsapStHdTkTVoPj2q9RAmcdczmE12HYz57PNOdVuft1/s1600-h/eastern_coastal_pcn_ap.jpg
Se eu procurar por googleusercontent, nenhum resultado é retornado. No entanto, posso encontrar posts que têm imagens, referenciadas por uma URL contendo o texto googleusercontent. Não sei se isso é um bug ou um recurso que o discourse não pesquisa as URLs de links de imagem formatados em markdown.
Acredito que a pesquisa do Discourse é realizada na postagem processada, que contém HTML.
A pesquisa ignora as tags HTML e as tags IMG não contêm texto, daí a impossibilidade de retornar o que você procura.
Por que você não pode usar a API?
Você poderia criar um script local que aciona uma consulta de pesquisa para as postagens do usuário contendo imagens, itera pelos resultados (lentamente o suficiente para não atingir os limites de taxa e também você pode consultar o conteúdo bruto das postagens se necessário) e gera as postagens contendo a substring que você procura.
Talvez haja uma solução mais simples, mas é assim que eu faria sem outra opção. Bastante simples de fazer.
Sim, quero dizer, uma chave não é necessária para os endpoints de pesquisa e postagem da API necessários para minha sugestão, a menos que eu esteja enganado?
E, claro, idealmente exigiria conhecimento básico de programação, mesmo que as IAs provavelmente possam gerar um bom script base.
O problema mencionado certamente não é ideal para resolver sem acesso de administrador.
Não solicitei uma chave de API (burocracia) e não sabia que precisaria de uma para fazer o que eu percebia como uma consulta de pesquisa “simples”. Não sabia que não inspeciona as tags HTML no conteúdo. Então, isso está explicado, obrigado.
Não é um problema que os administradores criaram. É apenas uma situação que os administradores e criadores de conteúdo não sabiam até que alguém deixou a empresa e o acesso aos documentos do Google foi desativado para essa conta, fazendo com que as imagens desaparecessem/quebrassem.
Concordo que eu poderia solicitar uma chave de API ou escrever algo localmente para raspar o site e encontrar as postagens ofensivas. Farei uma dessas coisas.
Você não precisa de uma chave de API para fazer pesquisas.
Não tenho certeza se ter uma chave de API poderia ajudá-lo a resolver seu problema com mais facilidade.
Aqui está um script Python de exemplo que percorre minhas postagens (1 postagem a cada 3 segundos) no meta e retorna aquelas que contêm a substring upload:// no conteúdo bruto:
import requests
import time
def fetch_posts(page):
url = f"https://meta.discourse.org/search.json?q=%40cocoquark&page={page}"
response = requests.get(url)
return response.json()
def fetch_post_content(post_id):
url = f"https://meta.discourse.org/posts/{post_id}/raw"
response = requests.get(url)
return response.text
def process_posts():
page = 1
while True:
print(f"page {page}")
data = fetch_posts(page)
for post in data['posts']:
content = fetch_post_content(post['id'])
if "upload://" in content:
print("https://meta.discourse.org/posts/" + str(post['id']))
time.sleep(3)
if len(data['posts']) < 50:
print("No more results.")
break
page += 1
if __name__ == "__main__":
process_posts()
Maravilhoso, obrigado @Canapin!
Eu adoro um pouco de python
Agora identifiquei todos os tópicos com imagens quebradas com a sua ajuda.
Muito apreciado.
Você não precisa de uma chave de API para fazer uma pesquisa simples, mas eu não vejo sentido em “usar a API” para fazer uma pesquisa simples.
Talvez eu tenha entendido mal o problema. Parecia um problema que não teria acontecido se download remote images to local estivesse ativado, e ele está ativado por padrão. Mas também é provável que ele tenha sido desativado por algum motivo burocrático pelo qual o administrador fez isso. Acho que será desnecessariamente difícil resolver seu problema sem o plugin data explorer ou acesso ao Rails.