scdl icon indicating copy to clipboard operation
scdl copied to clipboard

Add -I <Interval>, Remove -o <offset>, and Refactor -n

Open Tjerbor opened this issue 1 year ago • 2 comments

Based on this issue.

The Interval option allows to download a subset of a Playlist or all User options. It is compatible with all other options including --download-archive, --sync, and -n.

It can be used like this: scdl -l https://soundcloud.com/one-thousand-and-one/sets/playlist1 -I 10-36 scdl -l https://soundcloud.com/one-thousand-and-one/sets/playlist1 -I -36 scdl -l https://soundcloud.com/one-thousand-and-one/sets/playlist1 -I 10- scdl -l https://soundcloud.com/one-thousand-and-one/sets/playlist1 -I 10

The interval bounds are inclusive. Indexing starts from 1. The option supports left- and right-unbounded intervals. Since a right-unbounded interval equals a skip function, the offset option can be safely removed. If only one number without hyphen is given, then the single track at that index will be downloaded.

The original recency sorting -n has been refactored to just -n to avoid clashing track limits.

Some tests are currently broken.

Tjerbor avatar Nov 05 '24 03:11 Tjerbor

I quite like this overall, except of the syntax. I would just use a more human way:

scdl -l https://soundcloud.com/one-thousand-and-one/sets/playlist1 -I 10-36
scdl -l https://soundcloud.com/one-thousand-and-one/sets/playlist1 -I -36
scdl -l https://soundcloud.com/one-thousand-and-one/sets/playlist1 -I 10-
scdl -l https://soundcloud.com/one-thousand-and-one/sets/playlist1 -I 123 # for only one track. 

With the other refactoring going on, I am not sure if this will ever get merged.

cdamian-sh avatar Jul 08 '25 07:07 cdamian-sh

scdl -l https://soundcloud.com/one-thousand-and-one/sets/playlist1 -I 10-36
scdl -l https://soundcloud.com/one-thousand-and-one/sets/playlist1 -I -36
scdl -l https://soundcloud.com/one-thousand-and-one/sets/playlist1 -I 10-
scdl -l https://soundcloud.com/one-thousand-and-one/sets/playlist1 -I 123 # for only one track. 

I changed it to this syntax and also added the support to download a single track as shown in your example. You can use my fork in the meantime.

With the other refactoring going on, I am not sure if this will ever get merged.

I switched to yt-dlp some months ago because of this.

Tjerbor avatar Jul 09 '25 15:07 Tjerbor