mirror of
https://code.eliotberriot.com/funkwhale/funkwhale.git
synced 2025-10-03 23:49:16 +02:00
See #192: replaced old stats endpoint with nodeinfo
This commit is contained in:
parent
e31bed050e
commit
b4ad7a4a71
7 changed files with 239 additions and 15 deletions
74
api/funkwhale_api/instance/nodeinfo.py
Normal file
74
api/funkwhale_api/instance/nodeinfo.py
Normal file
|
@ -0,0 +1,74 @@
|
|||
import memoize.djangocache
|
||||
|
||||
import funkwhale_api
|
||||
from funkwhale_api.common import preferences
|
||||
|
||||
from . import stats
|
||||
|
||||
|
||||
store = memoize.djangocache.Cache('default')
|
||||
memo = memoize.Memoizer(store, namespace='instance:stats')
|
||||
|
||||
|
||||
def get():
|
||||
share_stats = preferences.get('instance__nodeinfo_stats_enabled')
|
||||
data = {
|
||||
'version': '2.0',
|
||||
'software': {
|
||||
'name': 'funkwhale',
|
||||
'version': funkwhale_api.__version__
|
||||
},
|
||||
'protocols': ['activitypub'],
|
||||
'services': {
|
||||
'inbound': [],
|
||||
'outbound': []
|
||||
},
|
||||
'openRegistrations': preferences.get('users__registration_enabled'),
|
||||
'usage': {
|
||||
'users': {
|
||||
'total': 0,
|
||||
},
|
||||
'localPosts': 0,
|
||||
'localComments': 0,
|
||||
},
|
||||
'metadata': {
|
||||
'shortDescription': preferences.get('instance__short_description'),
|
||||
'longDescription': preferences.get('instance__long_description'),
|
||||
'name': preferences.get('instance__name'),
|
||||
'library': {
|
||||
'federationEnabled': preferences.get('federation__enabled'),
|
||||
'federationNeedsApproval': preferences.get('federation__music_needs_approval'),
|
||||
},
|
||||
}
|
||||
}
|
||||
if share_stats:
|
||||
getter = memo(
|
||||
lambda: stats.get(),
|
||||
max_age=600
|
||||
)
|
||||
statistics = getter()
|
||||
data['usage']['users']['total'] = statistics['users']
|
||||
data['metadata']['library']['tracks'] = {
|
||||
'total': statistics['tracks'],
|
||||
}
|
||||
data['metadata']['library']['artists'] = {
|
||||
'total': statistics['artists'],
|
||||
}
|
||||
data['metadata']['library']['albums'] = {
|
||||
'total': statistics['albums'],
|
||||
}
|
||||
data['metadata']['library']['music'] = {
|
||||
'hours': statistics['music_duration']
|
||||
}
|
||||
|
||||
data['metadata']['usage'] = {
|
||||
'favorites': {
|
||||
'tracks': {
|
||||
'total': statistics['track_favorites'],
|
||||
}
|
||||
},
|
||||
'listenings': {
|
||||
'total': statistics['listenings']
|
||||
}
|
||||
}
|
||||
return data
|
Loading…
Add table
Add a link
Reference in a new issue