This page is also available in english
Mastodon meter - ΡΡΠΎ ΠΎΡΠΊΡΡΡΠ°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Π°Π½Π°Π»ΠΈΡΠΈΠΊΠΈ Π΄Π»Ρ ΡΠ΅Π΄Π΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΡΠΎΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ Mastodon.
- ΠΠΎΠ±Π°Π²Π»ΡΡΡ ΠΈ ΡΠ΄Π°Π»ΡΡΡ Π°ΠΊΠΊΠ°ΡΠ½ΡΡ Π² ΡΠΏΠΈΡΠΎΠΊ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅ΠΌΡΡ ;
- ΠΠΎ ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΈΡ (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ) ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅ΠΌΡΡ Π°ΠΊΠΊΠ°ΡΠ½ΡΠΎΠ²: ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΡΠ΅ΡΡΠΈΠΊ ΠΏΠΎΠ΄ΠΏΠΈΡΡΠΈΠΊΠΎΠ² ΠΈ ΡΡΠ°ΡΡΡΠΎΠ² ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ ΠΈΡ Π² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ;
- ΠΠ° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΡ Π΄Π°Π½Π½ΡΡ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π³ΡΠ°ΡΠΈΠΊΠΈ ΠΈ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠ΅ ΠΎΡΡΠ΅ΡΡ;
- ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ΄ΠΎΠ±Π½ΡΠΉ API ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² Π²Π°ΡΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ , Π² Ρ.Ρ. Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ "ΡΡΡΡΡ " Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ;
- ΠΠ΅Π³ΠΊΠΈΠΉ ΠΈ Π±ΡΡΡΡΡΠΉ. 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.
-
Π£ΡΡΠ°Π²ΠΈΡΡ Poetry ΡΠ»Π΅Π΄ΡΡ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ:
$ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python -
-
ΠΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΈ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π² ΠΏΠ°ΠΏΠΊΡ Ρ Π½ΠΈΠΌ:
$ git clone https://github.com/arseniiarsenii/mastodon-meter.git && cd mastodon-meter
-
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π² Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Poetry ΠΈ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π² Π½Π΅Π³ΠΎ:
$ poetry install --no-dev && poetry shell
-
ΠΠΊΡΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π°Π΄ΡΠ΅Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ Π±Π°Π·Π΅ MongoDB Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ:
$ export MONGO_CONNECTION_URL="mongodb+srv://your_connection_string_here"
-
ΠΠ΅ΡΠ΅ΠΉΡΠΈ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠ΅ΡΠ²Π΅Ρ:
$ cd src && uvicorn app:app
Π‘Π΅ΡΠ²Π΅Ρ Π·Π°ΠΏΡΡΠ΅Π½ ΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ http://127.0.0.1:8000
.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΈΠ½ΡΡΡ ΡΡΠ°ΡΡΠΈΠ΅ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ Mastodon-meter. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΡΠ΄Π΅Π»Π°ΠΉΡΠ΅ fork ΡΡΠΎΠ³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ, Π²Π½Π΅ΡΠΈΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈ ΠΎΡΠΏΡΠ°Π²ΡΡΠ΅ pull request.
ΠΠ°Π½Π½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ GNU GPL v3. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΈΡ ΡΠ΅Π»ΡΡ , Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠΊΡΡΡΠΈΠ΅ ΠΊΠΎΠ΄Π° Π½Π΅ Π΄ΠΎΠΏΡΡΠΊΠ°ΡΡΡΡ.
POST Π·Π°ΠΏΡΠΎΡ Π½Π° /api/accounts/add
{
"instance": "https://mastodon.social",
"instance_id": "000000",
"username": "example"
}
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
{
"account_internal_id": "1447ab4fd6924e4cb11038bb487a761d",
"remove_associated_data": false
}
Success:
{
"status": true,
"message": "Description for the operation result"
}
Error:
{
"status": false,
"message": "Description for the operation result"
}
GET Π·Π°ΠΏΡΠΎΡ Π½Π° /api/accounts/tracked
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
Success:
{
"status": true,
"message": "Description for the operation result"
}
Error:
{
"status": false,
"message": "Description for the operation result"
}
GET Π·Π°ΠΏΡΠΎΡ Π½Π° /api/{account_internal_id}/data
{
"since": "2021-01-01 12:00",
"to": null
}
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ since
ΠΈ to
ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΡΠΎΠΊ, Π·Π° ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄ΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Ρ Π΄Π°Π½Π½ΡΠ΅. ΠΡΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π»ΠΈΠ±ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
null
- ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ, Π»ΠΈΠ±ΠΎ ΡΡΡΠΎΠΊΠ° Π²ΠΈΠ΄Π° 2021-01-01 12:00
. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, Π΅ΡΠ»ΠΈ ΠΎΠ±Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΡΠ°Π²Π½Ρ
null
- Π±ΡΠ΄ΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Ρ Π²ΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅.
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
{
"since": "2021-01-01 12:00",
"to": null
}
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ since
ΠΈ to
ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΡΠΎΠΊ, Π·Π° ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄ΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Ρ Π΄Π°Π½Π½ΡΠ΅. ΠΡΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π»ΠΈΠ±ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
null
- ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ, Π»ΠΈΠ±ΠΎ ΡΡΡΠΎΠΊΠ° Π²ΠΈΠ΄Π° 2021-01-01 12:00
. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, Π΅ΡΠ»ΠΈ ΠΎΠ±Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΡΠ°Π²Π½Ρ
null
- Π±ΡΠ΄ΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Ρ Π²ΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅.
Success:
Π€Π°ΠΉΠ» Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ .png
Error:
{
"status": false,
"message": "Description for the operation result"
}
ΠΠΎΠ»ΡΡΠΈΡΡ Π³ΡΠ°ΡΠΈΠΊ ΠΈΡΡΠΎΡΠΈΠΈ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΉ Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΠΏΠ΅ΡΠΈΠΎΠ΄
GET Π·Π°ΠΏΡΠΎΡ Π½Π° /api/{account_internal_id}/graph/toots
{
"since": "2021-01-01 12:00",
"to": null
}
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ since
ΠΈ to
ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΡΠΎΠΊ, Π·Π° ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄ΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Ρ Π΄Π°Π½Π½ΡΠ΅. ΠΡΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π»ΠΈΠ±ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
null
- ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ, Π»ΠΈΠ±ΠΎ ΡΡΡΠΎΠΊΠ° Π²ΠΈΠ΄Π° 2021-01-01 12:00
. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, Π΅ΡΠ»ΠΈ ΠΎΠ±Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΡΠ°Π²Π½Ρ
null
- Π±ΡΠ΄ΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Ρ Π²ΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅.
Success:
Π€Π°ΠΉΠ» Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ .png
Error:
{
"status": false,
"message": "Description for the operation result"
}
ΠΠΎΠ»ΡΡΠΈΡΡ ΠΎΠ±ΡΠΈΠΉ Π³ΡΠ°ΡΠΈΠΊ ΠΈΡΡΠΎΡΠΈΠΈ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΉ ΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΡΠΈΠΊΠΎΠ² Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΠΏΠ΅ΡΠΈΠΎΠ΄
GET Π·Π°ΠΏΡΠΎΡ Π½Π° /api/{account_internal_id}/graph/common
{
"since": "2021-01-01 12:00",
"to": null
}
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ since
ΠΈ to
ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΡΠΎΠΊ, Π·Π° ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄ΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Ρ Π΄Π°Π½Π½ΡΠ΅. ΠΡΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π»ΠΈΠ±ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
null
- ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ, Π»ΠΈΠ±ΠΎ ΡΡΡΠΎΠΊΠ° Π²ΠΈΠ΄Π° 2021-01-01 12:00
. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, Π΅ΡΠ»ΠΈ ΠΎΠ±Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΡΠ°Π²Π½Ρ
null
- Π±ΡΠ΄ΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Ρ Π²ΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅.
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
Π ΠΏΠΎΠ»Π΅ accounts
Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΠΏΠΈΡΠΎΠΊ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ
ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² Π°ΠΊΠΊΠ°ΡΠ½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½Ρ Π² ΠΎΡΡΠ΅Ρ
{
"accounts": [
"001a24eb90864bf2ba046f36f74f3a8a",
"0ffc53bbeca947f69536f141f2df20cf",
"da20f348160b418aa5d158baade0d366"
]
}
ΠΡΠ»ΠΈ ΠΏΠΎΠ»Ρ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ null
- ΠΎΡΡΠ΅Ρ Π±ΡΠ΄Π΅Ρ ΡΠΎΡΡΠ°Π²Π»Π΅Π½ Π΄Π»Ρ Π²ΡΠ΅Ρ
ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅ΠΌΡΡ
Π°ΠΊΠΊΠ°ΡΠ½ΡΠΎΠ²
{
"accounts": null
}
Success:
{
"status": true,
"message": "Description for the operation result",
"report": "Simple text report"
}
Error:
{
"status": false,
"message": "Description for the operation result"
}