Mit Python programmatisch 100 Gruppen erstellen

Ich habe den GPT-Bot gefragt, und er kam wahrscheinlich nahe heran, aber ich bin ein Anfänger und würde mich über einige kluge Einblicke freuen, bevor ich etwas kaputt mache.

Ich habe eine Liste von 100 Gruppennamen (kann durch Kommas getrennt sein, oder eine Datei, oder was auch immer)

Ich möchte sie importieren und alle die gleichen Einstellungen haben lassen, wie hier aufgeführt:

Benutzern erlauben, der Gruppe frei beizutreten (erfordert öffentlich sichtbare Gruppe)
Benutzern erlauben, die Gruppe frei zu verlassen
–keine automatischen Mitglieder–

und

Das Folgende vom Bot scheint ein Anfang zu sein, aber ich bin nicht wirklich wohl dabei, mich da durchzuhacken:

GPT SAGT:

Sie können jedoch die Discourse API verwenden, um Gruppen programmatisch zu erstellen. Dies erfordert einige technische Kenntnisse und Vertrautheit mit APIs.

Hier ist ein grundlegendes Beispiel, wie Sie dies in Python mit der requests-Bibliothek tun könnten:

import requests

api_key = 'your_api_key'
api_username = 'your_api_username'
base_url = 'https://your_discourse_url.com'

headers = {
    'Api-Key': api_key,
    'Api-Username': api_username,
}

for i in range(1, 101):
    data = {
        'name': f'group_{i}',
        'visible': True,
        'automatic_membership_email_domains': 'example.com'
    }
    response = requests.post(f'{base_url}/admin/groups', headers=headers, data=data)
    print(f'Created group {i}, response code: {response.status_code}')

Ersetzen Sie 'your_api_key', 'your_api_username' und 'https://your_discourse_url.com' durch Ihren tatsächlichen API-Schlüssel, Benutzernamen und Ihre Discourse-URL.

DANKE.

3 „Gefällt mir“

Sieht größtenteils richtig aus.

Probieren Sie es bei ein oder zwei aus, bevor Sie durch hundert iterieren!

Sie können die Discourse-API-Reverse-Engineering-Anleitung einsehen, um zu sehen, dass Sie alle Ihre Gruppeneinstellungen so erhalten, wie Sie sie möchten.

Siehe auch Use the Discourse API ruby gem

8 „Gefällt mir“

Etwas wie das:

group_names.each do |name|
  begin
  response = client.create_group(name: name,
    visibility_level: 0,
    members_visibility_level: 0,
    mentionable_level: 3,
    messageable_level: 3,
    public_exit: true,
    public_admission: true
  )
  group_id = response["basic_group"]["id"]
  group_name =response["basic_group"]["name"]
  puts "Erstellt #{group_name}(#{group_id})"
  sleep 1
rescue => e
  puts "Hoppla. Hatte ein Problem mit #{name} #{e}"
  sleep 1
end

4 „Gefällt mir“

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