Collects tracks you haven't heard yet from SoundCloud charts and downloads them using yt-dlp. Uses SQLite database engine and Python multiprocessing library.
SoundCloud has charts that are separated by track genre. Collectively, they are playlists. Playlists are updated once a day: a dozen songs are usually added to the tops, and many times more to the new ones.
The idea is to have a program that will download from these playlists only those tracks that the user has not yet heard. It becomes something like a semi-automatic library, where the user only has to sift out the tracks he likes.
scollector does not require authorization and does its job much faster than any single-threaded scripts.
One of the best ways to safely install and use python packages on any OS is to use pipx:
pipx
package on Debian, Ubuntu, Mint, Kali, Fedora, Solus, EPELpython-pipx
package on Arch Linux, Manjaro
Other GNU/Linux distros, Windows, macOS:
python -m pip install --user pipx
python -m pipx ensurepath
If you want to use pip instead, I strongly discourage you from doing so, as it almost always results in package conflicts on the system.
git clone https://github.com/meequrox/scollector.git
cd scollector
pipx install .
You also need to have ffmpeg
installed for the thumbnail embedding to work.
I recommend using distro package manager on GNU/Linux, brew on macOS, choco on Windows.
pipx remembers which directory scollector was installed from, so you can just do
# Cloned repo
cd scollector
git pull
pipx upgrade scollector
The most convenient way to use the program is to create an alias or shortcut.
For example: alias scc='scollector --country GB -vn --cleanup -o ~/Music --charts top trending --genres all-music world rock'
# Print help message
./scollector -h
# Common use
./scollector --country US --charts top --genres world --reset
./scollector --country FR --charts trending top --genres rock deephouse hiphoprap --cleanup -n
./scollector --country RU --genres house metal --charts trending -o ~/Music -r 80M -d 1000 --cleanup
Find codes for --country
option here. Note that there are some codes for which playlists do not exist. In this case, you will get Unable to download JSON metadata: HTTP Error 404: Not Found
message from yt-dlp.
Charts to choose from: top
, trending
.
Genres to choose from: all-music
, alternativerock
, ambient
, audiobooks
, business
, classical
, comedy
, country
, danceedm
, dancehall
, deephouse
, disco
, drumbass
, dubstep
, electronic
, entertainment
, folksingersongwriter
, hiphoprap
, house
, indie
, jazzblues
, latin
, learning
, metal
, newspolitics
, piano
, pop
, rbsoul
, reggae
, reggaeton
, religionspirituality
, rock
, science
, soundtrack
, sports
, storytelling
, techno
, technology
, trance
, trap
, triphop
, world
.
scollector creates a new directory named scollector_dl in destination directory, so it won't harm your existing files.
If --output
option is not specified, the current working directory is used as destination directory.