{"id":18005579,"url":"https://github.com/eikek/attentive","last_synced_at":"2026-04-28T11:03:48.893Z","repository":{"id":141852484,"uuid":"188313330","full_name":"eikek/attentive","owner":"eikek","description":"A personal scrobble daemon.","archived":false,"fork":false,"pushed_at":"2020-05-24T08:17:17.000Z","size":111,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-04T10:46:51.386Z","etag":null,"topics":["elm","fs2","http4s","music","scala","scrobble-server","scrobbling"],"latest_commit_sha":null,"homepage":"","language":"Scala","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eikek.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-05-23T22:09:30.000Z","updated_at":"2020-05-24T08:17:19.000Z","dependencies_parsed_at":null,"dependency_job_id":"7665544d-5b5c-470d-abbf-41b084dc6a58","html_url":"https://github.com/eikek/attentive","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/eikek/attentive","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eikek%2Fattentive","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eikek%2Fattentive/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eikek%2Fattentive/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eikek%2Fattentive/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eikek","download_url":"https://codeload.github.com/eikek/attentive/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eikek%2Fattentive/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32377599,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-28T09:24:15.638Z","status":"ssl_error","status_checked_at":"2026-04-28T09:24:15.071Z","response_time":56,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["elm","fs2","http4s","music","scala","scrobble-server","scrobbling"],"created_at":"2024-10-30T00:20:24.051Z","updated_at":"2026-04-28T11:03:48.877Z","avatar_url":"https://github.com/eikek.png","language":"Scala","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Attentive\n\nA personal scrobble daemon.\n\nThis project is a minimal scrobble server that can collect what songs\nyou are listening to. It's similiar to services like libre.fm or\nlast.fm, but without the social/community thing. The idea of attentive\nis to be a simple and lightweight scrobble daemon that could run on a\nraspberry pi or similiar devices at home.\n\n## Features\n\n- Store \"now-playing\" and \"submissions\" in a database.\n- Support for multiple databases: MariaDB, PostgreSQL, SQLite and H2\n- Web application to see your scrobbles and manage accounts\n\n## Usage\n\nYou must have Java installed. There are ZIP files in the Releases\nsection. Unpack the file and change the configuration to your\nneeds. Then start the script in the `/bin` folder.\n\nConfigure your scrobble client to connect to the attentive server. The\nscrobble url is at path `/scrobble`. So with the default\nconfiguration, it would be `http://localhost:8771/scrobble`.\n\nThe webapp is then at `http://localhost:8771/app/index.html`.\n\nYou can browse the generated REST documentation at `http://localhost:8771/app/doc`.\n\nFor example, here is a config snippet for\n[mpdscribble](https://github.com/MusicPlayerDaemon/mpdscribble):\n\n```\n[mpdscribble]\n## The connection to MPD\nhost = 192.168.100.12\nport = 6600\n\n[attentive]\nurl = http://localhost:8771/scrobble\nusername = john\npassword = john\njournal = ./attentive.journal\n```\n\n## Screenshot\n\n![Screenshot](screenshot.jpg)\n\n## Building\n\nThe build tool is [sbt](https://scala-sbt.org). Java 8 end Elm 0.19\nare required. Then build it with this command:\n\n```\nsbt make-pkg\n```\n\nThis creates a `.deb` file in `target/` and a `.zip` file in\n`target/universal` folder.\n\n## Configuration\n\nYou can pass an argument to the executable which will be used as the\nconfiguration file. For details about the format, see [its\ndocumentation](https://github.com/lightbend/config/blob/master/HOCON.md).\nThe default config is below.\n\n\n### Default Configuration\n\n```\nattentive {\n  # A name that is displayed in the web application.\n  app-name = \"Attentive\"\n\n  # The base url this app is deployed\n  base-url = \"http://localhost:8771\"\n\n  # A secret used to encrypt cookie data. If empty a random value is\n  # generated at application start.\n  server-secret = \"\"\n\n  # The web server binds to this address.\n  bind {\n    host = \"0.0.0.0\"\n    port = 8771\n  }\n\n  # Database settings\n  jdbc {\n    # The URL to the database. By default a file-based database is\n    # used. It should also work with mariadb and postgresql.\n    #\n    # Examples:\n    #    url = \"jdbc:mariadb://192.168.1.172:3306/attentive\"\n    #    url = \"jdbc:postgresql://localhost:5432/attentive\"\n    #    url = \"jdbc:h2:./target/attentive.db\"\n    #    url = \"jdbc:sqlite:./target/attentive-sqlite.db\"\n    url = \"jdbc:h2:./target/attentive.db\"\n\n    # User and password for connecting to the database.\n    user = \"sa\"\n    password = \"\"\n\n    # The driver class name.\n    # - H2: org.h2.Driver\n    # - MariaDB: org.mariadb.jdbc.Driver\n    # - PostgreSQL: org.postgresql.Driver\n    # - SQLite: org.sqlite.JDBC\n    driver = \"org.h2.Driver\"\n    poolsize = 10\n  }\n\n  auth {\n    # The time a login token is valid\n    token-valid = 3 minutes\n\n    # The time a session cookie is valid\n    session-valid = 6 hours\n  }\n\n  registration {\n    # Registration of new accounts may be one of:\n    # - open: Everybody can create new accounts.\n    # - closed: No one can create new accounts; registration is disabled.\n    # - invite: Registration is possible only with the correct invitation key.\n    mode = \"closed\"\n\n    # The \"super\" invitation password used to generate new invitations.\n    # If empty, generating invitation keys is not possible.\n    invitation-key = \"\"\n\n    # How long a generated invitation key is valid.\n    invitation-valid = 6 days\n  }\n\n  stats {\n    # How long statistic values are cached. Longer times results in\n    # less db queries but more stale values.\n    cache-time = 3 minutes\n  }\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feikek%2Fattentive","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feikek%2Fattentive","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feikek%2Fattentive/lists"}