1bf0c3a3aSlifegpc #pragma once 2bf0c3a3aSlifegpc #include "LastFMDataArchive.h" 3bf0c3a3aSlifegpc #include <map> 4bf0c3a3aSlifegpc /// Can be obtained from https://www.last.fm/api/accounts/create 5bf0c3a3aSlifegpc #define LASTFM_API_KEY L"f2e8f3d36d2de514acc2b072762bb732" 6bf0c3a3aSlifegpc #define LASTFM_SHARED_SECRET L"a6b6804e2bc3a60732ac9c5719c52494" 7bf0c3a3aSlifegpc class LastFM { 8bf0c3a3aSlifegpc public: 9bf0c3a3aSlifegpc LastFM() { 10bf0c3a3aSlifegpc api_key = LASTFM_API_KEY; 11bf0c3a3aSlifegpc shared_secret = LASTFM_SHARED_SECRET; 12bf0c3a3aSlifegpc } 13bf0c3a3aSlifegpc 14bf0c3a3aSlifegpc void SaveData(wstring path) { 15bf0c3a3aSlifegpc return ar.SaveData(path); 16bf0c3a3aSlifegpc } 17bf0c3a3aSlifegpc 18bf0c3a3aSlifegpc void LoadData(wstring path) { 19bf0c3a3aSlifegpc return ar.LoadData(path); 20bf0c3a3aSlifegpc } 219b620a10Slifegpc 229b620a10Slifegpc bool GetSession(wstring token); 239b620a10Slifegpc wstring GetToken(); 249b620a10Slifegpc wstring GetRequestAuthorizationUrl(wstring token); 259b620a10Slifegpc bool HasSessionKey(); 269b620a10Slifegpc wstring UserName(); 271596c33dSlifegpc bool UpdateNowPlaying(LastFMTrack track, LastFMTrack& corrected_track); 281596c33dSlifegpc bool UpdateNowPlaying(); 291596c33dSlifegpc void UpdateCurrentTrack(LastFMTrack track); 30*89c4b514Slifegpc const LastFMTrack& CurrentTrack(); 31*89c4b514Slifegpc const LastFMTrack& CorrectedCurrentTrack(); 32bf0c3a3aSlifegpc protected: 33bf0c3a3aSlifegpc void GenerateApiSig(map<wstring, wstring>& params); 349b620a10Slifegpc wstring GetUrl(map<wstring, wstring>& params, wstring base = L"http://ws.audioscrobbler.com/2.0/?"); 352fe2e1f0Slifegpc wstring GetPostData(map<wstring, wstring>& params); 36bf0c3a3aSlifegpc private: 37bf0c3a3aSlifegpc LastFMDataArchive ar; 38bf0c3a3aSlifegpc wstring api_key; 39bf0c3a3aSlifegpc wstring shared_secret; 40bf0c3a3aSlifegpc }; 41