Code Monkey home page Code Monkey logo

sls's Introduction

Simple Scrobbler

Icon Build Status GitHub release GitHub release License Pull Requests Gitter Discord Discord

Feature Requests App Support Issues Bugs Issues Issues Serious Issues Critical Issues

New Permission Privacy Concerns Explained -- Privacy Explained

Translators! Your Help Is Needed.

  • Head to OpenSkyApp for exact translator information.

Simple Scrobbler (SS) is a simple app that scrobbles music listened to on an Android phone. Scrobbling means submitting listening information to Last.fm (and optionally/additionally Libre.fm and ListenBrainz) when you play a track, and you can then get music recommendations and view you listening history and statistics at Last.fm.

Before the release of a new version of SLS, it will be available here to test for one week in GitHub Releases.

Problem or Issue?

  • Please create a GitHub Account so you can create a GitHub Issue and PLEASE use the next sections as guides. You will get help with bugs and problems with the software. For direct personal contact with developers, please use Gitter or Discord.

  • Issue (Bug Report) Example

    • SLS Version (required): (1.5.8)
    • Issue (required): (Brief description of your bug or issue)
    • Parameters (required):
      • What: {App Crashing, Scrobble Failure, or (you tell us)}
      • Where: {App Screen, Notifications, Hidden or (you tell us)}
      • When: {ex. "I clicked Scrobble Now", "I don't know", or (you tell us)}
      • Why: {ex. "Because I clicked Scrobble Now.", "I don't know.", or (you tell us)}
      • How: {ex. "Automatic", "Manual Button Click", "I don't know.", or (you tell us)}
    • Android Version (preferred): (9)
    • Music App(s) (preferred): (ex. Google Play Music, Spotify)
    • Detected Music Apps(s) (preferred): (List what apps SLS detected)
    • Enabled Settings (preferred): (List what options you have enabled)
    • Phone Model (optional): (Samsung S10)
  • Issue (Feature Request) Example

    • Request for Feature (required): (control over scrobbled data)
    • Reason (required): (Scrobble is love, scrobble is life.)

Download

Get it on PlayStore Get it on F-Droid

Compatible Apps & Compatible Phones

Known compatible devices

Note. SLS should work on any device that can install it, and that can run one of the music apps above.

Notices

  • SLS is maintained by a few dedicated programmers.

Developers

  • Contributors are welcome!
  • Revisions will be requested if the changes are not working.
  • Please let us know if you have added strings that need translation in Pull Requests.
  • Please let us know if you have added strings that have not been made into string variables in Pull Requests.
  • Somebody will make the necessary changes for you if you do not have the time.
  • Head to Transifex if you want to be a translator.
  • Create an issue when you are done translating or create a pull request. Whatever you are comfortable with.

Core Tasks

  1. Core bugs/issues

  • Repeat Song For Some Music Apps
  • Language support is lagging behind for some features that have been added recently.
  • Enforce (maybe hack) the scrobbling rules for each service using error codes correctly by API. (ex last.fm scrobble too new/old)
  1. Core Bugs/Features

  1. Core Feature Requests

  • True Material Design Upgrade
  • Better Unit Tests
  • Notification Level
  • Unsecured http:// support for custom servers
  • ListenBrainz API for Total Listen Count
  • Word blacklist for blocking things like podcasts or tracks on mixed media apps. "Intelligent noise filter"
  • Multiple Account Login
  • Sequential storage of all tracks, scrobbled, skipped, hearted, and failed with explanations
  • markers in scrobble cache for logged in accounts
  • Store scrobbles before user is logged in
  • Manual scrobbling, for example Vinyl Records, CD, Cassette and other older media machines.
  • Import database
  • Keep more variables in the database including past scrobbles, old scrobbles and statistics
  • .. essentially better internal data management

Features

  • Scrobbling
  • Now playing notifications
  • Power-saving settings
  • Caching scrobbles (while offline or through settings)
  • Editing scrobble cache
  • Auto-correct scrobbles
  • Enable/Disable Music Apps
  • Themes
  • More

Supported languages

  • Head to OpenSkyApp for exact translator information.
  • English
  • Spanish
  • French
  • German
  • Brazilian Portuguese
  • Polish
  • Russian
  • Czech

Supported scrobble services

Last.fm, Libre.fm, ListenBrainz(.org), and Custom Personal Servers

last.fm libre.fm ListenBrainz

there is also developer server options

Changes

For a complete list of changes, see the changelog.

Bugs, Contributions, Thoughts...

First, read the FAQ to see if you can find any help with your issue.

If you can't find it there, you can always open an issue or pull request here on GitHub.

Credits

All of the code is open source, released under Apache License 2.0.

  • Almost all of the code is written by me, so: Copyright 2009-2015 Adam Renberg.
  • The Last.fm logo is copyright of Last.fm, taken from their media kit.
  • The Libre.fm logo is probably copyright of Libre.fm, used in good faith. (Because of their name and stated mission, I assume it is okay).

I use copyright here only in the sense of proper attribution. Do whatever you want with the code (as long as the licenses are followed).

Contributors

A complete and updated list here -> CONTRIBUTORS LIST

Test device contributors

Several people have also contributed with comments, suggestions and issues.

sls's People

Contributors

19379 avatar 4-eyes avatar a-r-db avatar aaharu avatar ammgws avatar bajituka avatar bryansills avatar bshillingford avatar cmpute avatar dostoi avatar ejegg avatar facundocerezo avatar freso avatar g00fy2 avatar herrherrmann avatar inverse avatar jadkik avatar jensz12 avatar klusark avatar kshahar avatar licaon-kter avatar luisbandalap avatar metanota avatar paskal avatar seanponeil avatar tgwizard avatar the-lay avatar theli-ua avatar wlanowski avatar wyrihaximus avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sls's Issues

SLS can't scrobble the same track played consecutively in the default player

This is due to the fact that the default player only sends one* kind of event: "Something has changed". It is therefore impossible to determine if the track has been paused, resumed, started, stopped, started again, etc. Also, the intent doesn't contain the track duration, so the play state info cannot be deduced from that.

*there is another kind of intent sent when an entire playlist finishes. So, a playlist with only one track set on repeat works fine.

LG Optimus L3 not working

What steps will reproduce the problem?

  1. Use latest version of all supported players on LG Optimus L3.
  2. No apps detected by SLS

What is the expected output? What do you see instead?
Android player or others detected by SLS

Player Pro not working with android 4.0 update

Mike Smith wrote:

After downloading the most recent version of Simple Last.fm Scrobler (1.4) it doesn't seem to be detecting Player Pro like it used to. Please advise.

and:

The version before 1.4 worked for me, although I had to quit Player Pro and then open it again for SLFMS to detect it. I've tried reinstalling SLFMS, quitting Player Pro, and even rebooting the phone with no success. I just tried using the default Android music player and SLDMS doesn't seem to be detecting that for me either. I'm using a Galaxy Nexus with Android 4.0.4.

I don't have Player Pro, so it is difficult to test.

READ_EXTERNAL_PERMISSION sometimes required to access MediaStore

Stack trace from dev console:

java.lang.RuntimeException: Unable to start receiver com.adam.aslfms.receiver.AndroidMusicReceiver: java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/audio/media/1323 from pid=9818, uid=10135 requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission()
at android.app.ActivityThread.handleReceiver(ActivityThread.java:2236)
at android.app.ActivityThread.access$1500(ActivityThread.java:130)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1271)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/audio/media/1323 from pid=9818, uid=10135 requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission()
at android.os.Parcel.readException(Parcel.java:1425)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:188)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:140)
at android.content.ContentProviderProxy.query(ContentProviderNative.java:366)
at android.content.ContentResolver.query(ContentResolver.java:370)
at android.content.ContentResolver.query(ContentResolver.java:313)
at com.adam.aslfms.receiver.BuiltInMusicAppReceiver.readTrackFromMediaStore(BuiltInMusicAppReceiver.java:149)
at com.adam.aslfms.receiver.BuiltInMusicAppReceiver.parseTrack(BuiltInMusicAppReceiver.java:109)
at com.adam.aslfms.receiver.BuiltInMusicAppReceiver.parseIntent(BuiltInMusicAppReceiver.java:73)
at com.adam.aslfms.receiver.AbstractPlayStatusReceiver.onReceive(AbstractPlayStatusReceiver.java:79)
at android.app.ActivityThread.handleReceiver(ActivityThread.java:2229)
... 10 more

Android 4.0+

The app needs to be updated and rewritten slightly to work with Android 4 and up. There's a branch, android-12, where work on this should be done.

Songs scrobbling twice

I'm using the "Play Music" (Google Music) app on my Kindle Fire, and I'm seeing songs show up twice on both my libre.fm and last.fm profiles.

Crashes when a Shoutcast stream is played in Winamp

Copied bug from Google Code as requested [http://code.google.com/p/a-simple-lastfm-scrobbler/issues/detail?id=102]

What steps will reproduce the problem?

  1. Install Winamp 1.1.1 and Simple Last.fm scrobbler
  2. In Winamp - Play an audio file (say, .mp3) from the local system (SD card in this case)
  3. Navigate to Shoutcast options in Wimamp and play a stream

What is the expected output? What do you see instead?

Simple Last.fm should be able to scrobble based on the stream information available (Winamp displays song playing in the stream). Otherwise, if this feature of reading a Shoutcast stream information is yet unimplemented, Simple last.fm scrobbler should silently ignore.

Message displayed on device: The application Simple Last.fm Scrobbler (process com.adam.aslfms has stopped unexpectedly. Please try again.)

=== Stack trace ===
java.lang.RuntimeException: Unable to start receiver com.adam.aslfms.receiver.
WinampMusicReceiver: android.os.BadParcelableException: ClassNotfoundException when unmarshalling: com.nullsoft.winamp.model.ShoutCastStation

at ....
...
at com.adam.aslfms.receiver.BuiltInMusicAppReceiver.parseIntent(BuiltInMusicAppReceiver.java:71)
at com.adam.aslfms.receiver.AbstractPlayStatusReceiver.onReceive(AbstractPlayStatusReceiver.java:79)
at android.app.ActivityThread.handleReceiver(ActivityThread.java:1994)

What version of the product are you using? On what operating system and
what device?

Device: HTC Desire HD

=== details on feedback ===
Device ace
Build Id GRI40
Model Desire HD
Product htc_ace
SDK version 10
Release 2.3.3
Incremental version 87995

Please provide any additional information below.

Donations

Please add any common option for donating like paypal so people can thank you for your work.

Help for app configuration listings

Add a "Why is my app not showing up?" button to the Enabled Apps page that includes the menu options for known supported apps to remind users that they have to enable scrobbling on some (most?) music players

add support for Jetaudio

Hi, Jetaudio is one of the best Android music apps out there. Would it be possible to add support?

Best wishes,

TR

Support scrobbling streams

Any plans to support scrobbling streams? I listen to di.fm a lot, that would be cool. Last.fm app has streaming scrobbling

Feature: Add support for DeaDBeeF

Description of the new feature:
Please add support for DeaDBeeF, the only (as far as I know) open-source Android audio player that supports ReplayGain. :-)

It already supports the official last.fm scrobbler (or is it the other way round ?) as well as ScrobbleDroid.

DeaDBeeF website : http://deadbeef.sourceforge.net/

BadParcelableException

Several of these, for several versions:

java.lang.RuntimeException: Unable to start receiver com.adam.aslfms.receiver.WinampMusicReceiver: android.os.BadParcelableException: ClassNotFoundException when unmarshalling: com.nullsoft.winamp.model.ShoutCastStation
at android.app.ActivityThread.handleReceiver(ActivityThread.java:2138)
at android.app.ActivityThread.access$1500(ActivityThread.java:127)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1209)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4507)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.os.BadParcelableException: ClassNotFoundException when unmarshalling: com.nullsoft.winamp.model.ShoutCastStation
at android.os.Parcel.readParcelable(Parcel.java:1966)
at android.os.Parcel.readValue(Parcel.java:1854)
at android.os.Parcel.readMapInternal(Parcel.java:2094)
at android.os.Bundle.unparcel(Bundle.java:223)
at android.os.Bundle.getCharSequence(Bundle.java:1092)
at com.adam.aslfms.receiver.BuiltInMusicAppReceiver.getMusicAPI(BuiltInMusicAppReceiver.java:86)
at com.adam.aslfms.receiver.BuiltInMusicAppReceiver.parseIntent(BuiltInMusicAppReceiver.java:66)
at com.adam.aslfms.receiver.AbstractPlayStatusReceiver.onReceive(AbstractPlayStatusReceiver.java:79)
at android.app.ActivityThread.handleReceiver(ActivityThread.java:2131)
... 10 more

SONY S Tablet Players

Hi,

It would be great if you could add support to SONY S Player. Simples lastfm already support xperia player I don't know if SONY tablet player is so diferent.

Thanks!

Last.fm profile doesn't receive sent data, "Scrobble Now Button"

[email protected] wrote:

What steps will reproduce the problem?

  1. Open pre-installed music player for Xperia/Android and play some titles
  2. Send cached titles with simple lastfm scrobbler

What is the expected output? What do you see instead?
The app tells me that I am logged in with the right profile link and everything and displays my played songs in the statistics of lastfm but when I visit my profile the songs aren't there.

What version of the product are you using? On what operating system and
what device?
I am using the latest version and I have got a Sony Ericcson Xperia Arc S with Android 2.3 as operating system.

Poweramp 2.0.6 build 508

On my Galaxy S3, Poweramp is no longer detected and listed in SLS. Any ideas what's going on? What other information can I get for you?

SLS losing scrobbles on HTC One V

50% of tracks not being submitted to local cache or even not recognized like last playing.

Problem confirmed with both Hero Music Player and PowerAMP.

Chech plz.

License Problem

There is a problem with the license because it cannot be released under the Apache 2 license and still contain GPL code.

Remove wiki, add pages to repository

There are currently only two wiki pages, API and FAQ, and I think they'd fit better as (markdown) files in the repository. They would be much easier to maintain.

Feature: Add support for Skifta

Seeing as Skifta won't let me play music with a player other than its built-in one, it would be nice if sls could be made to work with it :)

Keep up the good work!

Iain

Doesn't detect or scrobble default musicapp. LG Optimus X2

I'm having problems with detecting and scrobbling music from the default music player through SLS. Also, it says Android music player (and other players) isn't installed, though it scrobbles other players. I've also tried using Scrobbledroid and the default Last.FM-app and that doesn't work either. Downloaded players like Winamp, Poweramp, PlayerPro and so on scrobbles just fine.

Model: LG-P990
Android version: 2.3.4
Baseband: 1035.21_20120521
Kernel: 2.6.32.9
LG version: LGP990-V20s

Apollo support

I wan't to have support for the android 4 apollo music player. I think that doesn't take much time to include.
I would do this by myself but I haven't any android/java programming skills to do that.
But I can be a tester (I'm using a desire z with an andromadus rom)
At the moment I cannot find the sourcecode of apollo

Best regards and thank you for this awesome program

Scrobbling to to other GnuFM servers

Libre.fm is built on software called GNU FM. It's designed to be compatible with Last.fm. Since SLS supports libre.fm, support for custom GNU FM servers could be added by simply adding in a URL parameter to LibreFM so that scrobbles could be submitted somewhere other than turtle.libre.fm.

Support for the JRTStudio's Android Music Player (com.jrtstudio.music)

Please add support for the JRTStudio's Android Music Player (com.jrtstudio.music).

If it have been already supported then please fix it because I have installed the player (from https://play.google.com/store/apps/details?id=com.jrtstudio.music) but the Scrobbler didn't find it and didn't list it in the "Enabled Apps" so scrobbling is not working for this player.

Other players are recognized well (Hero music player, Rocket player, etc.)

HTC Wildfire S, Android 2.3.5, not rooted.

Unit tests

Write unit tests (in the sls_test project included in the repository). This is tricky, so a lot of code might need to be rewritten just so it can be tested.

Most important to test are the Receivers and the Services.

add support for Rhapsody Android (2.0+)

SLS interfaced with Rhapsody Beta, but it does not seem to be compatible with Rhapsody 2.0. It would be excellent to have support extended to the new version.

Thanks.

Jeff

Add support for Sony Walkman app

Hi,

It would be great if you could add support for the Walkman app Sony installs by default on the Xperia S (and probably other Sony-Ericsson devices).

thx

add support for Plex

I would like to be able to scrobble songs from the Plex media center when it is playing music.

Look over the database connection usage

Does each activity really need their own database reference/connection? Wouldn't it suffice with one for the application and one for the server? What is the "correct" way of doing this?

Null Pointer Exception when nothing is being scrobbled

08-15 11:25:58.478: E/AndroidRuntime(14968): FATAL EXCEPTION: main
08-15 11:25:58.478: E/AndroidRuntime(14968): java.lang.RuntimeException: Unable to start service com.adam.aslfms.service.ScrobblingService@4253ed10 with null: java.lang.NullPointerException
08-15 11:25:58.478: E/AndroidRuntime(14968): at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2507)
08-15 11:25:58.478: E/AndroidRuntime(14968): at android.app.ActivityThread.access$1900(ActivityThread.java:130)
08-15 11:25:58.478: E/AndroidRuntime(14968): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1292)
08-15 11:25:58.478: E/AndroidRuntime(14968): at android.os.Handler.dispatchMessage(Handler.java:99)
08-15 11:25:58.478: E/AndroidRuntime(14968): at android.os.Looper.loop(Looper.java:137)
08-15 11:25:58.478: E/AndroidRuntime(14968): at android.app.ActivityThread.main(ActivityThread.java:4745)
08-15 11:25:58.478: E/AndroidRuntime(14968): at java.lang.reflect.Method.invokeNative(Native Method)
08-15 11:25:58.478: E/AndroidRuntime(14968): at java.lang.reflect.Method.invoke(Method.java:511)
08-15 11:25:58.478: E/AndroidRuntime(14968): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
08-15 11:25:58.478: E/AndroidRuntime(14968): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
08-15 11:25:58.478: E/AndroidRuntime(14968): at dalvik.system.NativeStart.main(Native Method)
08-15 11:25:58.478: E/AndroidRuntime(14968): Caused by: java.lang.NullPointerException
08-15 11:25:58.478: E/AndroidRuntime(14968): at com.adam.aslfms.service.ScrobblingService.onStart(ScrobblingService.java:84)
08-15 11:25:58.478: E/AndroidRuntime(14968): at android.app.Service.onStartCommand(Service.java:450)
08-15 11:25:58.478: E/AndroidRuntime(14968): at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2490)
08-15 11:25:58.478: E/AndroidRuntime(14968): ... 10 more

It looks like the Intent being passed to onStartCommand() is null somewhere?

Winamp support

Hi, after downloading v1.4.4 the app stopped seeing Winamp and wouldn't scrobble from it. I also tried JRTStudio app and it worked. Thanks

add support for DS Audio (Synology NAS Music Player)

DS audio directly streams from your NAS at home and allows to access your music library from everywhere, like your own music cloud. The app doesn't feature last.fm support itself and the SLS doesn't recognize DS audio yet.

App in playstore: https://play.google.com/store/apps/details?id=com.synology.DSaudio&hl=de
Website of synology: http://www.synology.com/
Synology Wiki: http://forum.synology.com/wiki/index.php/Home

They also host a lot of forums, in which many people ask for last.fm support in the apps. SLS would be a great answer at least for the android users! Synology also offers a lot of support and the community itself is also pretty helpful.

Thumbs up man, you're doing some highly appreciated work out there!

Update URL for Last.fm

On Last.fm, clicking the "Simple Last.fm Scrobbler" link seen when someone is using it to scrobble goes to the Google page, not this github one.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.