ultrasonic-app-subsonic-and.../ultrasonic/src/main/java/org/moire/ultrasonic/service/Scrobbler.java

70 lines
1.4 KiB
Java

package org.moire.ultrasonic.service;
import android.content.Context;
import android.util.Log;
import org.moire.ultrasonic.data.ActiveServerProvider;
import org.moire.ultrasonic.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 || !ActiveServerProvider.Companion.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(String.format("Scrobble %s", song))
{
@Override
public void run()
{
MusicService service = MusicServiceFactory.getMusicService(context);
try
{
service.scrobble(id, submission, context, null);
Log.i(TAG, String.format("Scrobbled '%s' for %s", submission ? "submission" : "now playing", song));
}
catch (Exception x)
{
Log.i(TAG, String.format("Failed to scrobble'%s' for %s", submission ? "submission" : "now playing", song), x);
}
}
}.start();
}
}