Cerca tramite link

Ciao,

Sto scrivendo uno script Python che deve cercare nel mio forum e verificare se un link esterno esiste nel contenuto dei thread del mio forum.
Il problema è: ho controllato manualmente, trova alcuni risultati di post contenenti il link e altri no. Anche se il link è nel post.
Sarebbe qualcosa di previsto?

Cosa stai cercando? Il crudo o il cotto?

Il raw. Ad esempio:

E viene oneboxed nel thread op. A volte funziona con lo stesso dominio ma con un suffisso diverso, a volte no.

Senza sapere esattamente come stai cercando, è difficile indovinare cosa stia succedendo.

Se mi venisse assegnato questo compito da implementare, probabilmente creerei una query di Data Explorer che cercasse tutti i post con il link in formato raw o cooked.

2 Mi Piace

per ora è solo una ricerca normale, lato sito, come questa:

Nel mio forum, ho appena creato un argomento con 1 link e non riesco ancora a trovare l’argomento cercando il link.

Non l’ho testato qui, dato che non sono sicuro se sia consentito pubblicare link o meno.

Sto ancora testando. Sembra che non riesca a cercare un link lungo intero (massimo 101 caratteri). Quindi devo accorciarlo un po’ se è più lungo. Fatemi sapere se posso pubblicare un link di esempio e se è il comportamento previsto.

Discourse tiene un registro de cualquier enlace dentro de las publicaciones.
Para tu caso de uso, usaría estos datos.
Hasta donde sé, no hay una API para acceder a estos enlaces.
Implementar una a través de un plugin no debería ser difícil.

2 Mi Piace

Grazie per la tua risposta

Sto usando questa automazione, funziona molto bene, purché il link non superi i 100 caratteri. Se lo fa, restituisce come inesistente, anche se esiste un argomento con quel link.

async def search_discourse_topic(session, link):
    headers = {"Api-Key": USER_API_KEY, "Api-Username": USER_ID}
    cleaned_link = clean_url(link)  # Pulisce l'URL fornito per garantire la coerenza
    try:
        log(f"Ricerca dell'argomento con link: {cleaned_link}")  # Log all'avvio della ricerca
        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"Nessun argomento trovato per il link: {cleaned_link}")  # Log se non vengono trovati risultati
            for topic in topics:
                if cleaned_link in topic.get("blurb", ""):  # Controlla se il link appare nella descrizione dell'argomento
                    log(f"Trovato argomento esistente con link: {cleaned_link}")  # Log se viene trovato un argomento corrispondente
                    return topic["id"]
    except Exception as e:
        log(f"Errore durante la ricerca dell'argomento con link: {e}")
    return None
1 Mi Piace