Giter Site home page Giter Site logo

aucejito / musictransfer Goto Github PK

View Code? Open in Web Editor NEW

This project forked from spotify2tidal/spotify_to_tidal

0.0 0.0 0.0 45 KB

A command line tool for importing your Spotify playlists into Tidal

License: GNU Affero General Public License v3.0

Python 96.79% Mustache 3.21%

musictransfer's Introduction

A command line tool for importing your Spotify playlists into Tidal

Installation

Clone this git repository and then run:

python3 -m pip install -r requirements.txt

Setup

  1. Rename the file example_config.yml to config.yml
  2. Go here and register a new app on developer.spotify.com.
  3. Copy and paste your client ID and client secret to the Spotify part of the config file
  4. Copy and paste the value in 'redirect_uri' of the config file to Redirect URIs at developer.spotify.com and press ADD
  5. Enter your Spotify username to the config file

Usage

To synchronize all of your Spotify playlists with your Tidal account run the following

python3 sync.py

This will take a long time because the Tidal API is really slow.

You can also just synchronize a specific playlist by doing the following:

python3 sync.py --uri 1ABCDEqsABCD6EaABCDa0a

See example_config.yml for more configuration options, and sync.py --help for more options.

musictransfer's People

Contributors

timrae avatar aucejito avatar markettes avatar vaosilva avatar theedgeofrage avatar vkolotov avatar big-mak avatar

musictransfer's Issues

Run periodically the script

User Story Template

As a developer,
I want to enable the option to run periodically the initial script,
So that we don't have to run the script manually so many times.

Definition of Ready:

  • Discussion of when it will be triggered is closed and documented in the acceptance criteria (no webhooks, in spotify a playlist has a snapshot_id attribute โ†’ Use of cron jobs

Acceptance Criteria:

  • The action will always be performed periodically, with the same frequency.
  • The job will execute the main command python sync.py --uri 1ABCDEqsABCD6EaABCDa0a

Additional Context:

[Provide any additional information or context that might be relevant to the implementation task.]

Definition of Done:

  • Code is implemented and tested
  • Documentation is updated (if applicable)
  • Code has been reviewed and approved
  • Task is closed in GitHub

Solve conflicts in full sync

As a user,
I want to solve the conflicts found when synchronizing a playlist,
So that the user can choose which action to perform.

Acceptance Criteria:

  • TODO: The user can choose which songs will be added manually, one by one.
  • TODO: The user can decide to keep the latest updated playlist.
  • TODO: So many doubts...

Additional Context:

Definition of Done:

  • Unit tests are done
  • Full manual test with edge cases is performed (conflicts, not user-created playlists from Spotify to Tidal and vice-versa)
  • Document the feature WHERE?

Implement full syncronization

As a user,
I want to have the same playlists in my Spotify account and Tidal account at the same time
so that whenever I update one track in one of the platforms, it is also reflected in the other one.

Acceptance Criteria:

  • When a user updates a playlist (adds or deletes a song), it is reflected on both platforms every time the script is run.
  • If a playlist is not possible to be updated (not user-created), it will be updated just in the allowed direction (Spotify -> Tidal or vice-versa)
  • In case of a conflict, which playlist should we consider? First iteration: To keep a union of both playlists (no song will be deleted unless it is deleted from both sides or unless the playlist is not user-created; in this case, we always care about the creator's decision)

Additional Context:

Definition of Done:

  • Unit tests are done
  • Full manual test with edge cases is performed (conflicts, not user-created playlists from Spotify to Tidal and vice-versa)
  • Document the feature WHERE?

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.