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.
Go to file
spla 95220124f0 Decreased toot_text length to 470 2022-03-07 19:18:34 +01:00
LICENSE Add LICENSE 2021-05-13 20:36:03 +00:00
README.md Added Funkwhale and Socialhome software detections 2021-10-26 13:38:12 +02:00
db-setup.py Added Funkwhale and Socialhome software detections 2021-10-26 13:38:12 +02:00
fediverse.py Fix #3, same datetime for all checked servers 2022-03-03 11:30:59 +01:00
fetchservers.py Improved servers nodeinfo detection 2022-03-02 22:26:05 +01:00
getpeers.py some cosmethics 2022-03-03 14:58:12 +01:00
requirements.txt Added Funkwhale and Socialhome software detections 2021-10-26 13:38:12 +02:00
setup.py Added Funkwhale and Socialhome software detections 2021-10-26 13:38:12 +02:00
uptime.py Decreased toot_text length to 470 2022-03-07 19:18:34 +01:00
uptime_setup.py Added tokens setup of Best Fediverse Uptime Publishing Bot 2021-08-21 11:22:59 +02:00

README.md

Fediverse Stats

This code gets all peers from running Mastodon, Pleroma and Lemmy host servers 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 pip install -r requirements.txt to install needed libraries.

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

  3. 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.

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

  5. Run python fetchservers.py to add servers to alive servers database.

  6. 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 users (main/nodeinfo/2.0) API users (api/nodeinfo/2.0.json) API users (api/nodeinfo) Software
Diaspora ['usage']['users']['total'] Diaspora
Friendica api/v1/instance/peers ['usage']['users']['total'] Friendica
Ganggo ['usage']['users']['total'] Ganggo
GNU Social ['usage']['users']['total'] GNU Social
GNU Social 2.x ['usage']['users']['total'] GNU Social 2.x
Groundpolis ['usage']['users']['total'] Groundpolis
Hubzilla ['usage']['users']['total'] Hubzilla
Lemmy api/v2/site ['federated_instances']['linked'] ['usage']['users']['total'] Lemmy
Mastodon api/v1/instance/peers ['usage']['users']['total'] (since v3.0.0) ['stats']['user_count'] Mastodon
Misskey NO (['usage']['users'] returns {}) so using ['usage']['users']['activeHalfyear'] instead Misskey
Osada ['usage']['users']['total'] Osada
Peertube ['usage']['users']['total'] Peertube
Pixelfed ['usage']['users']['total'] Pixelfed
Pleroma api/v1/instance/peers ['usage']['users']['total'] Pleroma
Plume ['usage']['users']['total'] Plume
Prismo ['usage']['users']['total'] Prismo
Ravenvale ['usage']['users']['total'] Ravenvale
Squus ['usage']['users']['total'] Squus
Writefreely ['usage']['users']['total'] Writefreely
Zap ['usage']['users']['total'] Zap
software API software name
diaspora nodeinfo/2.0.json ['software']['name']
dolphin nodeinfo/2.0 ['software']['name']
ganggo nodeinfo/2.0 ['software']['name']
friendica nodeinfo/2.0 ['software']['name']
gnusocial main/nodeinfo/2.0 ['software']['name']
gnusocialv2 api/nodeinfo/2.0.json ['software']['name']
groundpolis nodeinfo/2.0 ['software']['name']
hubzilla nodeinfo/2.0 ['software']['name']
lemmy nodeinfo/2.0.json ['software']['name']
mastodon nodeinfo/2.0.json ['software']['name']
misskey nodeinfo/2.0 ['software']['name']
osada nodeinfo/2.0.json ['software']['name']
peertube nodeinfo/2.0.json ['software']['name']
pixelfed api/nodeinfo/2.0.json ['software']['name']
pleroma nodeinfo/2.0.json ['software']['name']
plume nodeinfo/2.0 ['software']['name']
prismo nodeinfo/2.0.json ['software']['name']
ravenvale nodeinfo/2.0.json ['software']['name']
squs nodeinfo/2.0 ['software']['name']
wordpress wp-json/nodeinfo/2.0 ['software']['name']
writefreely api/nodeinfo ['software']['name']
zap nodeinfo/2.0.json ['software']['name']
  1. Run python uptime_setup.py to get your Uptime bot's access token of your Mastodon or Pleroma server existing account. It will be saved to 'secrets/uptime_secrets.txt' for further use.

  2. Use your favourite scheduling method to set python fediverse.py to run twice daily, python fetchservers.py one time daily, python getworld.py to run monthly and python uptime.py (choose your desired frequency) if you want to publish best fediverse's servers uptime.

18.2.2021 - New feature! Added Lemmy project
12.5.2021 - New feature! Added Wordpress support. The code can now detect Wordpress instances with ActivityPub enabled plugin.
12.5.2021 - New feature! New shinny creation of servers and users graphs.
21.8.2021 - New feature! Added Best Fediverse's servers Uptime publishing bot.
22.10.2021 - New feature! Added Funkwhale support.
26.10.2021 - New feature! Added Socialhome support.