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:
Max Kellermann 2009-01-18 15:40:28 +01:00
parent 0d449d8df7
commit 91fb2a29de
2 changed files with 16 additions and 8 deletions

View File

@ -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),

View File

@ -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;