1*bf0c3a3aSlifegpc #pragma once 2*bf0c3a3aSlifegpc #include <string> 3*bf0c3a3aSlifegpc #include <list> 4*bf0c3a3aSlifegpc #include "Time.h" 5*bf0c3a3aSlifegpc 6*bf0c3a3aSlifegpc using namespace std; 7*bf0c3a3aSlifegpc 8*bf0c3a3aSlifegpc class LastFMTrack { 9*bf0c3a3aSlifegpc public: 10*bf0c3a3aSlifegpc /// The artist name. 11*bf0c3a3aSlifegpc wstring artist; 12*bf0c3a3aSlifegpc /// The track name. 13*bf0c3a3aSlifegpc wstring track; 14*bf0c3a3aSlifegpc /// 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. 15*bf0c3a3aSlifegpc uint64_t timestamp; 16*bf0c3a3aSlifegpc /// The album name. 17*bf0c3a3aSlifegpc wstring album; 18*bf0c3a3aSlifegpc /// The stream id for this track received from the radio.getPlaylist service, if scrobbling Last.fm radio 19*bf0c3a3aSlifegpc wstring streamId; 20*bf0c3a3aSlifegpc /// 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 21*bf0c3a3aSlifegpc bool chosenByUser = true; 22*bf0c3a3aSlifegpc /// The track number of the track on the album. 23*bf0c3a3aSlifegpc uint16_t trackNumber; 24*bf0c3a3aSlifegpc /// The MusicBrainz Track ID. 25*bf0c3a3aSlifegpc wstring mbid; 26*bf0c3a3aSlifegpc /// The album artist - if this differs from the track artist. 27*bf0c3a3aSlifegpc wstring albumArtist; 28*bf0c3a3aSlifegpc /// The length of the track in seconds. 29*bf0c3a3aSlifegpc Time duration; 30*bf0c3a3aSlifegpc void SaveDataTo(CArchive &archive); 31*bf0c3a3aSlifegpc void ReadDataFrom(CArchive &archive); 32*bf0c3a3aSlifegpc }; 33*bf0c3a3aSlifegpc 34*bf0c3a3aSlifegpc class LastFMDataArchive { 35*bf0c3a3aSlifegpc public: 36*bf0c3a3aSlifegpc /// The origin track information of current track. 37*bf0c3a3aSlifegpc LastFMTrack current_track; 38*bf0c3a3aSlifegpc /// The track information of current track after corrected. 39*bf0c3a3aSlifegpc LastFMTrack corrected_current_track; 40*bf0c3a3aSlifegpc /// The list of tracks are not scrobbed. 41*bf0c3a3aSlifegpc list<LastFMTrack> cached_tracks; 42*bf0c3a3aSlifegpc /// A session key generated by authenticating a user via the authentication protocol. 43*bf0c3a3aSlifegpc wstring session_key; 44*bf0c3a3aSlifegpc void SaveData(wstring path); 45*bf0c3a3aSlifegpc void LoadData(wstring path); 46*bf0c3a3aSlifegpc }; 47