1bf0c3a3aSlifegpc #pragma once 2bf0c3a3aSlifegpc #include "LastFMDataArchive.h" 3bf0c3a3aSlifegpc /// Can be obtained from https://www.last.fm/api/accounts/create 4bf0c3a3aSlifegpc #define LASTFM_API_KEY L"f2e8f3d36d2de514acc2b072762bb732" 5bf0c3a3aSlifegpc #define LASTFM_SHARED_SECRET L"a6b6804e2bc3a60732ac9c5719c52494" 6bf0c3a3aSlifegpc class LastFM { 7bf0c3a3aSlifegpc public: 8719e6923Slifegpc LastFM(); 9719e6923Slifegpc ~LastFM(); 10bf0c3a3aSlifegpc SaveData(wstring path)11bf0c3a3aSlifegpc void SaveData(wstring path) { 12bf0c3a3aSlifegpc return ar.SaveData(path); 13bf0c3a3aSlifegpc } 14bf0c3a3aSlifegpc LoadData(wstring path)15bf0c3a3aSlifegpc void LoadData(wstring path) { 16bf0c3a3aSlifegpc return ar.LoadData(path); 17bf0c3a3aSlifegpc } 189b620a10Slifegpc 199b620a10Slifegpc bool GetSession(wstring token); 209b620a10Slifegpc wstring GetToken(); 219b620a10Slifegpc wstring GetRequestAuthorizationUrl(wstring token); 229b620a10Slifegpc bool HasSessionKey(); 239b620a10Slifegpc wstring UserName(); 241596c33dSlifegpc bool UpdateNowPlaying(LastFMTrack track, LastFMTrack& corrected_track); 251596c33dSlifegpc bool UpdateNowPlaying(); 261596c33dSlifegpc void UpdateCurrentTrack(LastFMTrack track); 2789c4b514Slifegpc const LastFMTrack& CurrentTrack(); 2889c4b514Slifegpc const LastFMTrack& CorrectedCurrentTrack(); 29040c544fSlifegpc bool Love(wstring track, wstring artist); 30040c544fSlifegpc bool Love(); 31040c544fSlifegpc bool Unlove(wstring track, wstring artist); 32040c544fSlifegpc bool Unlove(); 33*45230f77Slrisora bool Scrobble(std::list<LastFMTrack>& tracks); 3468b9087aSlifegpc bool Scrobble(); 3568b9087aSlifegpc bool PushCurrentTrackToCache(); 362c5259deSlifegpc void AddCurrentPlayedTime(int millisec); 3768b9087aSlifegpc int32_t CurrentPlayedTime(); 3868b9087aSlifegpc bool IsPushed(); 3968b9087aSlifegpc bool IsScrobbeable(); 402c5259deSlifegpc /// ��ǰ�����Ƿŵ��˿����ϴ��Ľ��� 412c5259deSlifegpc bool CurrentTrackScrobbleable(); 4283d3e3e1Slifegpc size_t CachedCount(); 43bf0c3a3aSlifegpc protected: 44bf0c3a3aSlifegpc void GenerateApiSig(map<wstring, wstring>& params); 45518606ffSlifegpc wstring GetUrl(map<wstring, wstring>& params, wstring base); 46518606ffSlifegpc wstring GetUrl(map<wstring, wstring>& params); 47518606ffSlifegpc wstring GetDefaultBase(); 482fe2e1f0Slifegpc wstring GetPostData(map<wstring, wstring>& params); 49bf0c3a3aSlifegpc private: 50bf0c3a3aSlifegpc LastFMDataArchive ar; 51bf0c3a3aSlifegpc wstring api_key; 52bf0c3a3aSlifegpc wstring shared_secret; 53719e6923Slifegpc /// �����������ڷ�ֹͬʱ��ε���Scrobble 54719e6923Slifegpc HANDLE mutex; 55bf0c3a3aSlifegpc }; 56