Ricerca di URL delle immagini negli argomenti

Ho cercato e letto come cercare contenuti in modo efficace, ma non ho trovato una risposta.

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?

2 Mi Piace

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.

3 Mi Piace

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>, ![](url)…?

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

Il post contiene l’URL,

Ma restituisce qualcosa come

<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNaW4QQ43EQ-8qqQPntDP7so6Cg19PVSLN9bXv3ZhQqHZtomb8CGY3XArx3GIaZ04d0p9K3V-buaf73-M5dpq2wPuvnjsapStHdTkTVoPj2q9RAmcdczmE12HYz57PNOdVuft1/s1600-h/eastern_coastal_pcn_ap.jpg" target="_blank" rel="noopener" class="onebox">
    <img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNaW4QQ43EQ-8qqQPntDP7so6Cg19PVSLN9bXv3ZhQqHZtomb8CGY3XArx3GIaZ04d0p9K3V-buaf73-M5dpq2wPuvnjsapStHdTkTVoPj2q9RAmcdczmE12HYz57PNOdVuft1/s1600-h/eastern_coastal_pcn_ap.jpg" width="" height="" loading="lazy">
</a>

Che non contiene alcuna stringa ricercabile.

È questo che succede?

3 Mi Piace

Corretto, non riesco a installare plugin.

Sono formattati utilizzando il markdown standard ![](url) dove googleusercontent fa parte dell’URL. Ad esempio:

![|312x416](https://lh7-rt.googleusercontent.com/docsz/AD_4nXeWkc1cZH8jtNveMhet36oWsLDlUxA-2QadGepx8Uuw1naq6vx5JAd6oyQ2pSmLJkKN97ZnTlV2txMqdNb0QMDCqV0xu-0xOFzePw2hnrNPUNbHoHMWh60KJpP3QkLq2E3Gp0-cKrf3tSWjML8oIQ3I9JQ?key=7YTVKNzk_oQvl95Fd_BKLQ)

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.

1 Mi Piace

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.

Perché l’amministratore non le darà una chiave API?

Perché non è una programmatrice?

Sembra un problema che l’amministratore ha creato e non è interessato a risolvere.

1 Mi Piace

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.

2 Mi Piace

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.

Grazie per le risposte. :pray:

2 Mi Piace

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 :robot: 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()
Output
page 1
https://meta.discourse.org/posts/1682015
https://meta.discourse.org/posts/1677389
https://meta.discourse.org/posts/1679834
https://meta.discourse.org/posts/1678673
https://meta.discourse.org/posts/1679833
https://meta.discourse.org/posts/1678629
https://meta.discourse.org/posts/1678229
https://meta.discourse.org/posts/1676531
https://meta.discourse.org/posts/1674982
https://meta.discourse.org/posts/1670250
https://meta.discourse.org/posts/1674421
https://meta.discourse.org/posts/1671959
https://meta.discourse.org/posts/1674355
https://meta.discourse.org/posts/1673357
https://meta.discourse.org/posts/1669322
https://meta.discourse.org/posts/1665519
page 2
https://meta.discourse.org/posts/1674153
https://meta.discourse.org/posts/1670613
https://meta.discourse.org/posts/1666606
https://meta.discourse.org/posts/1674992
https://meta.discourse.org/posts/1672811
https://meta.discourse.org/posts/1672050
https://meta.discourse.org/posts/1686260
https://meta.discourse.org/posts/1684497
https://meta.discourse.org/posts/1680692
https://meta.discourse.org/posts/1675012
page 3
No more results.
2 Mi Piace

Magnifico, grazie @Canapin!
Adoro un po’ di python :pray:
Ho ora identificato tutti i thread con immagini interrotte con il tuo aiuto.
Molto apprezzato.

3 Mi Piace

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.

Amico! Sei fantastico!

3 Mi Piace

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.