Giter VIP home page Giter VIP logo

eavesdrop.fm's Introduction

eavesdrop.fm

Netlify Status

Submit your Plex music listening data to ListenBrainz

What is it?

Born out of a desire to contribute my listening data to the ListenBrainz project, eavesdrop.fm is a web service that takes Plex webhook payloads and submits them to ListenBrainz via the ListenBrainz API.

How do I use it?

Head to eavesdrop.fm and follow the step-by-step guide to get started.

Developing

Prerequisites

This project uses Volta to manage the required node/npm version. Check package.json for the current requirements.

Installation

  1. Clone this repository
  2. Run npm run dev to start a development server

Features

eavesdrop.fm is built with SvelteKit and consists of two primary user-facing features:

  1. A front-end to generate the unique webhook URL. It can be found in src/routes/index.svelte.
  2. A webhook listener, implemented as a SvelteKit endpoint. It's found at src/routes/index.ts.

eavesdrop.fm's People

Contributors

dependabot-preview[bot] avatar dependabot[bot] avatar simonxciv 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

Watchers

 avatar  avatar  avatar

eavesdrop.fm's Issues

Ability to ignore audiobook libraries

Since audiobook plays are not really in the purview of "scrobbling" services (at least Listenbrainz), I think it'd be a great addition to allow users to filter out certain libraries from their server, to not submit listen data.

Write a better README

The current readme isn't useful at all. Make a more actionable, friendly, and helpful README file.

Not Posting to ListenBrainz

Hi. Just noticed today that this stopped listening for my plex plays back in March 2022.
I removed the webhook and started fresh but no luck. I even re generated a token from listenbrainz. Anything I should try differently, I followed each step and did the ones on the FAQ also.

ListenBrainz tokens are stored unobscured in Plex Media Server logs

The issue

A ListenBrainz user token allows activities to be performed on behalf of a ListenBrainz user via the API. As such, it should be kept hidden where possible.

Under Plex Media Server's default logging settings, webhook events (including full URLs) are stored within PMS logs. If these logs are shared publicly, or sent to a Plex employee for example, user tokens can be unintentionally disclosed.

The solution

Plex obscures its own secrets by string matching the word token, among others. To resolve this issue, we'll need to update the URL structure to something that Plex will obfuscate for us. We're replacing the id parameter with token to resolve this issue.

Anybody using the old id parameter will need to replace their webhook as soon as possible to ensure their logs no longer contain the unobscured token.

This will be a breaking change, so a 1 month grace period will be provided to allow users time to migrate to the new URL structure. After this grace period, webhook events will not be processed unless they're using the new token parameter.

Sincere apologies for any inconvenience caused.

tl;dr

Your secret ListenBrainz token may have been unintentionally disclosed if you shared your Plex Server logs. To resolve this moving forward, we're making a change to the way we structure our webhook URLs. You'll need to update your URL if you created yours on or before 2020-09-26.


If you're concerned that you've disclosed your ListenBrainz token by sharing your Plex logs, resetting your token at listenbrainz.org/profile/, and then following the steps at eavesdrop.fm to reconfigure your webhook will protect you from unauthorised access.

Please reach out to me if you have any questions or concerns. I'm @SimonXCIV on Twitter and in the Plex forums.

Webhook: Error delivering payload

I have Plex submitting play information to both last.fm and listenbrainz, and I recently noticed a large disparity in the number of track plays being reported by both services (far less by listenbrainz).

I'm seeing the following error in my Plex logs related to the eavesdrop.fm webhook I have setup:

Webhook: Error delivering payload to https://eavesdrop.fm/?token=xxxxxxxxxxxxxxxxxxxx90d-5d87ff174de9&user=t4exanadu: 500

Let me know if I can provide more information. "Error delivering payload" isn't especially specific. Will debug logging in Plex increase the verbosity of webhook activity logging?

Possible for 2 Listens to Be Recorded When Playing TIDAL Content from Plex

When playing TIDAL content that has been added to a local music library, 2 separate events will be sent via webhooks and can result in 2 listens being recorded for the same song.

An event is sent by PMS when the progress during listening hits 50%. An event will also be sent by the "Plex media cloud server" when playback progress is 100%.

Is it possible to have an option for Eavesdrop.FM to filter out events sent from the cloud server? There may be a better way to handle this as some users may want these plays to be recorded if listening to TIDAL content within Plex that has not been added to their local library.

Screenshot 2021-07-19 10 26 59 AM

Docker Image

Hi!

I am wondering if there are any plans for a docker image?

verifying plex username

I set up my webhook and believe I checked all the necessary boxes. However, nothing is being logged to my account. I wonder if:

  1. I am entering my username correctly
  2. There could be issues when there's a space in the username

My plex username is "firstname lastname"
Screen Shot 2020-10-02 at 9 55 54 AM
Is this exactly how it should be entered in the textbox to create the webhook?

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.