Pesquisar por link

Olá,

Estou escrevendo um script Python que precisa pesquisar no meu fórum e verificar se um link externo existe no conteúdo dos meus tópicos de fórum.
O problema é: verifiquei manualmente, ele encontra alguns resultados de posts contendo o link e outros não. Mesmo que o link esteja no post.
Isso seria algo esperado?

O que você está procurando? Cru ou cozido?

O original. Ex:

E é exibido em uma caixa no tópico original. Às vezes funciona com o mesmo domínio, mas com um final diferente, às vezes não.

Sem saber exatamente como você está pesquisando, é difícil adivinhar o que está acontecendo.

Se eu recebesse essa tarefa para implementar, provavelmente faria uma consulta no Explorador de Dados que pesquisasse por qualquer postagem com o link em formato bruto ou processado.

por enquanto é apenas uma busca normal, no lado do site, assim:

No meu fórum, acabei de criar um tópico com 1 link, e ainda não consigo encontrar o tópico pesquisando pelo link.

Ainda não testei aqui, pois não tenho certeza se é permitido postar links ou não.

Ainda estou testando. Parece que não consigo pesquisar um link longo inteiro (máximo de 101 caracteres). Portanto, preciso cortá-lo um pouco se for mais longo. Me avisem se posso postar um link de exemplo e se é o comportamento esperado.

O Discourse rastreia qualquer link dentro das postagens.
Para o seu caso de uso, eu usaria esses dados.
Pelo que sei, não há API para acessar esses links.
Implementar um via plugin não deve ser difícil.

Obrigado pela sua resposta

Estou usando esta automação, ela funciona muito bem, desde que o link não ultrapasse 100 caracteres. Se ultrapassar, ele retorna como inexistente, mesmo que exista um tópico com esse link.

async def search_discourse_topic(session, link):
    headers = {"Api-Key": USER_API_KEY, "Api-Username": USER_ID}
    cleaned_link = clean_url(link)  # Limpa o URL fornecido para garantir consistência
    try:
        log(f"Searching for topic with link: {cleaned_link}")  # Log quando inicia a pesquisa
        async with session.get(f"{DISCOURSE_API_URL}/search.json", headers=headers, params={"q": cleaned_link}) as response:
            search_results = await response.json()
            topics = search_results.get("topics", [])
            if not topics:
                log(f"No topics found for link: {cleaned_link}")  # Log se não encontrar resultados
            for topic in topics:
                if cleaned_link in topic.get("blurb", ""):  # Checa se o link aparece na descrição do tópico
                    log(f"Found existing topic with link: {cleaned_link}")  # Log se um tópico correspondente for encontrado
                    return topic["id"]
    except Exception as e:
        log(f"Error searching for topic with link: {e}")
    return None