Skip to content

Sliim/soundcloud-syncer

Repository files navigation

Soundcloud Syncer | https://img.shields.io/pypi/v/soundcloud-syncer.svg http://secure.travis-ci.org/Sliim/soundcloud-syncer.png?branch=master

Soundcloud-syncer is a tool to synchronize soundcloud user’s favorites and tracks locally.

Requirements

Python version

  • Python 3.x

Packages dependencies

  • stagger (for id3 tag support)
  • pydub (for mp3 conversion)
  • python-dateutil
  • python-magic

To run tests you need some packages:

  • tox
  • mock
  • nose
  • pep8
  • coverage (optional)

Installation

The recommended way to install soundcloud-syncer is from Pypi.

Pypi

pip install soundcloud-syncer
sc-syncer --help

Github

git clone https://github.com/Sliim/soundcloud-syncer.git
cd soundcloud-syncer
scripts/sc-syncer --help

Basic usage

  • Download user’s likes:
sc-syncer -u USER_TO_SYNC -o OUTPUT_DIRECTORY
  • Download user’s tracks:
sc-syncer -u USER_TO_SYNC -o OUTPUT_DIRECTORY -t
  • Download user’s playlists:
sc-syncer -u USER_TO_SYNC -o OUTPUT_DIRECTORY -p
  • You can download tracks recursively:
sc-syncer -u USER_TO_SYNC -o OUTPUT_DIRECTORY -t -r
  • To set offset and limit for tracks list:
sc-syncer -u USER_TO_SYNC -o OUTPUT_DIRECTORY -L LIMIT -O OFFSET

/!\ Limit can’t be greater than 200.

Ignoring tracks

You can ignore some tracks you don’t want to sync locally.

To do this create a file in OUTPUT_DIRECTORY named .ignore. Each track in this file will be ignored.

  • Example:

To ignore https://soundcloud.com/trapmusic/vexed-goodbye-by-j-nitrous add in .ignore file:

trapmusic/vexed-goodbye-by-j-nitrous

Tag support

soundcloud-syncer support id3 tag from version 0.2.

It writes ID3 tag after each downloaded mp3 file. You can disable this feature with --without-tag option:

sc-syncer -u USER_TO_SYNC -o OUTPUT_DIRECTORY --without-tag

You can re-write mp3 tag with sc-tagger tool. This tool expect a file or directory as first argument.

File’s name format must be “{id}-{permalink}.mp3” to be tagged. Track ID is necessary to retrieve data from soundcloud’s API.

  • for a file, it will write id3 tag if it’s a mp3 file.
sc-tagger /path/to/1337-file.mp3

You can specify track ID for a single file:

sc-tagger /path/to/file.mp3 --id 1337
  • for a directory, sc-tagger find all mp3 file and tags them (–id option is not supported).
sc-tagger /path/to/directory/

It may be useful to update tracks downloaded with soundcloud-syncer 0.1!

MP3 conversion

You can convert non-mp3 files with `–convert` option. This feature requires pydub package that depends to `ffmpeg` or `avconv`. See pydub’s readme for more informations.

To convert non-mp3 files after each download:

sc-syncer -u USER_TO_SYNC -o OUTPUT_DIRECTORY --convert

This will create a backup directory at `OUTPUT_DIRECTORY/backups/` where will be placed original files before conversion, nothing is deleted.

Features

  • Download user’s favorites / likes tracks list.
  • Download user’s tracks list.
  • Download user’s playlists.
  • Possibility to set offset and limit for tracks list.
  • Auto find client_id when not passed to sync script.
  • Possibility to ignore some tracks to sync.
  • Recursive download.
  • ID3 Tag support.
  • MP3 conversion.

License

See COPYING file