Buscando URL de imágenes en temas

He buscado y leído cómo buscar contenido de forma eficaz, pero no he encontrado una respuesta.

Tengo un Discourse en el que soy moderador (no tengo acceso al backend). Alguien ha publicado numerosos temas en los que las imágenes se han enlazado directamente a un proveedor de alojamiento de terceros (en este caso, Google Docs). Dejó la empresa y todos esos enlaces de imágenes ahora están rotos.

Puedo (y lo he hecho) revisar manualmente algunas de sus publicaciones para encontrar y arreglar (gracias al archivo de Internet) imágenes rotas. Pero eso es laborioso. Me gustaría obtener una lista de todos los temas que contienen estas URL de imágenes rotas para que podamos arreglarlas colectivamente, volviendo a subir las imágenes al sitio.

Por supuesto, puedo usar la búsqueda para encontrar con:imágenes #tutoriales, pero no puedo buscar dentro de las URL de las imágenes para, por ejemplo, googleusercontent. ¿Es eso posible, sin acceso a la API o al backend rake?

2 Me gusta

Un administrador podría crear una consulta del explorador de datos que encuentre esas publicaciones.

Pero si el administrador quisiera que esto no sucediera, tendría que tener activada la opción de descargar imágenes a nivel local. Es un problema que ellos mismos han creado y no es realmente trabajo de un moderador solucionarlo.

3 Me gusta

¿Eso significa que tampoco puedes instalar el explorador de datos? Esa sería la herramienta elegida para esto.

¿Cómo se formatean las imágenes en las publicaciones? ¿Solo muestran la URL simple, usan [img], <img>, ![](url)…?

Solo para ilustrar tu problema. Una publicación podría contener una URL de imagen rota, como https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNaW4QQ43EQ-8qqQPntDP7so6Cg19PVSLN9bXv3ZhQqHZtomb8CGY3XArx3GIaZ04d0p9K3V-buaf73-M5dpq2wPuvnjsapStHdTkTVoPj2q9RAmcdczmE12HYz57PNOdVuft1/s1600-h/eastern_coastal_pcn_ap.jpg

La publicación contiene la URL,

Pero devuelve algo como

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

Lo que no contiene ninguna cadena que se pueda buscar.

¿Es eso lo que sucede?

3 Me gusta

Correcto, no puedo instalar plugins.

Están formateados usando markdown estándar ![](url) donde googleusercontent es parte de la URL. Por ejemplo:

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

Si busco googleusercontent no se obtienen resultados. Sin embargo, puedo encontrar publicaciones que tienen imágenes, referenciadas por una URL que contiene el texto googleusercontent. No sé si esto es un error o una característica que discourse no busca en las URL de los enlaces de imágenes formateados en markdown.

1 me gusta

Creo que la búsqueda de Discourse se realiza en la publicación procesada, que contiene HTML.
La búsqueda ignora las etiquetas HTML, y las etiquetas IMG no contienen texto, de ahí la imposibilidad de devolver lo que buscas.

¿Por qué no puedes usar la API?

Podrías crear un script local que active una consulta de búsqueda de las publicaciones del usuario que contengan imágenes, itere a través de los resultados (lo suficientemente lento como para no alcanzar los límites de tasa, y también puedes consultar las publicaciones sin procesar contenido si es necesario) y muestre las publicaciones que contengan la subcadena que buscas.

Quizás haya una solución más simple, pero eso es lo que yo haría sin otra opción. Bastante fácil de hacer.

¿Porque el administrador no le dará una clave de API?

¿Porque no es programadora?

Parece un problema que el administrador creó y en el que no está interesado en resolver.

1 me gusta

Sí, quiero decir, no se requiere una clave para los puntos finales de búsqueda y publicación de la API necesarios para mi sugerencia, ¿a menos que me equivoque?

Y claro, idealmente requeriría conocimientos básicos de programación, incluso si las IA probablemente puedan generar un buen script base.

El problema mencionado seguramente no es ideal de resolver sin acceso de administrador.

2 Me gusta

No he solicitado una clave de API (burocracia), y no era consciente de que necesitaría una para hacer lo que percibí como una consulta de búsqueda “simple”. No era consciente de que no se asoma a las etiquetas HTML del contenido. Así que eso lo explica, gracias.

No es un problema que los administradores hayan creado. Es solo una situación de la que los administradores y creadores de contenido no eran conscientes hasta que alguien dejó la empresa, y se cerró el acceso a los Google Docs para esa cuenta, haciendo que las imágenes desaparecieran/se rompieran.

Estoy de acuerdo en que podría solicitar una clave de API, o escribir algo localmente para raspar el sitio y encontrar las publicaciones ofensivas. Haré una de esas cosas.

Gracias por las respuestas. :pray:

2 Me gusta

No necesitas una clave de API para hacer búsquedas.

No estoy seguro de que tener una clave de API pueda ayudarte a resolver tu problema más fácilmente.

Aquí tienes un script de ejemplo en :robot: Python que recorre mis publicaciones (1 publicación cada 3 segundos) en meta y devuelve aquellas que tienen la subcadena upload:// en el contenido sin procesar:

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"página {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 hay más resultados.")
            break
        
        page += 1

if __name__ == "__main__":
    process_posts()
Salida
página 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
página 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
página 3
No hay más resultados.
2 Me gusta

¡Maravilloso, gracias @Canapin!
Me encanta un poco de Python :pray:
Ahora he identificado todos los hilos con imágenes rotas con tu ayuda.
Muy apreciado.

3 Me gusta

No necesitas una clave de API para hacer una búsqueda simple, pero no le veo el sentido a “usar la API” para hacer una búsqueda simple.

Quizás entendí mal el problema. Sonaba como un problema que no habría ocurrido si descargar imágenes remotas a local hubiera estado activado, y está activado por defecto. Pero también es probable que se desactivara por alguna razón burocrática por la que el administrador lo hizo. Creo que será innecesariamente difícil resolver tu problema sin el plugin explorador de datos o acceso a Rails.

¡Tío! ¡Eres genial!

3 Me gusta

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