stats: added num_artists, num_albums
Don't recalculate the number of artists and albums each time a client requests statistics. Calculate that once in stats_update().
This commit is contained in:
parent
0d449d8df7
commit
91fb2a29de
18
src/stats.c
18
src/stats.c
@ -33,12 +33,6 @@ void stats_global_init(void)
|
||||
stats.start_time = time(NULL);
|
||||
}
|
||||
|
||||
void stats_update(void)
|
||||
{
|
||||
stats.song_count = countSongsIn(NULL);
|
||||
stats.song_duration = sumSongTimesIn(NULL);
|
||||
}
|
||||
|
||||
struct visit_data {
|
||||
enum tag_type type;
|
||||
struct strset *set;
|
||||
@ -78,6 +72,14 @@ getNumberOfTagItems(enum tag_type type)
|
||||
return ret;
|
||||
}
|
||||
|
||||
void stats_update(void)
|
||||
{
|
||||
stats.song_count = countSongsIn(NULL);
|
||||
stats.song_duration = sumSongTimesIn(NULL);
|
||||
stats.artist_count = getNumberOfTagItems(TAG_ITEM_ARTIST);
|
||||
stats.album_count = getNumberOfTagItems(TAG_ITEM_ALBUM);
|
||||
}
|
||||
|
||||
int stats_print(struct client *client)
|
||||
{
|
||||
client_printf(client,
|
||||
@ -88,8 +90,8 @@ int stats_print(struct client *client)
|
||||
"playtime: %li\n"
|
||||
"db_playtime: %li\n"
|
||||
"db_update: %li\n",
|
||||
getNumberOfTagItems(TAG_ITEM_ARTIST),
|
||||
getNumberOfTagItems(TAG_ITEM_ALBUM),
|
||||
stats.artist_count,
|
||||
stats.album_count,
|
||||
stats.song_count,
|
||||
time(NULL) - stats.start_time,
|
||||
(long)(getPlayerTotalPlayTime() + 0.5),
|
||||
|
@ -30,6 +30,12 @@ struct stats {
|
||||
/** sum of all song durations in the music directory (in
|
||||
seconds) */
|
||||
unsigned long song_duration;
|
||||
|
||||
/** number of distinct artist names in the music directory */
|
||||
unsigned artist_count;
|
||||
|
||||
/** number of distinct album names in the music directory */
|
||||
unsigned album_count;
|
||||
};
|
||||
|
||||
extern struct stats stats;
|
||||
|
Loading…
Reference in New Issue
Block a user