aboutsummaryrefslogtreecommitdiff
path: root/src/api/databaseMigration.js
diff options
context:
space:
mode:
authorPitu <[email protected]>2020-07-18 16:39:24 +0900
committerPitu <[email protected]>2020-07-18 16:39:24 +0900
commit8e3c3841a4d0f1a6bc71039f94e030b8526105e8 (patch)
treea2a0bcb8a210db02b192dc7db156069f1a8c09bc /src/api/databaseMigration.js
parentRe-process thumbnails on migration (diff)
downloadhost.fuwn.me-8e3c3841a4d0f1a6bc71039f94e030b8526105e8.tar.xz
host.fuwn.me-8e3c3841a4d0f1a6bc71039f94e030b8526105e8.zip
Update database migration
Diffstat (limited to 'src/api/databaseMigration.js')
-rw-r--r--src/api/databaseMigration.js83
1 files changed, 45 insertions, 38 deletions
diff --git a/src/api/databaseMigration.js b/src/api/databaseMigration.js
index 06d3849..15b2bf7 100644
--- a/src/api/databaseMigration.js
+++ b/src/api/databaseMigration.js
@@ -5,6 +5,9 @@ const { path } = require('fs-jetpack');
const sharp = require('sharp');
const ffmpeg = require('fluent-ffmpeg');
+const imageExtensions = ['.jpg', '.jpeg', '.bmp', '.gif', '.png', '.webp'];
+const videoExtensions = ['.webm', '.mp4', '.wmv', '.avi', '.mov'];
+
const oldDb = require('knex')({
client: 'sqlite3',
connection: {
@@ -121,7 +124,13 @@ const start = async () => {
albumId: file.albumid,
fileId: file.id
});
- generateThumbnails(file.name);
+
+ const filename = file.name;
+ if (!jetpack.exists(nodePath.join(__dirname, '..', '..', 'uploads', filename))) continue;
+ const ext = nodePath.extname(filename).toLowerCase();
+ const output = `${filename.slice(0, -ext.length)}.webp`;
+ if (imageExtensions.includes(ext)) await generateThumbnailForImage(filename, output);
+ if (videoExtensions.includes(ext)) generateThumbnailForVideo(filename);
}
await newDb.batchInsert('files', filesToInsert, 20);
await newDb.batchInsert('albumsFiles', albumsFilesToInsert, 20);
@@ -131,47 +140,45 @@ const start = async () => {
process.exit(0);
};
-const imageExtensions = ['.jpg', '.jpeg', '.bmp', '.gif', '.png', '.webp'];
-const videoExtensions = ['.webm', '.mp4', '.wmv', '.avi', '.mov'];
-
-const generateThumbnails = filename => {
- if (!jetpack.exists(nodePath.join(__dirname, '..', '..', 'uploads', filename))) return;
-
- const ext = nodePath.extname(filename).toLowerCase();
- const output = `${filename.slice(0, -ext.length)}.webp`;
- if (imageExtensions.includes(ext)) return generateThumbnailForImage(filename, output);
- if (videoExtensions.includes(ext)) return generateThumbnailForVideo(filename);
-};
-
const generateThumbnailForImage = async (filename, output) => {
- const file = await jetpack.readAsync(nodePath.join(__dirname, '..', '..', 'uploads', filename), 'buffer');
- await sharp(file)
- .resize(64, 64)
- .toFormat('webp')
- .toFile(nodePath.join(__dirname, '..', '..', 'uploads', 'thumbs', 'square', output));
- await sharp(file)
- .resize(225, null)
- .toFormat('webp')
- .toFile(nodePath.join(__dirname, '..', '..', 'uploads', 'thumbs', output));
+ try {
+ const file = await jetpack.readAsync(nodePath.join(__dirname, '..', '..', 'uploads', filename), 'buffer');
+ await sharp(file)
+ .resize(64, 64)
+ .toFormat('webp')
+ .toFile(nodePath.join(__dirname, '..', '..', 'uploads', 'thumbs', 'square', output));
+ await sharp(file)
+ .resize(225, null)
+ .toFormat('webp')
+ .toFile(nodePath.join(__dirname, '..', '..', 'uploads', 'thumbs', output));
+ console.log('finished', filename);
+ } catch (error) {
+ console.log('error', filename);
+ }
};
const generateThumbnailForVideo = filename => {
- ffmpeg(nodePath.join(__dirname, '..', '..', 'uploads', filename))
- .thumbnail({
- timestamps: [0],
- filename: '%b.png',
- folder: nodePath.join(__dirname, '..', '..', 'uploads', 'thumbs', 'square'),
- size: '64x64'
- })
- .on('error', error => console.error(error.message));
- ffmpeg(nodePath.join(__dirname, '..', '..', 'uploads', filename))
- .thumbnail({
- timestamps: [0],
- filename: '%b.png',
- folder: nodePath.join(__dirname, '..', '..', 'uploads', 'thumbs'),
- size: '150x?'
- })
- .on('error', error => console.error(error.message));
+ try {
+ ffmpeg(nodePath.join(__dirname, '..', '..', 'uploads', filename))
+ .thumbnail({
+ timestamps: [0],
+ filename: '%b.png',
+ folder: nodePath.join(__dirname, '..', '..', 'uploads', 'thumbs', 'square'),
+ size: '64x64'
+ })
+ .on('error', error => console.error(error.message));
+ ffmpeg(nodePath.join(__dirname, '..', '..', 'uploads', filename))
+ .thumbnail({
+ timestamps: [0],
+ filename: '%b.png',
+ folder: nodePath.join(__dirname, '..', '..', 'uploads', 'thumbs'),
+ size: '150x?'
+ })
+ .on('error', error => console.error(error.message));
+ console.log('finished', filename);
+ } catch (error) {
+ console.log('error', filename);
+ }
};
start();