[timer invalidate];
if ([df boolForKey:@"audioscrobblerEnabled"]) {
NS_DURING
- int elapsed = [[self currentRemote] currentSongPlayed];
- if ((abs(elapsed - _audioscrobblerInterval) < 5) && ([[self currentRemote] playerPlayingState] == ITMTRemotePlayerPlaying)) {
+ int elapsed = [[self currentRemote] currentSongPlayed], length = [[self currentRemote] currentSongDuration], requiredInterval = ((length / 2 < 240) ? length / 2 : 240);
+ if ((abs(elapsed - requiredInterval) < 5) && ([[self currentRemote] playerPlayingState] == ITMTRemotePlayerPlaying)) {
NSString *title = [[self currentRemote] currentSongTitle], *artist = [[self currentRemote] currentSongArtist];
+ NSLog(@"Audioscrobbler: Submitting");
if (title && artist) {
ITDebugLog(@"Audioscrobbler: Submitting current track");
[[AudioscrobblerController sharedController] submitTrack:title
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;
+ } else if (requiredInterval - elapsed > 0) {
+ _audioscrobblerInterval = requiredInterval - elapsed;
[_audioscrobblerTimer release];
- _audioscrobblerTimer = [[NSTimer alloc] initWithFireDate:[NSDate dateWithTimeIntervalSinceNow:_audioscrobblerInterval] interval:nil target:self selector:@selector(submitAudioscrobblerTrack:) userInfo:nil repeats:NO];
+ NSLog(@"Audioscrobbler: Creating a new timer that will run in %i seconds", _audioscrobblerInterval);
+ ITDebugLog(@"Audioscrobbler: Creating a new timer that will run in %i seconds", _audioscrobblerInterval);
+ _audioscrobblerTimer = [[NSTimer alloc] initWithFireDate:[NSDate dateWithTimeIntervalSinceNow:_audioscrobblerInterval] interval:1.0 target:self selector:@selector(submitAudioscrobblerTrack:) userInfo:nil repeats:NO];
[[NSRunLoop currentRunLoop] addTimer:_audioscrobblerTimer forMode:NSDefaultRunLoopMode];
+ } else {
+ NSLog(@"Audioscrobbler: Skipping submission. %i, %i", requiredInterval, elapsed);
}
NS_HANDLER
[self networkError:localException];