diff options
author | Scott Jackson <daneren2005@gmail.com> | 2012-08-14 20:29:07 -0700 |
---|---|---|
committer | Scott Jackson <daneren2005@gmail.com> | 2012-08-14 20:29:07 -0700 |
commit | 973110dedc9bd4cb68fe82a80304e5ff20192a32 (patch) | |
tree | de56a4f15972ff3b3438aeca80b7e44e43b0e626 /subsonic-android/src/github/daneren2005/subdroid/service/Scrobbler.java | |
parent | 4ce59daa35f0e8a04d134fa300589702823de1ba (diff) | |
download | dsub-973110dedc9bd4cb68fe82a80304e5ff20192a32.tar.gz dsub-973110dedc9bd4cb68fe82a80304e5ff20192a32.tar.bz2 dsub-973110dedc9bd4cb68fe82a80304e5ff20192a32.zip |
Changed package name to subdroid to avoid getting banned by Google for being to similar to subphonic
Diffstat (limited to 'subsonic-android/src/github/daneren2005/subdroid/service/Scrobbler.java')
-rw-r--r-- | subsonic-android/src/github/daneren2005/subdroid/service/Scrobbler.java | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/subsonic-android/src/github/daneren2005/subdroid/service/Scrobbler.java b/subsonic-android/src/github/daneren2005/subdroid/service/Scrobbler.java new file mode 100644 index 00000000..be6e9fc8 --- /dev/null +++ b/subsonic-android/src/github/daneren2005/subdroid/service/Scrobbler.java @@ -0,0 +1,52 @@ +package github.daneren2005.subdroid.service; + +import android.content.Context; +import android.util.Log; +import github.daneren2005.subdroid.util.Util; + +/** + * Scrobbles played songs to Last.fm. + * + * @author Sindre Mehus + * @version $Id$ + */ +public class Scrobbler { + + private static final String TAG = Scrobbler.class.getSimpleName(); + + private String lastSubmission; + private String lastNowPlaying; + + public void scrobble(final Context context, final DownloadFile song, final boolean submission) { + if (song == null || !Util.isScrobblingEnabled(context)) { + return; + } + final String id = song.getSong().getId(); + + // Avoid duplicate registrations. + if (submission && id.equals(lastSubmission)) { + return; + } + if (!submission && id.equals(lastNowPlaying)) { + return; + } + if (submission) { + lastSubmission = id; + } else { + lastNowPlaying = id; + } + + new Thread("Scrobble " + song) { + @Override + public void run() { + MusicService service = MusicServiceFactory.getMusicService(context); + try { + service.scrobble(id, submission, context, null); + Log.i(TAG, "Scrobbled '" + (submission ? "submission" : "now playing") + "' for " + song); + } catch (Exception x) { + Log.i(TAG, "Failed to scrobble'" + (submission ? "submission" : "now playing") + "' for " + song, x); + } + } + }.start(); + } +} |