Ho un forum Discourse di cui sono moderatore (non ho accesso al backend). Qualcuno ha pubblicato numerosi argomenti in cui le immagini sono state collegate a un provider di hosting di terze parti (in questo caso, Google docs). Ha lasciato l’azienda e tutti quei collegamenti alle immagini sono ora interrotti.
Posso (e ho) esaminare manualmente alcuni dei suoi post per trovare e correggere (grazie all’Internet Archive) le immagini interrotte. Ma è un lavoro faticoso. Vorrei ottenere un elenco di ogni argomento contenente questi URL di immagini interrotte in modo che possiamo correggerli collettivamente, ricaricando le immagini sul sito.
Posso ovviamente usare la ricerca per trovare with:images #tutorials, ma non posso cercare all’interno degli URL delle immagini per (ad esempio) googleusercontent. È possibile, senza accesso API o al backend rake?
Un amministratore potrebbe creare una query di esplorazione dati che trovi quei post.
Ma se l’amministratore volesse che ciò non accadesse, dovrebbe attivare il download delle immagini in locale. È un problema che hanno creato loro stessi e non è davvero compito di un moderatore risolverlo.
Ciò significa che non puoi installare nemmeno il data explorer? Quello sarebbe lo strumento di scelta per questo.
Come sono formattate le immagini nei post? Mostrano solo l’URL semplice, usano [img], <img>, …?
Solo per illustrare il tuo problema. Un post potrebbe contenere un URL di immagine non valido, come https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNaW4QQ43EQ-8qqQPntDP7so6Cg19PVSLN9bXv3ZhQqHZtomb8CGY3XArx3GIaZ04d0p9K3V-buaf73-M5dpq2wPuvnjsapStHdTkTVoPj2q9RAmcdczmE12HYz57PNOdVuft1/s1600-h/eastern_coastal_pcn_ap.jpg
Se cerco googleusercontent non vengono restituiti risultati. Eppure riesco a trovare post che contengono immagini, a cui si fa riferimento tramite un URL contenente il testo googleusercontent. Non so se si tratti di un bug o di una funzionalità per cui discourse non cerca negli URL dei collegamenti di immagini formattati in markdown.
Credo che la ricerca di Discourse venga eseguita sul post elaborato, che contiene HTML.
La ricerca ignora i tag HTML e i tag IMG non contengono testo, da qui l’impossibilità di restituire ciò che stai cercando.
Perché non puoi usare l’API?
Potresti creare uno script locale che attivi una query di ricerca per i post dell’utente contenenti immagini, iteri attraverso i risultati (abbastanza lentamente da non raggiungere i limiti di frequenza, e puoi anche interrogare il contenuto dei post grezzi se necessario) e produca i post contenenti la sottostringa che stai cercando.
Forse esiste una soluzione più semplice, ma è quello che farei senza altre opzioni. Abbastanza semplice da fare.
Sì, intendo dire che una chiave non è richiesta per gli endpoint di ricerca e post dell’API necessari per il mio suggerimento, a meno che non mi sbagli?
E certo, richiederebbe idealmente una conoscenza di base della programmazione, anche se le IA probabilmente possono produrre un buon script di base.
Il problema menzionato non è certamente ideale da risolvere senza accesso amministrativo.
Non ho richiesto una chiave API (burocrazia) e non ero consapevole di averne bisogno per eseguire quella che percepivo come una “semplice” query di ricerca. Non ero consapevole che non esaminasse i tag HTML nel contenuto. Quindi questo è spiegato, grazie.
Non è un problema creato dagli amministratori. È solo una situazione di cui gli amministratori e i creatori di contenuti non erano a conoscenza finché qualcuno non ha lasciato l’azienda e l’accesso a Google Docs è stato interrotto per quell’account, facendo scomparire/rompere le immagini.
Concordo sul fatto che potrei richiedere una chiave API o scrivere qualcosa localmente per eseguire lo scraping del sito e trovare i post incriminati. Farò una di queste cose.
Non è necessaria una chiave API per effettuare ricerche.
Non sono sicuro che avere una chiave API possa aiutarti a risolvere il tuo problema più facilmente.
Ecco uno script Python di esempio che esegue un ciclo sui miei post (1 post ogni 3 secondi) su meta e restituisce quelli che contengono la sottostringa upload:// nel contenuto grezzo:
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()
Non hai bisogno di una chiave API per fare una semplice ricerca, ma non vedo il senso di “usare l’API” per fare una semplice ricerca.
Forse ho frainteso il problema. Sembrava un problema che non si sarebbe verificato se scarica immagini remote in locale fosse stato attivo, ed è attivo per impostazione predefinita. Ma è anche probabile che sia stato disattivato per qualche motivo burocratico per cui l’amministratore lo ha fatto. Penso che sarà inutilmente difficile risolvere il tuo problema senza il plugin data explorer o l’accesso a Rails.