diff options
| author | Pitu <[email protected]> | 2020-07-18 16:39:24 +0900 |
|---|---|---|
| committer | Pitu <[email protected]> | 2020-07-18 16:39:24 +0900 |
| commit | 8e3c3841a4d0f1a6bc71039f94e030b8526105e8 (patch) | |
| tree | a2a0bcb8a210db02b192dc7db156069f1a8c09bc /src/api/databaseMigration.js | |
| parent | Re-process thumbnails on migration (diff) | |
| download | host.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.js | 83 |
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(); |