From 52e4810a1f33de72f046b4bf7745105238ffdb89 Mon Sep 17 00:00:00 2001 From: Evert Prants Date: Sun, 7 Oct 2018 19:03:04 +0300 Subject: [PATCH] ... --- common/async.js | 18 +++++++++++++++--- dbpopulate.js | 19 ++++++------------- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/common/async.js b/common/async.js index 1997a3f..57b72c6 100644 --- a/common/async.js +++ b/common/async.js @@ -1,4 +1,5 @@ import {exec} from 'child_process' +import path from 'path' import fs from 'fs-extra' function filewalker (dir, done) { @@ -34,6 +35,19 @@ function filewalker (dir, done) { }) } +async function insertDB (db, track) { + let ensure = await db.get('SELECT * FROM Track WHERE title=? AND artist=?', track.title, track.artist) + if (ensure) { + return null + } + + await db.run('INSERT INTO Track VALUES (NULL,?,?,?,?,?,?,?,?)', + [track.title, track.artist, track.file, track.album || null, track.genre || null, track.track || null, + track.year || null, Math.floor(track.duration)]) + + return track +} + function getFiles (dir) { return new Promise((resolve, reject) => { filewalker(dir, (err, files) => { @@ -58,6 +72,4 @@ function askAsync (rl, q) { }) } -let a = {getFiles, promiseExec, askAsync} - -export default a +export default {getFiles, promiseExec, askAsync, insertDB} diff --git a/dbpopulate.js b/dbpopulate.js index 2587e60..d792a19 100755 --- a/dbpopulate.js +++ b/dbpopulate.js @@ -70,21 +70,17 @@ async function run () { return } - let ensure = await db.get('SELECT * FROM Track WHERE title=? AND artist=?', trackinf.title, trackinf.artist) - if (ensure) { + let ins = await asn.insertDB(db, trackinf) + if (!ins) { console.error('A track of this description already exists in the database.') return } - await db.run('INSERT INTO Track VALUES (NULL,?,?,?,?,?,?,?,?)', - [trackinf.title, trackinf.artist, trackinf.file, trackinf.album || null, trackinf.genre || null, trackinf.track || null, - trackinf.year || null, Math.floor(trackinf.duration)]) - console.log('=> Done.') return } - let files = await getFiles(musicdir) + let files = await asn.getFiles(musicdir) let cleanTrackData = [] let skips = 0 @@ -107,11 +103,8 @@ async function run () { let track = cleanTrackData[i] process.stdout.write(`\rPopulating database.. (Track ${parseInt(i) + 1} of ${cleanTrackData.length})`) try { - let ensure = await db.get('SELECT * FROM Track WHERE title=? AND artist=?', track.title, track.artist) - if (ensure) continue - await db.run('INSERT INTO Track VALUES (NULL,?,?,?,?,?,?,?,?)', - [track.title, track.artist, track.file, track.album || null, track.genre || null, track.track || null, - track.year || null, Math.floor(track.duration)]) + let ins = await asn.insertDB(db, track) + if (!ins) continue entries++ } catch (e) { console.warn(e.message) @@ -119,7 +112,7 @@ async function run () { } } - console.log(`=> \n${entries} tracks were successfully added to the cache!`) + console.log(`\n=> ${entries} tracks were successfully added to the cache!`) } run()