1bf0c3a3aSlifegpc #pragma once 2bf0c3a3aSlifegpc #include <string> 3bf0c3a3aSlifegpc #include <list> 4bf0c3a3aSlifegpc #include "Time.h" 5bf0c3a3aSlifegpc 6bf0c3a3aSlifegpc using namespace std; 7bf0c3a3aSlifegpc 8bf0c3a3aSlifegpc class LastFMTrack { 9bf0c3a3aSlifegpc public: 10bf0c3a3aSlifegpc /// The artist name. 11bf0c3a3aSlifegpc wstring artist; 12bf0c3a3aSlifegpc /// The track name. 13bf0c3a3aSlifegpc wstring track; 14bf0c3a3aSlifegpc /// The time the track started playing, in UNIX timestamp format (integer number of seconds since 00:00:00, January 1st 1970 UTC). This must be in the UTC time zone. 15bf0c3a3aSlifegpc uint64_t timestamp; 16bf0c3a3aSlifegpc /// The album name. 17bf0c3a3aSlifegpc wstring album; 18bf0c3a3aSlifegpc /// The stream id for this track received from the radio.getPlaylist service, if scrobbling Last.fm radio 19bf0c3a3aSlifegpc wstring streamId; 20bf0c3a3aSlifegpc /// Set to 1 if the user chose this song, or 0 if the song was chosen by someone else (such as a radio station or recommendation service). Assumes 1 if not specified 21bf0c3a3aSlifegpc bool chosenByUser = true; 22bf0c3a3aSlifegpc /// The track number of the track on the album. 23bf0c3a3aSlifegpc uint16_t trackNumber; 24bf0c3a3aSlifegpc /// The MusicBrainz Track ID. 25bf0c3a3aSlifegpc wstring mbid; 26bf0c3a3aSlifegpc /// The album artist - if this differs from the track artist. 27bf0c3a3aSlifegpc wstring albumArtist; 28bf0c3a3aSlifegpc /// The length of the track in seconds. 29bf0c3a3aSlifegpc Time duration; 30bf0c3a3aSlifegpc void SaveDataTo(CArchive &archive); 31bf0c3a3aSlifegpc void ReadDataFrom(CArchive &archive); 32bf0c3a3aSlifegpc }; 33bf0c3a3aSlifegpc 34bf0c3a3aSlifegpc class LastFMDataArchive { 35bf0c3a3aSlifegpc public: 36bf0c3a3aSlifegpc /// The origin track information of current track. 37bf0c3a3aSlifegpc LastFMTrack current_track; 38bf0c3a3aSlifegpc /// The track information of current track after corrected. 39bf0c3a3aSlifegpc LastFMTrack corrected_current_track; 40bf0c3a3aSlifegpc /// The list of tracks are not scrobbed. 41bf0c3a3aSlifegpc list<LastFMTrack> cached_tracks; 42bf0c3a3aSlifegpc /// A session key generated by authenticating a user via the authentication protocol. 43bf0c3a3aSlifegpc wstring session_key; 44*9b620a10Slifegpc /// User name 45*9b620a10Slifegpc wstring user_name; 46bf0c3a3aSlifegpc void SaveData(wstring path); 47bf0c3a3aSlifegpc void LoadData(wstring path); 48bf0c3a3aSlifegpc }; 49