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?
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.
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.
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