Skip to content
This repository has been archived by the owner on Feb 5, 2021. It is now read-only.
/ DeezerSync Public archive

Application to Sync Soundcloud & Spotify Playlists to Deezer

License

Notifications You must be signed in to change notification settings

BackInBash/DeezerSync

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DeezerSync

Application to Sync Playlists to Deezer

Supported Platforms

  • SoundCloud
  • Spotify

Supported Operating Systems

  • Windows
  • Linux (x86 & arm)
  • macOS

Used Libraries

Build with dotNET Core 3.1 LTS & VS 2019

Getting Started

To run this Program a config.json config file is needed in the working directory. The config.json requires the following entries:

{
  "SoundCloud_Username": "",    // SoundCloud User Name (These are the playlists to sync)
  "SoundCloud_ClientID": "",	  // SoundCloud ClientID (leave empty for automatic setup)
  "Deezer_Secret": "",          // Login to Deezer and search in the dev console for an arl Cookie
  "Spotify_Username" : "",      // Spotify User Name (These are the playlists to sync)
  "Spotify_Secret" : ""         // Spotify Bearer API Key
}

Application Architecture

"arch"

The Search System

The Search Engine is splited in two parts:

  1. The Deezer Search:

    It´s to get a list of songs out of Deezer that might contains the right song.

  2. The Result Search:

    It´s to find the right song in the Deezer search results.

The perfect Search flow should look like this:

  1. Execute Deezer Search Stage 1
  2. Gets a valid result with multiple tracks
  3. Execute Result Search Stage 1 to find the right song
  4. Return song ID

Note: A Deezer Search Stage triggers all Result Search Stages

The Deezer Search:

The Deezer Search is build up in three stages. Every stage is a indipendent search query you have to get an empty result in order to jump through the stages.

  1. Prepare search query remove unsearchable chars such as (& < > ( ) [ ]) and detect if the song is a remix and save the remix artist as an extra artist

  2. Artist changes, split song title at first - char and replace it with the possible remix artist or with the SoundCloud user name.

  3. Search only with song name (without the artist name) and duration

Stage 1 Stage 2
"Stage1" "Stage2"

The Result Search

"ResultSearch"

Stage 1 Stage 2
"Stage1" "Stage2"

DeezerSync

Is the entrypoint CLI Application

DeezerSync.DeezerAPI

API Client for Public and Private Deezer API

DeezerSync.Core

Contains all Data Models for Objects, Data manipulation and compare logic

DeezerSync.IntegrationTest

Contains all Integraion Tests to validate changes on success rate

DeezerSync.MusicProvider

Contains logic for all Music Providers (SoundCloud, Spotify, ...) and an interface to cast all data to a standard object.

DeezerSync.Test

Contains all xUnit Test for the whole Project.