啥也不说了,一切尽在代码中
// 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