ddg-bulk-image-downloader
Version:
Lazy way to download images from Duck Duck Go search results in bulk
59 lines (58 loc) • 2.55 kB
JavaScript
;
const tslib_1 = require("tslib");
const command_1 = require("@oclif/command");
const downloader_1 = require("./downloader");
const types_1 = require("./types");
const cli_ux_1 = require("cli-ux");
class DdgBulkImageDownloader extends command_1.Command {
async run() {
var _a;
const { flags, args } = this.parse(DdgBulkImageDownloader);
const { query, limit, output } = flags, restParams = tslib_1.__rest(flags, ["query", "limit", "output"]);
let userQuery = (_a = args.query) !== null && _a !== void 0 ? _a : query;
if (userQuery === undefined) {
userQuery = await cli_ux_1.cli.prompt("What do you want to search for ?");
if (userQuery === undefined) {
this.error("No search term provided.");
return;
}
}
// show on stdout instead of stderr
await downloader_1.downloadImages({
limit,
query: userQuery,
outputPath: output,
imageOptions: restParams,
debug: Boolean(this.config.debug),
});
// console.log(this.config)
this.log(`Done! ${limit} images saved ${output ? `to folder '${output}'` : ""}`);
}
}
DdgBulkImageDownloader.description = "Lazy way to download images from Duck Duck Go search results in bulk. Also supports filters like size, type, layout, color.";
DdgBulkImageDownloader.flags = {
version: command_1.flags.version({ char: "v" }),
help: command_1.flags.help({ char: "h" }),
query: command_1.flags.string({ char: "q", description: "search query" }),
limit: command_1.flags.integer({
char: "l",
description: "no of images to download",
default: 10,
}),
output: command_1.flags.string({ char: "o", description: "output directory path" }),
size: command_1.flags.enum({ char: "s", options: types_1.Size }),
type: command_1.flags.enum({ char: "t", options: types_1.Type }),
layout: command_1.flags.enum({ char: "l", options: types_1.Layout }),
color: command_1.flags.enum({ char: "c", options: types_1.Color.slice(0, 4) }),
};
DdgBulkImageDownloader.args = [{ name: "query" }];
// custom usage string for help
// this overrides the default usage
DdgBulkImageDownloader.usage = '"Morgan Freeman" --limit 50';
// examples to add to help
// each can be multiline
DdgBulkImageDownloader.examples = [
'$ ddg-download "Morgan Freeman"',
'$ ddg-download -q "Morgan Freeman" -l 60 -o out',
];
module.exports = DdgBulkImageDownloader;