Usando Python para criar programaticamente 100 grupos

Perguntei ao bot GPT, e ele provavelmente chegou perto, mas sou um novato e adoraria ter algumas ideias inteligentes antes de quebrar alguma coisa.

Tenho uma lista de 100 nomes de grupos (podem ser delimitados por vírgula, ou um arquivo, ou o que for)

Quero importá-los e que todos tenham as mesmas configurações, conforme listado aqui:

Permitir que os usuários entrem no grupo livremente (Requer grupo visível publicamente)
Permitir que os usuários saiam do grupo livremente
–sem membros automáticos–

e

O seguinte do bot parece um começo, mas não estou muito confortável em hackear isso:

O GPT DIZ:

No entanto, você pode usar a API do Discourse para criar grupos programaticamente. Isso exigirá algum conhecimento técnico e familiaridade com APIs.

Aqui está um exemplo básico de como você pode fazer isso em Python usando a biblioteca requests:

import requests

api_key = 'sua_api_key'
api_username = 'seu_api_username'
base_url = 'https://sua_url_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 {i} criado, código de resposta: {response.status_code}')

Substitua 'sua_api_key', 'seu_api_username' e 'https://sua_url_discourse.com' pela sua chave de API real, nome de usuário da API e URL do Discourse.

OBRIGADO.

3 curtidas

Parece majoritariamente verdadeiro.

Veja se funciona para um ou dois antes de fazer um loop em cem, no entanto!

Você pode verificar Engenharia reversa da API do Discourse para ver que você obtém todas as suas configurações de grupo como deseja.

Veja também Use the Discourse API ruby gem

8 curtidas

Algo como isto:

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 "Criado #{group_name}(#{group_id})"
  sleep 1
rescue => e
  puts "Oops. Tive um problema com #{name} #{e}"
  sleep 1
end

4 curtidas

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