Filtro de imágenes en Discourse

Este plugin utiliza la API de Google Cloud Vision para restringir la carga de imágenes explícitas en el foro. Tiene en cuenta todas las imágenes cargadas, es decir, avatares, logotipos, etc.

Utiliza la ventana emergente de error de carga para mostrar un mensaje que explica qué infracciones resultaron en la restricción de la carga de la imagen.

Los límites aceptables se pueden configurar a través de la configuración del sitio.


Configuración

Pasos:

  1. Cree una cuenta de servicio en Google Cloud Create service accounts  |  Identity and Access Management (IAM)  |  Google Cloud Documentation
    Google iniciará la descarga de un archivo JSON. Guarde su contenido de forma segura.

  2. Pegue estas líneas al final de la sección env en su archivo app.yml

     GOOGLE_ACCOUNT_TYPE: 'service_account'
     GOOGLE_CLIENT_ID: 'client-id-from-json-file'
     GOOGLE_CLIENT_EMAIL: "service-account-email-address"
     GOOGLE_PRIVATE_KEY:  instrucciones a continuación
    
  • ¿Cómo configurar el parámetro GOOGLE_PRIVATE_KEY?

    • Pegue la clave del archivo JSON en un editor de código.
    • Use buscar y reemplazar y reemplace \\n con \\\\n
    • Copie el resultado y péguelo en app.yml frente a GOOGLE_PRIVATE_KEY envolviéndolo entre comillas simples ' '.
  1. Ahora siga los pasos habituales para instalar el plugin.

Configuración del Plugin

if_adult_max_acceptable: Nivel máximo aceptable de la categoría adult
if_spoof_max_acceptable: Nivel máximo aceptable de la categoría spoof
if_medical_max_acceptable: Nivel máximo aceptable de la categoría medical
if_violence_max_acceptable: Nivel máximo aceptable de la categoría violence
if_racy_max_acceptable: Nivel máximo aceptable de la categoría racy

Puede leer sobre estos criterios y la propia API en detalle aquí. Detect explicit content (SafeSearch)  |  Cloud Vision API  |  Google Cloud Documentation

:page_facing_up: Obtener el código

:raising_hand_woman: Solicitar una función

:bug: Informar un error

Notas de desarrollo

Para usarlo en un entorno de desarrollo en macOS, agregue esta línea a su archivo .bash_profile
export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES

¿Perdido?

Gracias a @Terrapop por patrocinar el plugin.

22 Me gusta

@riking

Hice este PR FIX: erroneous condition which would cause an error if ever satisfied by fzngagan · Pull Request #10605 · discourse/discourse · GitHub porque me di cuenta de que la ventana emergente de error de carga no se mostraría si hubiera una excepción del lado de Rails al cargar avatares o logotipos. Funciona bien al cargar desde el compositor. Pense que sería un buen cambio aguas arriba para incorporar.

6 Me gusta

Gracias por el aviso, me perdí la notificación de GitHub.

5 Me gusta

¡Muchas gracias por la fusión. Ayuda tanto a Discourse como a mi complemento.

4 Me gusta

¡Genial, gracias por tu ayuda @fzngagan en hacer esto posible, fue un placer trabajar contigo.

Para todas las comunidades que tienen requisitos de seguridad infantil COPPA o quieren mantenerse seguras en términos de AdSense, o simplemente no quieren tener imágenes de violencia o desnudos en ningún lugar, este plugin es imprescindible.

7 Me gusta

@Razcle
Esto podría ser de tu interés

¡Gracias, Faizaan! Estaba pensando en crear algo más centrado en la comprensión del lenguaje y personalizable. ¿Tienes alguna experiencia con eso?

R

3 Me gusta

@jahan_gagan podría tener algo que decir sobre PLN.

2 Me gusta

Probé el conjunto de datos de Stack Overflow para predicción de etiquetas, y después intenté el mismo código con el conjunto de datos de Discourse, pero debido al menor volumen de datos en Discourse, ese código no funcionó allí.

2 Me gusta

¿Qué ámbitos necesito en mi cuenta de servicio? Estoy recibiendo el mensaje “La solicitud tenía ámbitos de autenticación insuficientes”.

¿Esto puede ayudar? Se ejecuta completamente en el lado del cliente.

modelo de toxicidad de texto

Este plugin trata sobre IMÁGENES, no sobre texto.

Para el texto, hay un plugin de Google Perspective disponible basado en el motor Jigsaw:

2 Me gusta

Hola :waving_hand: ¿Sigue funcionando este plugin? Acabo de ver que el último commit fue hace unos 4 años. Gracias :slightly_smiling_face:

1 me gusta

Intenté instalarlo en una instancia de prueba, pero parece que hay un problema con las gemas. La reconstrucción falló. Espero que se pueda solucionar. :crossed_fingers: Quizás estas gemas simplemente están obsoletas…

rake aborted!

Gem::LoadError: can't activate google-protobuf-3.13.0-x86_64-linux, already activated google-protobuf-4.27.3-x86_64-linux (Gem::LoadError)

/var/www/discourse/lib/plugin_gem.rb:25:in `load'

/var/www/discourse/lib/plugin/instance.rb:835:in `gem'

/var/www/discourse/plugins/discourse-image-filter/plugin.rb:12:in `activate!'

/var/www/discourse/lib/plugin/instance.rb:778:in `instance_eval'

/var/www/discourse/lib/plugin/instance.rb:778:in `activate!'

/var/www/discourse/lib/discourse.rb:348:in `block in activate_plugins!'

/var/www/discourse/lib/discourse.rb:345:in `each'

/var/www/discourse/lib/discourse.rb:345:in `activate_plugins!'

/var/www/discourse/config/application.rb:231:in `block in <class:Application>'

/var/www/discourse/lib/plugin.rb:6:in `initialization_guard'

/var/www/discourse/config/application.rb:231:in `<class:Application>'

/var/www/discourse/config/application.rb:75:in `<module:Discourse>'

/var/www/discourse/config/application.rb:74:in `<top (required)>'

/var/www/discourse/Rakefile:7:in `<top (required)>'

/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/exe/rake:27:in `<top (required)>'

/usr/local/bin/bundle:25:in `load'

/usr/local/bin/bundle:25:in `<main>'

(See full trace by running task with --trace)

I, [2024-08-02T16:48:02.872895 #1] INFO -- : gem install os -v 1.1.1 -i /var/www/discourse/plugins/discourse-image-filter/gems/3.3.3 --no-document --ignore-dependencies --no-user-install

Successfully installed os-1.1.1

1 gem installed

gem install google-protobuf -v 3.13.0 -i /var/www/discourse/plugins/discourse-image-filter/gems/3.3.3 --no-document --ignore-dependencies --no-user-install

Successfully installed google-protobuf-3.13.0-x86_64-linux

1 gem installed

I, [2024-08-02T16:48:02.886926 #1] INFO -- : Terminating async processes

I, [2024-08-02T16:48:02.888160 #1] INFO -- : Sending INT to HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main pid: 36

I, [2024-08-02T16:48:02.888588 #1] INFO -- : Sending TERM to exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 98

2024-08-02 16:48:02.888 UTC [36] LOG: received fast shutdown request

98:signal-handler (1722617282) Received SIGTERM scheduling shutdown...

2024-08-02 16:48:02.892 UTC [36] LOG: aborting any active transactions

98:M 02 Aug 2024 16:48:02.896 # User requested shutdown...

98:M 02 Aug 2024 16:48:02.897 * Saving the final RDB snapshot before exiting.

2024-08-02 16:48:02.906 UTC [36] LOG: background worker "logical replication launcher" (PID 51) exited with exit code 1

2024-08-02 16:48:02.909 UTC [46] LOG: shutting down

98:M 02 Aug 2024 16:48:02.939 * DB saved on disk

98:M 02 Aug 2024 16:48:02.939 # Redis is now ready to exit, bye bye...

2024-08-02 16:48:02.949 UTC [36] LOG: database system is shut down

FAILED

--------------------

Pups::ExecError: cd /var/www/discourse &amp;&amp; su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 571 exit 1>

Location of failure: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'

exec failed with the params {"cd"=>"$home", "tag"=>"migrate", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}

bootstrap failed with exit code 1

** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.

./discourse-doctor may help diagnose the problem.

9213a43b80e800c6f2b1d0adc0663ec82a483b860f0302b8ebabc8a3b2bb0619

Lo he etiquetado como #roto.

2 Me gusta