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