This code gets all peers from mastodon.social. Goal is to collect maximum number of alive fediverse's servers and then query their API to obtain their registered users (if their API provide such information). At the end it post the results to host server bot account.
Anar al arxiu
spla 5fd8704526 Updated README.md 2020-05-17 13:39:24 +02:00
README.md Updated README.md 2020-05-17 13:39:24 +02:00

README.md

Fediverse Stats

This code gets all peers from running Mastodon or Pleroma host server and then all peers from host server's peers. Goal is to collect maximum number of alive fediverse's servers and then query their API to obtain their registered users (if their API provide such information). At the end it post the results to host server bot account.

Dependencies

  • Python 3
  • Postgresql server
  • Mastodon or Pleroma running server.

Usage:

Within Python Virtual Environment:

  1. Run python db-setup.py to setup and create new Postgresql database and needed tables in it.

  2. Run python setup.py to get your bot's access token of your Mastodon or Pleroma server existing account. It will be saved to 'secrets/secrets.txt' for further use.

  3. Run python getworld.py to get all peers from your host and the whole world of fediverse's servers (or almost the whole world).

  4. Run python fediverse.py to query world alive servers API. It gets data from server's API according this table:

Software API peers API users (nodeinfo/2.0.json) API users (nodeinfo/2.0) API users (api/v1/instance) API (main/nodeinfo/2.0) API (api/statusnet/config) API (api/nodeinfo/2.0.json) API (api/nodeinfo)
Diaspora ['usage']['users']['total']
Friendica api/v1/instance/peers ['usage']['users']['total']
Ganggo ['usage']['users']['total']
GNU Social ['usage']['users']['total']
GNU Social 2.x ['usage']['users']['total']
Groundpolis ['usage']['users']['total']
Hubzilla ['usage']['users']['total']
Mastodon api/v1/instance/peers ['usage']['users']['total'] (since v3.0.0) ['stats']['user_count']
Osada ['usage']['users']['total']
Peertube ['usage']['users']['total']
Pixelfed ['usage']['users']['total']
Pleroma api/v1/instance/peers ['usage']['users']['total']
Plume ['usage']['users']['total']
Prismo ['usage']['users']['total']
Ravenvale ['usage']['users']['total']
Squus ['usage']['users']['total']
Writefreely ['usage']['users']['total']
Zap ['usage']['users']['total']
  1. Use your favourite scheduling method to set python fediverse.py after python getworld.py to run regularly.

Note: install all needed packages with 'pip install package' or use 'pip install -r requirements.txt' to install them.