锁屏壁纸好看?使用NodeJS复制锁屏壁纸

310 阅读1分钟

啥也不说了,一切尽在代码中

// lockscreen.js
const os = require('os');
const path = require('path');
const Promise = require('bluebird');
const { program } = require('commander');
const fs = require('fs-extra');
const sizeOf = require('image-size');
const filter = require('lodash/filter');
const md5 = require('md5');

/**
 * 复制锁屏壁纸
 * author: Leon<leonooo@163.com>
 * date: 2020-6-29 09:35:02
 */

const source = path.join(os.homedir(), '/AppData/Local/Packages/Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy/LocalState/Assets');

const target = path.join(_dirname, 'imgs');

const createDir = () => {
    return fs.ensureDir(target).then(() => {
        return { success: true }
    }).catch((err) => {
        return { success: false, err }
    });
}

const copy = () => {
    const files = fs.readdirSync(source);
    const fileList = filter(files, (item) => {
        const stats = fs.statSync(path.join(source, item));
        return !stats.isDirectory();
    });
    return Promise.each(fileList, async (item) => {
        const name = md5(item) + '.jpg';
        const exist = await fs.pathExists(path.join(target, name));
        if (exist) return false;
        await fs.copy(path.join(source, item), path.join(target, name));
    }).then(() => {
        return { success: true };
    }).catch((err) => {
        return { success: false, err }
    });
}

const clean = async () => {
    const files = await fs.readdir(target);
    const verticals = filter(files, (item) => {
        const dimensions = sizeOf(path.join(target, item));
        return dimensions.width / dimensions.height < 1 || dimensions.width < 1000;
    });
    return Promise.each(verticals, async (item) => {
        await fs.remove(path.join(target, item));
    }).then(() => {
        return { success: true };
    }).catch((err) => {
        return { success: false, err }
    });
}

const execute = async () => {
    const createResult = await createDir();
    if (!createResult.success) return false;
    const copyResult = await copy();
    if (!copyResult.success) return false;
    program.option('-c, --clean', '删除竖屏和较小尺寸图片');
    program.parse(process.argv);
    if (!program.clean) return false;
    await clean();
}

execute();

执行复制

// 复制锁屏壁纸
node lockscreen.js
// 自动删除竖屏类型的图片
node lockscreen.js -c