Skip to content

An open analytics and report generation tool for Mastodon federated social network. Lightweight and robust.

Notifications You must be signed in to change notification settings

arseniiarsenii/mastodon-meter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

49 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

This page is also available in english

Mastodon meter

Mastodon meter - это открытая систСма Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΈ для Ρ„Π΅Π΄Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ сСти Mastodon.

ВозмоТности Mastodon meter:

  • Π”ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Ρ‹ Π² список отслСТиваСмых;
  • По Ρ€Π°ΡΠΏΠΈΡΠ°Π½ΠΈΡŽ (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ) ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ измСрСния для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· отслСТиваСмых Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ΠΎΠ²: ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ счСтчик подписчиков ΠΈ статусов ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…;
  • На основании ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ ΠΈ тСкстовыС ΠΎΡ‚Ρ‡Π΅Ρ‚Ρ‹;
  • ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΠ΅Ρ‚ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ API интСрфСйс для использования Π² Π²Π°ΡˆΠΈΡ… собствСнных ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…, Π² Ρ‚.Ρ‡. для получСния "сырых" Π΄Π°Π½Π½Ρ‹Ρ… для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ;

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° Mastodon meter:

  • Π›Π΅Π³ΠΊΠΈΠΉ ΠΈ быстрый. Mastodon meter ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ соврСмСнный асинхронный Π²Π΅Π±-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ FastAPI, асинхронныС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Motor ΠΈ HttpX. Благодаря этому ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ быстро ΠΏΡ€ΠΈ минимальном ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠΈ рСсурсов (Π² нСсколько Ρ€Π°Π· быстрСС ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с синхронными Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π°ΠΌΠΈ);
  • ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ. Благодаря ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ тСхнологиям сСрвСр ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с сотнями ΠΈΠ»ΠΈ тысячами отслСТиваСмых Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ΠΎΠ² Π±Π΅Π· сущСствСнной ΠΏΠΎΡ‚Π΅Ρ€ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. ΠœΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ Π·Π°Π»ΠΎΠΆΠ΅Π½Π° Π² Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ;
  • Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ. Π’ основС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π»Π΅ΠΆΠ°Ρ‚ соврСмСнныС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ FastAPI ΠΈ HttpX, нСрСляционная Π‘Π” MongoDB, асинхронный ΡΡ‚ΠΈΠ»ΡŒ программирования. Для ΠΌΠ΅Π½Π΅Π΄ΠΆΠΌΠ΅Π½Ρ‚Π° зависимостСй ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Poetry, для логгирования - Loguru;
  • ЛСгкая ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ°. Вся кодовая Π±Π°Π·Π° соотвСтствуСт стандартам PEP8, повсСмСстно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ Ρ‚ΠΈΠΏΠΎΠ². Π’Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΡ‰Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒ совмСстно с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ. Аннотации Ρ‚ΠΈΠΏΠΎΠ² Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ статичСский Π°Π½Π°Π»ΠΈΠ·, Ρ‡Ρ‚ΠΎ сниТаСт количСство ошибок ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ качСство ΠΊΠΎΠ΄Π°;
  • ΠΠ°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ. Благодаря Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ входящих ΠΈ исходящих запросов Ρ‡Π΅Ρ€Π΅Π· Pydantic API Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ "ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ" Π½Π΅Π²Π°Π»ΠΈΠ΄Π½Ρ‹ΠΌΠΈ запросами.

ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ:

  • Асинхронный Π²Π΅Π±-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ FastAPI;
  • БистСма Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ Pydantic;
  • Асинхронная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с HTTP запросами HttpX;
  • Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для логгирования Loguru;
  • НСрСляционная Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… MongoDB;
  • Асинхронный ΠΊΠ»ΠΈΠ΅Π½Ρ‚ для MongoDB Motor;
  • ГСнСрация Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² - Matplotlib;
  • ASGI сСрвСр Uvicorn;
  • БтатичСский Π°Π½Π°Π»ΠΈΠ·, Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Π»ΠΈΠ½Ρ‚Π΅Ρ€ΠΈΠ½Π³: Mypy, Black, Flake8.

Установка ΠΈ запуск

  1. Π£ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Poetry слСдуя ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ инструкции: $ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python -

  2. ΠšΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² ΠΏΠ°ΠΏΠΊΡƒ с Π½ΠΈΠΌ: $ git clone https://github.com/arseniiarsenii/mastodon-meter.git && cd mastodon-meter

  3. Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ зависимости Π² Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Poetry ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² Π½Π΅Π³ΠΎ: $ poetry install --no-dev && poetry shell

  4. Π­ΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ адрСс ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ Π±Π°Π·Π΅ MongoDB Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния: $ export MONGO_CONNECTION_URL="mongodb+srv://your_connection_string_here"

  5. ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ с исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ сСрвСр: $ cd src && uvicorn app:app

Π‘Π΅Ρ€Π²Π΅Ρ€ Π·Π°ΠΏΡƒΡ‰Π΅Π½ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠΎ адрСсу http://127.0.0.1:8000.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ участиС Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Mastodon-meter. Для этого сдСлайтС fork этого рСпозитория, внСситС измСнСния ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΡŒΡ‚Π΅ pull request.

Π”Π°Π½Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ GNU GPL v3. ИспользованиС Π² коммСрчСских цСлях, Π° Ρ‚Π°ΠΊΠΆΠ΅ сокрытиС ΠΊΠΎΠ΄Π° Π½Π΅ Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ.


ДокумСнтация API

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ со списком отслСТиваСмых Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ΠΎΠ²

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ Π² список отслСТиваСмых

POST запрос Π½Π° /api/accounts/add

REQUEST PAYLOAD

{
  "instance": "https://mastodon.social",
  "instance_id": "000000",
  "username": "example"
}

RESPONSE PAYLOAD

Success:

{
  "status": true,
  "message": "Description for the operation result",
  "account_internal_id": "1447ab4fd6924e4cb11038bb487a761d"
}

Error:

{
  "status": false,
  "message": "Description for the operation result"
}

Π£Π΄Π°Π»ΠΈΡ‚ΡŒ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΈΠ· списка отслСТиваСмых

POST запрос Π½Π° /api/accounts/remove

REQUEST PAYLOAD

{
  "account_internal_id": "1447ab4fd6924e4cb11038bb487a761d",
  "remove_associated_data": false
}

RESPONSE PAYLOAD

Success:

{
  "status": true,
  "message": "Description for the operation result"
}

Error:

{
  "status": false,
  "message": "Description for the operation result"
}

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ список отслСТиваСмых Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ΠΎΠ²

GET запрос Π½Π° /api/accounts/tracked

RESPONSE PAYLOAD

Success:

{
  "status": true,
  "message": "Description for the operation result",
  "tracked_accounts": [
    {
      "internal_id": "1447ab4fd6924e4cb11038bb487a761d",
      "username": "example",
      "instance": "https://mastodon.social",
      "instance_id": "000000",
      "added_on": "2021-01-01 12:00:00.000000"
    },
    {
      "internal_id": "1447ab4fd6924e4cb11038bb487a761d",
      "username": "example",
      "instance": "https://mastodon.social",
      "instance_id": "000000",
      "added_on": "2021-01-01 12:00:00.000000"
    }
  ]
}

Error:

{
  "status": false,
  "message": "Description for the operation result"
}

Π‘ΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ для всСх отслСТиваСмых Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ΠΎΠ² ΠΈ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² Π‘Π”

GET запрос Π½Π° /api/gather-data

RESPONSE PAYLOAD

Success:

{
  "status": true,
  "message": "Description for the operation result"
}

Error:

{
  "status": false,
  "message": "Description for the operation result"
}

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Π°ΠΌΠΈ ΠΈΠ· списка отслСТиваСмых

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ сырыС Π΄Π°Π½Π½Ρ‹Π΅ Π·Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄

GET запрос Π½Π° /api/{account_internal_id}/data

REQUEST PAYLOAD

{
  "since": "2021-01-01 12:00",
  "to": null
}

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ since ΠΈ to ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ срок, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ Π΄Π°Π½Π½Ρ‹Π΅. Π­Ρ‚ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ Π»ΠΈΠ±ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ null - ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ отсутствуСт, Π»ΠΈΠ±ΠΎ строка Π²ΠΈΠ΄Π° 2021-01-01 12:00. БоотвСтствСнно, Ссли ΠΎΠ±Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Ρ€Π°Π²Π½Ρ‹ null - Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ всС доступныС Π΄Π°Π½Π½Ρ‹Π΅.

RESPONSE PAYLOAD

Success:

{
  "status": true,
  "message": "Description for the operation result",
  "data": [
    {
      "toot_count": 100,
      "subscribers_count": 250,
      "metering_id": "1447ab4fd6924e4cb11038bb487a761d",
      "timestamp": "2021-01-01 12:00:00.000000"
    },
    {
      "toot_count": 100,
      "subscribers_count": 250,
      "metering_id": "1447ab4fd6924e4cb11038bb487a761d",
      "timestamp": "2021-01-01 12:00:00.000000"
    }
  ]
}

Error:

{
  "status": false,
  "message": "Description for the operation result"
}

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π³Ρ€Π°Ρ„ΠΈΠΊ истории подписчиков Π·Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄

GET запрос Π½Π° /api/{account_internal_id}/graph/subscribers

REQUEST PAYLOAD

{
  "since": "2021-01-01 12:00",
  "to": null
}

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ since ΠΈ to ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ срок, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ Π΄Π°Π½Π½Ρ‹Π΅. Π­Ρ‚ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ Π»ΠΈΠ±ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ null - ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ отсутствуСт, Π»ΠΈΠ±ΠΎ строка Π²ΠΈΠ΄Π° 2021-01-01 12:00. БоотвСтствСнно, Ссли ΠΎΠ±Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Ρ€Π°Π²Π½Ρ‹ null - Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ всС доступныС Π΄Π°Π½Π½Ρ‹Π΅.

RESPONSE PAYLOAD

Success: Π€Π°ΠΉΠ» с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ .png

Error:

{
  "status": false,
  "message": "Description for the operation result"
}

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π³Ρ€Π°Ρ„ΠΈΠΊ истории ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Π·Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄

GET запрос Π½Π° /api/{account_internal_id}/graph/toots

REQUEST PAYLOAD

{
  "since": "2021-01-01 12:00",
  "to": null
}

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ since ΠΈ to ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ срок, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ Π΄Π°Π½Π½Ρ‹Π΅. Π­Ρ‚ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ Π»ΠΈΠ±ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ null - ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ отсутствуСт, Π»ΠΈΠ±ΠΎ строка Π²ΠΈΠ΄Π° 2021-01-01 12:00. БоотвСтствСнно, Ссли ΠΎΠ±Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Ρ€Π°Π²Π½Ρ‹ null - Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ всС доступныС Π΄Π°Π½Π½Ρ‹Π΅.

RESPONSE PAYLOAD

Success: Π€Π°ΠΉΠ» с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ .png

Error:

{
  "status": false,
  "message": "Description for the operation result"
}

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊ истории ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ ΠΈ подписчиков Π·Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄

GET запрос Π½Π° /api/{account_internal_id}/graph/common

REQUEST PAYLOAD

{
  "since": "2021-01-01 12:00",
  "to": null
}

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ since ΠΈ to ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ срок, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ Π΄Π°Π½Π½Ρ‹Π΅. Π­Ρ‚ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ Π»ΠΈΠ±ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ null - ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ отсутствуСт, Π»ΠΈΠ±ΠΎ строка Π²ΠΈΠ΄Π° 2021-01-01 12:00. БоотвСтствСнно, Ссли ΠΎΠ±Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Ρ€Π°Π²Π½Ρ‹ null - Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ всС доступныС Π΄Π°Π½Π½Ρ‹Π΅.

RESPONSE PAYLOAD

Success: Π€Π°ΠΉΠ» с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ .png

Error:

{
  "status": false,
  "message": "Description for the operation result"
}

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ простой тСкстовый ΠΎΡ‚Ρ‡Π΅Ρ‚ ΠΏΠΎ отслСТиваСмым Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Π°ΠΌ

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ тСкстовый ΠΎΡ‚Ρ‡Π΅Ρ‚ Π²ΠΈΠ΄Π°:

Mastodon-meter summary report generated on 2021.09.01 09:00 UTC

account_name_1@mastodon.social: 102 subscribers, 2000 (+2) statuses
account_name_2@mastodon.social: 94 subscribers, 735 statuses
account_name_3@mastodon.social: 39 subscribers, 4671 (+5) statuses
...
account_name_n@mastodon.social: 45 subscribers, 118 statuses

Π’Π°ΠΊΠΎΠΉ ΠΎΡ‚Ρ‡Π΅Ρ‚ ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² сообщСниС ΠΌ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· Π±ΠΎΡ‚Π° ΠΈΠ»ΠΈ ΠΏΠΎ ΠΏΠΎΡ‡Ρ‚Π΅.

GET запрос Π½Π° /api/{account_internal_id}/graph/common

REQUEST PAYLOAD

Π’ ΠΏΠΎΠ»Π΅ accounts Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ список Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² ΠΎΡ‚Ρ‡Π΅Ρ‚

{
  "accounts": [
    "001a24eb90864bf2ba046f36f74f3a8a",
    "0ffc53bbeca947f69536f141f2df20cf",
    "da20f348160b418aa5d158baade0d366"
  ]
}

Если полю ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ null - ΠΎΡ‚Ρ‡Π΅Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ составлСн для всСх отслСТиваСмых Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ΠΎΠ²

{
  "accounts": null
}

RESPONSE PAYLOAD

Success:

{
  "status": true,
  "message": "Description for the operation result",
  "report": "Simple text report"
}

Error:

{
  "status": false,
  "message": "Description for the operation result"
}

About

An open analytics and report generation tool for Mastodon federated social network. Lightweight and robust.

Topics

Resources

Stars

Watchers

Forks

Languages