Command line tool to import events into federated service mobilizon.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
Jurij Podgoršek 13bb18f8a3 Read image from metadata, gitignore updates, cleanup cache py files 9 months ago
mobili_cli Read image from metadata, gitignore updates, cleanup cache py files 9 months ago
mobili_cli.egg-info Class for event, better sh script for testing, added kulturnik 9 months ago
primeri Class for event, better sh script for testing, added kulturnik 9 months ago
.gitignore Read image from metadata, gitignore updates, cleanup cache py files 9 months ago
LICENSE Dodana AGPL licenca 9 months ago
README.org Class for event, better sh script for testing, added kulturnik 9 months ago
requirements.txt Read image from metadata, gitignore updates, cleanup cache py files 9 months ago
setup.py Class for event, better sh script for testing, added kulturnik 9 months ago

README.org

Mobilizon importer

File importer into mobilizon graphql api.

Morganize

This doesn't really make a lot of sense. I'm working on a script to import events via mobilizon GraphQL api from yaml or json or whatever. Probably yaml.

Functionality

Login

Get events

Create event

  • options:

    • update existing

    • skip existing

From file
User input
Rss feed
Verificiraj ali dogodek ze obstaja
  • za rss feed lahko uporabimo link

Structure

Python requests

  import requests
  import json
  endpoint='https://dogodki.kompot.si/api'
  body='''
  query {
    events {
      elements {
        id,
        url,
        title,
        description,
        beginsOn,
        endsOn,
        status,
        picture {
          url
        },
        physicalAddress {
          id,
          description,
          locality
        }
      }
      total
    }
  }
  '''
  r = requests.post(endpoint, json={'query':body}, '')
  r = requests.post(endpoint, json={"query":body}, headers='')
  r.status_code
  print(json.dumps(r.json(), indent=2))
  body
  body2='''
  query {
    events {
      elements {
        id,
        url,
        title,
        description,
        beginsOn,
        endsOn,
        status,
        picture {
          url
        },
        physicalAddress {
          id,
          description,
          locality
        }
      }
    }
  }
  '''
  body2='''
  query {
    groups {
      elements {
        id,
        name,
        domain,
        page
      }
    }
  }
  '''
  r2 = requests.post(endpoint, json={"query":body2}, headers='')
  print(json.dumps(r2.json(), indent=2))
  body2="query{grups{elements{id,name}}}"
  r2 = requests.post(endpoint, json={"query":body2}, headers='')
  r2.status_code
  print(json.dumps(r2.json(), indent=2))
  b2
  body2
  body2="query{\ngrups{\nelements{\nid,\nname\n}\n}\n}"
  r2 = requests.post(endpoint, json={"query":body2}, headers='')
  r2.status_code
  r2 = requests.post(endpoint, json={"query":body2}, headers='')
  print(json.dumps(r2.json(), indent=2))
  bl='''
  mutation Login($email: String!, $password: String!) {
      login(email: $email, password: $password) {
        accessToken
        refreshToken
        user {
          id
          email
          role
        }
      }
    }
  '''
  varsl= {'email': 'lio@kompot.si', 'password': '<geslo>'}
  r3=requests.post(endpoint, json={"query": bl, 'variables': varsl}, headers='')
  r3.status_code
  print(json.dumps(r3json(), indent=2))
  print(json.dumps(r3.json(), indent=2))
  r3.json()
  r3.json().data
  r3.json().get('data')
  r3.json().get('data').get.('login')
  r3.json().get('data').get('login')
  r3.json().get('data').get('login').get('login')
  r3.json().get('data').get('login').get('accessToken')
  r3.json().get('data.login')
  j=r3.json()
  data=json.loads(j)
  j
  data=json.loads(j)
  print j['data']['login']['accessToken']
  j
  j['data']
  j['data']['login']
  j['data']['login']['accessToken']
  at=j['data']['login']['accessToken']
  head={"Authorization": f"Bearer {at}"}
  r2 = requests.post(endpoint, json={"query":body2}, headers='')
  print(json.dumps(r2.json(), indent=2))
  bg="query{groups{elements{id,name}\ntotal}}"
  r2 = requests.post(endpoint, json={"query":body2}, headers='')
  print(json.dumps(r2.json(), indent=2))
  bg="query {\ngroups {\nelements {\nid,\nname}\ntotal\n}\n}"
  bg
  r2 = requests.post(endpoint, json={"query":bg}, headers=head)
  r2.status_code
  print(json.dumps(r2.json(), indent=2))

RSS import

This tool can be used to import events from a RSS feed. Once run, it checks if there are new events to be added and updates existing ones if need be.

Identification

Each event is uniquely identified by its' url ("link" field), which is mapped into the "link" field on mobilizon.