Usando Python para crear programáticamente 100 grupos

Le pregunté al bot de GPT, y probablemente se acercó, pero soy un novato y agradecería una opinión inteligente antes de romper algo.

Tengo una lista de 100 nombres de grupos (pueden estar separados por comas, o en un archivo, o lo que sea)

Quiero importarlos y que todos tengan la misma configuración, como se indica aquí:

Permitir que los usuarios se unan al grupo libremente (Requiere que el grupo sea visible públicamente)
Permitir que los usuarios abandonen el grupo libremente
–sin miembros automáticos–

y

Lo siguiente del bot parece un comienzo, pero no me siento muy cómodo hackeándolo:

GPT DICE:

Sin embargo, puedes usar la API de Discourse para crear grupos mediante programación. Esto requerirá algunos conocimientos técnicos y familiaridad con las API.

Aquí tienes un ejemplo básico de cómo podrías hacerlo en Python usando la biblioteca requests:

import requests

api_key = 'tu_api_key'
api_username = 'tu_nombre_de_usuario_api'
base_url = 'https://tu_url_de_discourse.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'Grupo creado {i}, código de respuesta: {response.status_code}')

Reemplaza 'tu_api_key', 'tu_nombre_de_usuario_api' y 'https://tu_url_de_discourse.com' con tu clave API real, nombre de usuario API y URL de Discourse.

GRACIAS.

3 Me gusta

Parece mayormente cierto.

¡Compruébalo para uno o dos antes de iterar sobre cien!

Puedes consultar Ingeniería inversa de la API de Discourse para ver que obtienes toda la configuración de tu grupo como la deseas.

Ver también Use the Discourse API ruby gem

8 Me gusta

Algo como esto:

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 "Creado #{group_name}(#{group_id})"
  sleep 1
rescue => e
  puts "Oops. Tuve un problema con #{name} #{e}"
  sleep 1
end

4 Me gusta

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