shua
TypeScript icon, indicating that this package has built-in type declarations

3.1.1 • Public • Published

Shua

Shua is a common file downloader implemented by Node.js. Inspired by Minyami download core.

The target of Shua is to provide a way to download thousands of small files in a short time.

Installation

npm install -g shua

Note: Shua needs Node.js 12.0.0+.

Expressions

Shua supports generating urls from a url expression.

Integer Expressions

Syntax: {{%d(start: integer, end: integer, step?: integer, leftPad?: integer)}}

For example, to download

https://example.com/segment1.ts
https://example.com/segment2.ts
https://example.com/segment3.ts
...
https://example.com/segment100.ts

Just use the following command

shua -e "https://example.com/segment{{%d(1, 100)}}.ts"

Multi expressions is also supported.

To download

https://example.com/segment1_1.ts
https://example.com/segment1_2.ts
...
https://example.com/segment1_10.ts
https://example.com/segment2_1.ts
https://example.com/segment2_2.ts
...
https://example.com/segment2_10.ts
...
https://example.com/segment5_10.ts

Use the following expression

shua -e "https://example.com/segment{{%d(1, 5)}}_{{%d(1, 10)}}.ts"

To download

https://example.com/segment001.ts
https://example.com/segment002.ts
https://example.com/segment003.ts
...
https://example.com/segment100.ts

Use

shua -e "https://example.com/segment{{%d(1, 100, 1, 3)}}.ts"

Example

Download all urls from a.txt with 16 threads

shua -f a.txt --threads 16

Options

--file, -f <path>

Download all URLs containing in a file. Both local path and remote URLs are supported as import. Lines couldn't be parsed as an valid URL will be ignored by default.

Examples

shua -f "files.txt"
shua -f "https://example.com/file_list.txt"

--expression, -e <expression>

Download all URLs generated from a expression. See Expressions section above.

--json, -j <path>

Download tasks defined in a json file. JSON files should contain a DownloadTask array.

interface DownloadTask {
    /** URL */
    url: string;
    /** retry count */
    retryCount: number;
    /** output filename */
    filename?: string;
    /** custom HTTP headers */
    headers?: Record<string, string>;
}
type Tasks = DownloadTask[];

--threads <limit>

Threads limit.

--retries, -r <limit>

Max attempts for download tasks.

--timeout <threshold>

Timeout threshold for download tasks in milliseconds.

--concat, -c (3.0.0+)

Concatenate all downloaded files into a single output file.

--output, -o <name>

Output folder name.

Nested paths are not supported now.

if --concat is provided, --output will be used for concentration.

--ascending, -a

Rename output files in numerical ascending order.

--debug, --verbose

Enable debug log output.

Use as a library

Getting Started

import { Downloader } from 'shua';
const downloader = new Downloader();
downloader.addUrlsFromFile('urls.txt');
downloader.on('finish', () => {
   console.log('All files downloaded!');
});
downloader.start();

Events

Event Name Parameters
progress finishedCount: number, totalCount: number
task-finish task: Task
task-error err: Error, task: Task
finish

Versions

Current Tags

VersionDownloads (Last 7 Days)Tag
3.1.10latest
3.0.0-rc.20next

Version History

VersionDownloads (Last 7 Days)Published
3.1.10
3.1.00
3.0.40
3.0.30
3.0.20
3.0.11
3.0.00
3.0.0-rc.30
3.0.0-rc.20
3.0.0-rc.10
2.0.112
2.0.100
2.0.90
2.0.80
2.0.70
2.0.60
2.0.50
2.0.40
2.0.30
2.0.20
2.0.10
2.0.00
1.1.80
1.1.70
1.1.60
1.1.50
1.1.40
1.1.31
1.1.20
1.1.10
1.1.01
1.0.83
1.0.70
1.0.61
1.0.50
1.0.40
1.0.30
1.0.20
1.0.10
1.0.01

Package Sidebar

Install

npm i shua

Weekly Downloads

10

Version

3.1.1

License

GPL-3.0-or-later

Unpacked Size

174 kB

Total Files

66

Last publish

Collaborators

  • eridanussora