Music Download
Download audio as mp3 (or m4a/opus/flac) from almost any site yt-dlp supports — YouTube,
SoundCloud, Bandcamp, Mixcloud, and ~1,800 others — given a track, album, or playlist URL, or a
file listing many of them.
Inputs
| Input | Required | Default | Description |
|---|---|---|---|
url |
yes* | — | Track / album / playlist URL |
urlsFile |
yes* | — | Path to a text file of URLs, one per line — takes precedence over url |
outputDir |
yes | — | Folder to download into (created if missing) |
format |
no | mp3 |
mp3, m4a, opus, flac |
quality |
no | 0 |
0 = best … 9 = smallest |
maxDownloads |
no | 50 |
Hard cap on files per run (safety net against endless URLs). 0 = no cap |
cookies |
no | — | Path to a cookies.txt for private / age-restricted content. Blank = anonymous |
* one of url / urlsFile is required.
A list of URLs instead of one
Point urlsFile at a plain text file and keep your queue there — edit the file, re-run the tool
(or let a schedule run it):
# my-music.txt — blank lines and #-comments are ignored
https://www.youtube.com/playlist?list=PLxxxxxxxx
https://soundcloud.com/artist/track
https://artist.bandcamp.com/album/something
Each URL is fetched in turn with the same guards; one bad URL doesn't stop the rest — failures are
listed in result. maxDownloads is a budget across the whole run, not per URL.
Behaviour
- Self-updates yt-dlp into
~/.cache/intouch-ytdlp(a stale yt-dlp 403s on today's YouTube). - Incremental — keeps a
.download-archive.txt, so re-runs only fetch newly-added items. Schedule it to keep a playlist mirrored. - Mix/Radio guard — a YouTube Mix/Radio URL (
list=RD…,start_radio=1) is auto-generated and endless; for those this tool downloads only the seed video, not the infinite mix. A real playlist (list=PL…,OLAK…) downloads in full.maxDownloadsis a second backstop. - Reports the real new-file list and count (never a false success).
Private / age-restricted content
There is no username/password login for YouTube via yt-dlp — auth is via cookies. Export a
cookies.txt from a logged-in browser (e.g. the "Get cookies.txt LOCALLY" extension), place it on
the server, and pass its path as cookies. For a YouTube playlist you own, setting it to Unlisted
avoids cookies entirely. Note: cookies are your live session (sensitive) and expire as YouTube
rotates them.
Requires
ffmpeg on the host for audio extraction. (yt-dlp is fetched automatically.)
Publishes
result— human-readable summarynewFiles— list of newly downloaded filenamescount— number of new files
Publishes
The keys a later task may reference as {{taskName.key}}. Referencing anything not listed here resolves to nothing at run time.
countnewFilesresult
Input Properties
Every property this tool accepts, from its own tool.iml.
| Property | Type | Required | Default | Description |
|---|---|---|---|---|
url |
string | no | — | Track/album/playlist URL (YouTube, SoundCloud, Bandcamp, ...). Required unless urlsFile is set. |
urlsFile |
string | no | — | Path to a text file of URLs, one per line (# comments and blank lines ignored). Takes precedence over url — edit the file, re-run the tool. |
outputDir |
string | yes | — | Folder to download into (created if missing). |
format |
string | no | mp3 |
Audio format: mp3, m4a, opus, flac. |
quality |
string | no | 0 |
Audio quality: 0=best .. 9=smallest. |
maxDownloads |
string | no | 50 |
Safety cap on how many files to pull (guards against endless YouTube Mix/Radio URLs). 0 = no cap. |
cookies |
string | no | — | Path to a cookies.txt (exported from a logged-in browser) for private/age-restricted content. Blank = anonymous. |