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