funkwhale/api/funkwhale_api/instance/stats.py

50 wiersze
1.0 KiB
Python

from django.db.models import Sum
from funkwhale_api.favorites.models import TrackFavorite
from funkwhale_api.history.models import Listening
from funkwhale_api.music import models
from funkwhale_api.users.models import User
def get():
return {
"users": get_users(),
"tracks": get_tracks(),
"albums": get_albums(),
"artists": get_artists(),
"track_favorites": get_track_favorites(),
"listenings": get_listenings(),
"music_duration": get_music_duration(),
}
def get_users():
return User.objects.count()
def get_listenings():
return Listening.objects.count()
def get_track_favorites():
return TrackFavorite.objects.count()
def get_tracks():
return models.Track.objects.count()
def get_albums():
return models.Album.objects.count()
def get_artists():
return models.Artist.objects.count()
def get_music_duration():
seconds = models.TrackFile.objects.aggregate(d=Sum("duration"))["d"]
if seconds:
return seconds / 3600
return 0