What is mobilizon-poster
?
A nodejs package meant to support scripts to login, submit, update, delete events on mobilizon.
npm install @vecna/_mobilizon-poster
Please check the npmjs, and the github page.
Usage as executable scripts
In this example you see how the login is performed. The variables email
, password
, and api
are read by nconf, therefore can be loaded via environment variables, config file, or long options like below:
~/D/mobilizon-poster$ DEBUG=* bin/login.js --email mobilibr@mt2015.com --password experiment --api https://mobilizon.libr.events/api
bin:login retrieved authentication token! +0ms
bin:login Loaded existing 1 identities, servers: [https://mobilizon.libr.events/api] +815ms
bin:login Saving token and account info in /tmp/.identities.json file; this would be used as default +1ms
Saved authentication token in /tmp/.identities.json. Servers supported: [https://mobilizon.libr.events/api]
Once you performed login in mobilizon, you can use the poster.js
script. If executed without option, it return this error:
~/D/mobilizon-poster$ DEBUG=* bin/poster.js
--start missing! When the event begin: Format YYYY-MM-DD HH:mm
Required options: start,end,title,description,url,address
To provide variables like start, you have three ways: --longopt, environment, or config.json
You can check out the documentation here: https://libr.events/mobilizon-poster
Or fill up a bug report: https://github.com/vecna/mobilizon-poster/issues
Below there is a complete execution of poster.js
; the DEBUG=*
is intentionally verbose.
~/D/mobilizon-poster$ DEBUG=* bin/poster.js \
--start "2022-11-19 10:11" \
--title "ciao ciao" \
--description "blah[...]." \
--address "Lisbon, LX Factory" \
--end "2022-11-19 22:22" \
--url "https://ciaociaociao.it"
mobi:shared Returning server from settings https://mobilizon.libr.events/api +0ms
mobi:location Picking token from: local cache +0ms
mobi:shared Returning a token (343 bytes) registered on 2022-11-17T19:58:24.883Z +1ms
mobi:shared Connecting to https://mobilizon.libr.events/api +0ms
mobi:location Fetched 1 possible locations, the first is: {
mobi:location "__typename": "Address",
mobi:location "country": "Portugal",
mobi:location "description": "LXFactory",
mobi:location "geom": "-9.17841241671848;38.7021442",
mobi:location "id": null,
mobi:location "locality": "Lisbon",
mobi:location "originId": "nominatim:221960606",
mobi:location "postalCode": "1300-501",
mobi:location "region": null,
mobi:location "street": " ",
mobi:location "type": "locality",
mobi:location "url": null
mobi:location } +1s
mobi:location (acceptable) error in saving location cache: S is not defined undefined +0ms
bin:poster {
bin:poster start: Moment<2022-11-19T10:11:00+00:00>,
bin:poster end: Moment<2022-11-19T22:22:00+00:00>,
bin:poster title: 'ciao ciao',
bin:poster description: 'ehochwefuhwrfuiwrfhuwehuih23u4ih23uih3u2ih4i32 h23u4h3u2i4h ui234ui234i 23g 4ui23gui423giu4234gui23 g4u23 g4iu2 g4i2g 4ig2 u4ig23 i4gui234gui 234i3 g423g4ui 23g4i3g4i 24iu234i42 g4ui23g4 23giu4',
bin:poster url: 'https://ciaociaociao.it',
bin:poster address: 'Lisbon, LX Factory',
bin:poster location: {
bin:poster __typename: 'Address',
bin:poster country: 'Portugal',
bin:poster description: 'LXFactory',
bin:poster geom: '-9.17841241671848;38.7021442',
bin:poster id: null,
bin:poster locality: 'Lisbon',
bin:poster originId: 'nominatim:221960606',
bin:poster postalCode: '1300-501',
bin:poster region: null,
bin:poster street: ' ',
bin:poster type: 'locality',
bin:poster url: null
bin:poster }
bin:poster } +0ms
mobi:shared Returning organizer Id 12 +1s
mobi:poster Picking token from: local cache +0ms
mobi:shared Returning a token (343 bytes) registered on 2022-11-17T19:58:24.883Z +0ms
mobi:poster Successful event created: {"id":79,"createdUUID":"1216f47e-da3d-4f6c-a1ec-86f165a760cc","eventURL":"https://mobilizon.libr.events/events/1216f47e-da3d-4f6c-a1ec-86f165a760cc","eventvars":{"start":"2022-11-19T10:11:00.000Z","end":"2022-11-19T22:22:00.000Z","title":"ciao ciao","description":"ehochwefuhwrfuiwrfhuwehuih23u4ih23uih3u2ih4i32 h23u4h3u2i4h ui234ui234i 23g 4ui23gui423giu4234gui23 g4u23 g4iu2 g4i2g 4ig2 u4ig23 i4gui234gui 234i3 g423g4ui 23g4i3g4i 24iu234i42 g4ui23g4 23giu4","url":"https://ciaociaociao.it","address":"Lisbon, LX Factory","location":{"__typename":"Address","country":"Portugal","description":"LXFactory","geom":"-9.17841241671848;38.7021442","id":null,"locality":"Lisbon","originId":"nominatim:221960606","postalCode":"1300-501","region":null,"street":" ","type":"locality","url":null}}} +1s
Event created at: https://mobilizon.libr.events/events/1216f47e-da3d-4f6c-a1ec-86f165a760cc
bin:poster Posted successfully, now listing the last four Event in the node: +1s
{
"data": {
"events": {
"elements": [
{
"beginsOn": "2022-11-19T10:11:00Z",
"description": "ehochwefuhwrfuiwrfhuwehuih23u4ih23uih3u2ih4i32 h23u4h3u2i4h ui234ui234i 23g 4ui23gui423giu4234gui23 g4u23 g4iu2 g4i2g 4ig2 u4ig23 i4gui234gui 234i3 g423g4ui 23g4i3g4i 24iu234i42 g4ui23g4 23giu4",
"endsOn": "2022-11-19T22:22:00Z",
"id": "79",
"picture": null,
"title": "ciao ciao",
"url": "https://mobilizon.libr.events/events/1216f47e-da3d-4f6c-a1ec-86f165a760cc"
}
],
"total": 1
}
}
}
~/D/mobilizon-poster$
And this created in the mobilizon instance and event like this:

If you look carefully, there is a numeric ID associated to the event created above (79
). This information is necessary to delete the event:
~/D/mobilizon-poster$ DEBUG=* bin/deleter.js --event 79
mobi:shared Returning a token (343 bytes) registered on 2022-11-17T20:24:02.634Z +0ms
mobi:shared Returning server from settings https://mobilizon.libr.events/api +1ms
mobi:shared Connecting to https://mobilizon.libr.events/api +0ms
mobi:shared:IO Status: 200 +0ms
{ data: { deleteEvent: { __typename: 'DeletedObject', id: '79' } } }
~/D/mobilizon-poster$
A token expire quite frequently, so is not unusual have to re-execute login.js
before every command.