xref: /MusicPlayer2/MusicPlayer2/LastFMDataArchive.h (revision 9b620a1064962fd4d0403a4a6eac505bf6041492)
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