Discourse Bildfilter

Dieses Plugin nutzt die Google Cloud Vision API, um das Hochladen expliziter Bilder im Forum einzuschränken. Es berücksichtigt alle hochgeladenen Bilder, also Avatare, Logos usw.

Es verwendet den Upload-Fehler-Popup, um eine Meldung anzuzeigen, die erklärt, welche Verstöße zur Einschränkung des Bilduploads geführt haben.

Die akzeptablen Grenzwerte können über die Site-Einstellungen festgelegt werden.


Einrichtung

Schritte:

  1. Erstellen Sie ein Service-Konto bei Google Cloud Create service accounts  |  Identity and Access Management (IAM)  |  Google Cloud Documentation
    Google löst den Download einer JSON-Datei aus. Bewahren Sie deren Inhalt sicher auf.

  2. Fügen Sie diese Zeilen am Ende des env-Abschnitts in Ihrer app.yml ein:

     GOOGLE_ACCOUNT_TYPE: 'service_account'
     GOOGLE_CLIENT_ID: 'client-id-from-json-file'
     GOOGLE_CLIENT_EMAIL: "service-account-email-address"
     GOOGLE_PRIVATE_KEY:  instructions below
    
  • Wie wird der Parameter GOOGLE_PRIVATE_KEY eingerichtet?

    • Fügen Sie den Schlüssel aus der JSON-Datei in einen Code-Editor ein.
    • Verwenden Sie Suchen und Ersetzen und ersetzen Sie \\n durch \\\\n.
    • Kopieren Sie das Ergebnis und fügen Sie es in app.yml vor GOOGLE_PRIVATE_KEY ein, wobei Sie es in einfache Anführungszeichen ' ' setzen.
  1. Folgen Sie nun den üblichen Schritten zur Installation des Plugins.

Plugin-Einstellungen

if_adult_max_acceptable: Maximal akzeptierbarer Wert der Kategorie adult
if_spoof_max_acceptable: Maximal akzeptierbarer Wert der Kategorie spoof
if_medical_max_acceptable: Maximal akzeptierbarer Wert der Kategorie medical
if_violence_max_acceptable: Maximal akzeptierbarer Wert der Kategorie violence
if_racy_max_acceptable: Maximal akzeptierbarer Wert der Kategorie racy

Weitere Details zu diesen Kriterien und der API selbst finden Sie hier: Detect explicit content (SafeSearch)  |  Cloud Vision API  |  Google Cloud Documentation

:page_facing_up: Code herunterladen

:raising_hand_woman: Eine Funktion anfordern

:bug: Einen Fehler melden

Entwicklungshinweise

Für die Verwendung in einer Entwicklungsumgebung unter macOS fügen Sie diese Zeile zu Ihrer .bash_profile-Datei hinzu:
export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES

Verloren?

Vielen Dank an @Terrapop für die Sponsoring des Plugins.

22 „Gefällt mir“

@riking

Ich habe diesen PR erstellt: FIX: erroneous condition which would cause an error if ever satisfied by fzngagan · Pull Request #10605 · discourse/discourse · GitHub, da mir aufgefallen ist, dass das Popup für Uploadfehler nicht angezeigt wird, wenn beim Hochladen von Avataren oder Logos eine Ausnahme auf Rails-Seite auftritt. Beim Hochladen über den Composer funktioniert es einwandfrei. Ich dachte, es wäre eine sinnvolle Änderung, die man upstream übernehmen könnte.

6 „Gefällt mir“

Danke für die Erinnerung, ich habe die GitHub-Benachrichtigung verpasst.

5 „Gefällt mir“

Vielen Dank für den Merge. Das hilft sowohl Discourse als auch meinem Plugin.

4 „Gefällt mir“

Großartig, danke für deine Hilfe, @fzngagan, das möglich zu machen. Es war ein Vergnügen, mit dir zusammenzuarbeiten.

Für alle Communities, die kindersichere COPPA-Anforderungen erfüllen müssen, sicher im Hinblick auf AdSense bleiben möchten oder einfach keine Gewaltdarstellungen oder Nacktbilder irgendwo haben wollen, ist dieses Plugin ein Muss.

7 „Gefällt mir“

@Razcle
Das könnte für dich interessant sein

Danke, Faizaan! Ich habe darüber nachgedacht, etwas zu entwickeln, das sich stärker auf Sprachverständnis konzentriert und anpassbar ist. Hast du damit schon Erfahrungen gesammelt?

R

3 „Gefällt mir“

@jahan_gagan hat vielleicht etwas zu NLP zu sagen.

2 „Gefällt mir“

Ich habe den Stack Overflow-Datensatz für die Tag-Vorhersage ausprobiert. Anschließend habe ich denselben Code für den Discourse-Datensatz verwendet, aber aufgrund des geringeren Datenvolumens bei Discourse funktionierte dieser Code hier nicht.

2 „Gefällt mir“

Welche Berechtigungen benötige ich in meinem Service-Konto? Ich erhalte die Meldung „Die Anfrage hatte nicht ausreichende Authentifizierungsberechtigungen".

Kann das helfen? Läuft vollständig clientseitig.

Text-Toxizitätsmodell

Dieses Plugin handelt von BILDERN, nicht von Text.

Für Text steht ein Google Perspective-Plugin vor, das auf der Jigsaw-Engine basiert:

2 „Gefällt mir“

Hallo :waving_hand: Funktioniert dieses Plugin noch? Ich habe gerade gesehen, dass der letzte Commit etwa 4 Jahre her ist. Danke :slightly_smiling_face:

1 „Gefällt mir“

Ich habe versucht, es auf einer Testinstanz zu installieren, aber es scheint ein Problem mit Gems zu geben. Der Wiederaufbau ist fehlgeschlagen. Hoffentlich ist es behebbar. :crossed_fingers: Vielleicht sind diese Gems einfach veraltet…

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 #&lt;Process::Status: pid 571 exit 1&gt;

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

Ich habe dies als broken markiert.

2 „Gefällt mir“