diff options
-rw-r--r-- | docs/index.rst | 19 | ||||
-rw-r--r-- | mastodon/Mastodon.py | 39 |
2 files changed, 48 insertions, 10 deletions
diff --git a/docs/index.rst b/docs/index.rst index 4e79032..2a64a02 100644 --- a/docs/index.rst +++ b/docs/index.rst | |||
@@ -454,6 +454,21 @@ Instance dicts | |||
454 | # stream websocket address. | 454 | # stream websocket address. |
455 | } | 455 | } |
456 | 456 | ||
457 | Activity dicts | ||
458 | ~~~~~~~~~~~~~~ | ||
459 | .. _activity dict: | ||
460 | |||
461 | .. code-block:: python | ||
462 | |||
463 | mastodon.instance_activity()[0] | ||
464 | # Returns the following dictionary | ||
465 | { | ||
466 | 'week': # Date of the first day of the week the stats were collected for | ||
467 | 'logins': # Number of users that logged in that week | ||
468 | 'registrations': # Number of new users that week | ||
469 | 'statuses': # Number of statuses posted that week | ||
470 | } | ||
471 | |||
457 | Report dicts | 472 | Report dicts |
458 | ~~~~~~~~~~~~ | 473 | ~~~~~~~~~~~~ |
459 | .. _report dict: | 474 | .. _report dict: |
@@ -517,10 +532,12 @@ version or explicitly determine if a specific minimum Version is available. | |||
517 | 532 | ||
518 | Reading data: Instances | 533 | Reading data: Instances |
519 | ----------------------- | 534 | ----------------------- |
520 | This function allows you to fetch information associated with the | 535 | These functions allow you to fetch information associated with the |
521 | current instance. | 536 | current instance. |
522 | 537 | ||
523 | .. automethod:: Mastodon.instance | 538 | .. automethod:: Mastodon.instance |
539 | .. automethod:: Mastodon.instance_activity | ||
540 | .. automethod:: Mastodon.instance_peers | ||
524 | 541 | ||
525 | Reading data: Timelines | 542 | Reading data: Timelines |
526 | ----------------------- | 543 | ----------------------- |
diff --git a/mastodon/Mastodon.py b/mastodon/Mastodon.py index 0329c10..80960b9 100644 --- a/mastodon/Mastodon.py +++ b/mastodon/Mastodon.py | |||
@@ -89,7 +89,7 @@ class Mastodon: | |||
89 | """ | 89 | """ |
90 | __DEFAULT_BASE_URL = 'https://mastodon.social' | 90 | __DEFAULT_BASE_URL = 'https://mastodon.social' |
91 | __DEFAULT_TIMEOUT = 300 | 91 | __DEFAULT_TIMEOUT = 300 |
92 | __SUPPORTED_MASTODON_VERSION = "2.1.0" | 92 | __SUPPORTED_MASTODON_VERSION = "2.1.2" |
93 | 93 | ||
94 | ### | 94 | ### |
95 | # Registering apps | 95 | # Registering apps |
@@ -360,7 +360,29 @@ class Mastodon: | |||
360 | """ | 360 | """ |
361 | Internal, non-version-checking helper that does the same as instance() | 361 | Internal, non-version-checking helper that does the same as instance() |
362 | """ | 362 | """ |
363 | return self.__api_request('GET', '/api/v1/instance/') | 363 | return self.__api_request('GET', '/api/v1/instance') |
364 | |||
365 | @api_version("2.1.2", "2.1.2") | ||
366 | def instance_activity(self): | ||
367 | """ | ||
368 | Retrieve activity stats about the instance. May be disabled by the instance administrator - throws | ||
369 | a MastodonNotFoundError in that case. | ||
370 | |||
371 | Activity is returned for 12 weeks going back from the current week. | ||
372 | |||
373 | Returns a list `activity dicts`_. | ||
374 | """ | ||
375 | return self.__api_request('GET', '/api/v1/instance/activity') | ||
376 | |||
377 | @api_version("2.1.2", "2.1.2") | ||
378 | def instance_peers(self): | ||
379 | """ | ||
380 | Retrieve the instances that this instance knows about. May be disabled by the instance administrator - throws | ||
381 | a MastodonNotFoundError in that case. | ||
382 | |||
383 | Returns a list of URL strings. | ||
384 | """ | ||
385 | return self.__api_request('GET', '/api/v1/instance/peers') | ||
364 | 386 | ||
365 | ### | 387 | ### |
366 | # Reading data: Timelines | 388 | # Reading data: Timelines |
@@ -1434,7 +1456,7 @@ class Mastodon: | |||
1434 | """ | 1456 | """ |
1435 | Parse dates in certain known json fields, if possible. | 1457 | Parse dates in certain known json fields, if possible. |
1436 | """ | 1458 | """ |
1437 | known_date_fields = ["created_at"] | 1459 | known_date_fields = ["created_at", "week"] |
1438 | for k, v in json_object.items(): | 1460 | for k, v in json_object.items(): |
1439 | if k in known_date_fields: | 1461 | if k in known_date_fields: |
1440 | try: | 1462 | try: |
@@ -1447,13 +1469,12 @@ class Mastodon: | |||
1447 | return json_object | 1469 | return json_object |
1448 | 1470 | ||
1449 | @staticmethod | 1471 | @staticmethod |
1450 | def __json_id_to_bignum(json_object): | 1472 | def __json_strnum_to_bignum(json_object): |
1451 | """ | 1473 | """ |
1452 | Converts json string IDs to native python bignums. | 1474 | Converts json string numerals to native python bignums. |
1453 | """ | 1475 | """ |
1454 | for key in ('id', 'in_reply_to_id', 'in_reply_to_account_id'): | 1476 | for key in ('id', 'week', 'in_reply_to_id', 'in_reply_to_account_id', 'logins', 'registrations', 'statuses'): |
1455 | if (key in json_object and | 1477 | if (key in json_object and isinstance(json_object[key], six.text_type)): |
1456 | isinstance(json_object[key], six.text_type)): | ||
1457 | try: | 1478 | try: |
1458 | json_object[key] = int(json_object[key]) | 1479 | json_object[key] = int(json_object[key]) |
1459 | except ValueError: | 1480 | except ValueError: |
@@ -1463,8 +1484,8 @@ class Mastodon: | |||
1463 | 1484 | ||
1464 | @staticmethod | 1485 | @staticmethod |
1465 | def __json_hooks(json_object): | 1486 | def __json_hooks(json_object): |
1487 | json_object = Mastodon.__json_strnum_to_bignum(json_object) | ||
1466 | json_object = Mastodon.__json_date_parse(json_object) | 1488 | json_object = Mastodon.__json_date_parse(json_object) |
1467 | json_object = Mastodon.__json_id_to_bignum(json_object) | ||
1468 | json_object = Mastodon.__json_allow_dict_attrs(json_object) | 1489 | json_object = Mastodon.__json_allow_dict_attrs(json_object) |
1469 | return json_object | 1490 | return json_object |
1470 | 1491 | ||