Code Monkey home page Code Monkey logo

Comments (4)

FoxxMD avatar FoxxMD commented on September 15, 2024

Hi! Yes this a feature I have been considering implementing. It should be pretty easy to implement with the current code as a CLI command (since Maloja has its own import workflow) and I have also been considering how I could implement it in-situ for user convenience.

However there are also legal issues with this feature to consider:

  • All of the self-hosted sources (Plex, Jellyfin, subsonic) are a non-issue since the user owns the application and data
  • Last.fm has a lenient TOS that explicitly allows any usage of your own data (section 2.3), so also no problem there
  • But Spotify is dubious...
    • Section IV 1. g. -- prohibits indexing or creating databases from metadata/content
    • Section IV 1. h. -- allows an exception for transferring user's personal/metadata to another service
    • Section IV 3. d. -- prohibits offering metadata as a standalone service

I believe in its current form multi-scrobbler complies with all of these restrictions because they are all contingent on this statement at the end of most of them

[unless] strictly necessary to offer and operate your [application]

Because multi-scrobbler is only scrobbling -- only registering newly listened to tracks -- its not using any other content than what it was designed for and definitely doesn't allow any other kind of misuse (indexing/caching/scraping) because of this limited behavior.

So, I'm not against adding scraping for sources but I want to make sure I approach it in a responsible manner so that I don't have angry users asking why their accounts have been banned as well having spotify sending me cease-and-desist letters for what is supposed to be a fun project.

from multi-scrobbler.

PuppyLover101 avatar PuppyLover101 commented on September 15, 2024

Thank you for the reply! For your Spotify point, IANAL but as per your comments, this is only a scrobbler and does none of the database generating / indexing itself. Seems like we are in the clear.. but you never know.

Looking forward to the enhancement, if time and your ToS tolerance abides.

For the implementation side, I would assume Spotify returns the time of play? In order to not have mismatches, I reckon we could just have it save TimeOfPlay of each track in order to not have duplicates -- but this may need a complete overhaul..

Thank you!

from multi-scrobbler.

FoxxMD avatar FoxxMD commented on September 15, 2024

Yes spotify returns a timestamp of when the track was played.

multi-scrobbler already does a pre-scrobble check on the client (Maloja, last.fm) to see if the track has already been scrobbled at that timestamp.

Implementation-wise I just need to code out letting the user determine a time range to scrape, paging source results, and maybe a stateful counter to keep track of progress in case of interruption/resume.

from multi-scrobbler.

FoxxMD avatar FoxxMD commented on September 15, 2024

Not sure when this was added but there is an official way to export all of your data from Spotify and import it into Maloja.

As of right now I'm throwing this in the "out of scope" bin for multi-scrobbler. It's still dubious as to whether this violates the Spotify TOS and it's a technical feat that doesn't really fit into the design of MS as it stands IE needing a way to track/resume incremental progress with a DB/persistent file, rate limiting, overwrite/duplicate behavior, etc...

If someone would like to take this feature on I'd be willing to discuss it and re-open this.

from multi-scrobbler.

Related Issues (20)

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.