Jurij Podgoršek 13bb18f8a3 | ||
---|---|---|
mobili_cli | ||
mobili_cli.egg-info | ||
primeri | ||
.gitignore | ||
LICENSE | ||
README.org | ||
requirements.txt | ||
setup.py |
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 Click library for cli
- json
-
graphql-core https://github.com/graphql-python/graphql-core
developing in guix
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.