Global statistics aggregation

interface StatisticsData {
    lastUpdated: string;
    dailyMetrics: Record<string, DailyMetrics>;
    weeklyMetrics: Record<string, WeeklyMetrics>;
    monthlyMetrics: Record<string, MonthlyMetrics>;
    artistMetrics: Record<string, ArtistMetrics>;
    sessions: ListeningSession[];
    totalUniqueTracks: number;
    totalUniqueArtists: number;
    overallSkipRate: number;
    discoveryRate: number;
    totalListeningTimeMs: number;
    topArtistIds: string[];
    hourlyDistribution: number[];
    dailyDistribution: number[];
    deviceMetrics: Record<string, DeviceMetrics>;
    trackMetrics: Record<string, TrackMetrics>;
    skipPatterns: Record<string, SkipPatternMetrics>;
    recentDiscoveries: string[];
    avgSessionDurationMs: number;
    hourlyListeningTime: number[];
    repeatListeningRate: number;
    recentSkipRateTrend: number[];
    recentListeningTimeTrend: number[];
    skipTypeMetrics?: SkipTypeMetrics;
}

Properties

lastUpdated: string

Last updated timestamp

dailyMetrics: Record<string, DailyMetrics>

Map of daily metrics by date string

weeklyMetrics: Record<string, WeeklyMetrics>

Map of weekly metrics by week string

monthlyMetrics: Record<string, MonthlyMetrics>

Map of monthly metrics by month string

artistMetrics: Record<string, ArtistMetrics>

Artist metrics by artist ID

sessions: ListeningSession[]

Recent listening sessions

totalUniqueTracks: number

Total unique tracks played count

totalUniqueArtists: number

Total unique artists played count

overallSkipRate: number

Overall average skip rate (0-1)

discoveryRate: number

Discovery rate - percentage of new artists/tracks over time (0-1)

totalListeningTimeMs: number

Total listening time in milliseconds

topArtistIds: string[]

Top artists by listening time

hourlyDistribution: number[]

Peak listening times distribution (24-hour format, 0-23)

dailyDistribution: number[]

Most active days (0-6, where 0 is Sunday)

deviceMetrics: Record<string, DeviceMetrics>

Device-specific metrics

trackMetrics: Record<string, TrackMetrics>

Track-specific detailed metrics

skipPatterns: Record<string, SkipPatternMetrics>

Skip pattern analysis

recentDiscoveries: string[]

Recently discovered artists (in last 30 days)

avgSessionDurationMs: number

Average session duration in milliseconds

hourlyListeningTime: number[]

Time spent listening by hour of day (24 hours)

repeatListeningRate: number

Repeat listening rate - percentage of repeated tracks in sessions

recentSkipRateTrend: number[]

Recent trends (last 14 days) of skip rates

recentListeningTimeTrend: number[]

Recent trends (last 14 days) of listening time

skipTypeMetrics?: SkipTypeMetrics

Detailed skip type metrics