Comments (4)
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.
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.
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.
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)
- multi-scrobbler documentation issue HOT 2
- Add Quobuz as a source HOT 2
- Double scrobbles occur when backlog is processed HOT 49
- configuration.md links to explore schema are broken HOT 1
- Missing tracks from spotify when you play part of a song, pause, and come back later HOT 5
- BASE_URL Ignoring Path Params HOT 4
- Explore changing base docker distro HOT 13
- Implement airplay monitoring
- [Question] Images HOT 2
- Simply doesnt work for Navidrome (Subsonic) HOT 5
- Maloja randomly goes idle and cannot be used HOT 13
- Maloja conflicts cause an error HOT 3
- Randomly terminated HOT 3
- Last.fm scrobbles are not being identified. HOT 5
- Last.fm api calls hang forever after some time HOT 20
- Error: Your current platform "freebsd" and architecture "x64" combination is not yet supported by the native Rollup build HOT 8
- Authentication error trying to setup Nextcloud Music app as subsonic source HOT 2
- [WebScrobbler] Can't use slugs HOT 7
- refactor: replace unmaintained dbus-next HOT 1
- Node debugger crashes with SIGSEGV in mocha tests when evaluating variable in static class function HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from multi-scrobbler.