UNPKG

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
"use strict"; 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;