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:
pipxpackage on Debian, Ubuntu, Mint, Kali, Fedora, Solus, EPELpython-pipxpackage on Arch Linux, Manjaro
Other GNU/Linux distros, Windows, macOS:
python -m pip install --user pipx
python -m pipx ensurepathIf 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 scollectorThe 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 --cleanupFind 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.
