- NSString *title = [[self currentRemote] currentSongTitle], *artist = [[self currentRemote] currentSongArtist];
- if (title && artist) {
- [[AudioscrobblerController sharedController] submitTrack:title
- artist:artist
- album:[[self currentRemote] currentSongAlbum]
- length:[[self currentRemote] currentSongDuration]];
+ int elapsed = [[self currentRemote] currentSongPlayed];
+ if ((abs(elapsed - _audioscrobblerInterval) < 5) && ([[self currentRemote] playerPlayingState] == ITMTRemotePlayerPlaying)) {
+ NSString *title = [[self currentRemote] currentSongTitle], *artist = [[self currentRemote] currentSongArtist];
+ if (title && artist) {
+ ITDebugLog(@"Audioscrobbler: Submitting current track");
+ [[AudioscrobblerController sharedController] submitTrack:title
+ artist:artist
+ album:[[self currentRemote] currentSongAlbum]
+ length:[[self currentRemote] currentSongDuration]];
+ }
+ } else if (_audioscrobblerInterval - elapsed > 0) {
+ ITDebugLog(@"Audioscrobbler: Creating a new timer that will run in %i seconds", _audioscrobblerInterval - elapsed);
+ _audioscrobblerInterval -= elapsed;
+ [_audioscrobblerTimer release];
+ _audioscrobblerTimer = [[NSTimer alloc] initWithFireDate:[NSDate dateWithTimeIntervalSinceNow:_audioscrobblerInterval] interval:nil target:self selector:@selector(submitAudioscrobblerTrack:) userInfo:nil repeats:NO];
+ [[NSRunLoop currentRunLoop] addTimer:_audioscrobblerTimer forMode:NSDefaultRunLoopMode];