Track data with skip statistics and metadata

interface SkippedTrack {
    id: string;
    name: string;
    artist: string;
    albumName?: string;
    albumId?: string;
    duration?: number;
    skipCount?: number;
    skipTypes?: Record<string, number>;
    manualSkipCount?: number;
    autoSkipCount?: number;
    autoProcessed?: boolean;
    lastSkipped?: string;
    timeOfDay?: Record<string, number>;
    averagePlayPercentage?: number;
    skipHistory?: string[];
    skipTimestamps?: string[];
    notSkippedCount?: number;
    isInLibrary?: boolean;
    lastContext?: { type: string; uri?: string; name?: string; id?: string };
    contextStats?: {
        total: number;
        contexts: Record<
            string,
            { type: string; name?: string; uri?: string; count: number },
        >;
    };
    skipEvents?: {
        timestamp: string;
        progress: number;
        isManualSkip?: boolean;
        skipType?: string;
        context?: { type: string; uri?: string; name?: string; id?: string };
    }[];
}

Properties

id: string
name: string
artist: string
albumName?: string
albumId?: string
duration?: number
skipCount?: number
skipTypes?: Record<string, number>
manualSkipCount?: number
autoSkipCount?: number
autoProcessed?: boolean
lastSkipped?: string
timeOfDay?: Record<string, number>
averagePlayPercentage?: number
skipHistory?: string[]
skipTimestamps?: string[]
notSkippedCount?: number
isInLibrary?: boolean
lastContext?: { type: string; uri?: string; name?: string; id?: string }
contextStats?: {
    total: number;
    contexts: Record<
        string,
        { type: string; name?: string; uri?: string; count: number },
    >;
}
skipEvents?: {
    timestamp: string;
    progress: number;
    isManualSkip?: boolean;
    skipType?: string;
    context?: { type: string; uri?: string; name?: string; id?: string };
}[]