-
Notifications
You must be signed in to change notification settings - Fork 0
/
ImageAnalyzerModule.js
108 lines (87 loc) · 2.62 KB
/
ImageAnalyzerModule.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
'use strict';
var mysql = require('mysql');
var Keys = require('./private_keys.js');
var keywords = new Array();
var counter = 0;
var dbconn = mysql.createConnection({
host : Keys.DBHost,
user : Keys.DBUser,
password : Keys.DBPass,
database : Keys.DBDatabase
});
dbconn.connect(function(err){
if(err){
console.log('Database connection error');
}else{
console.log('Analyzer Database connection successful');
}
});
async function detectStart(fileDir, fileName, datetime) {
const vision = require('@google-cloud/vision');
const client = new vision.ImageAnnotatorClient();
const [result] = await client.labelDetection(fileDir);
const labels = result.labelAnnotations;
console.log('Labels:');
if (counter < 20){
labels.forEach(function(label){
keywords[counter] = label.description
counter++;
});
}
detectWeb(fileDir, fileName, datetime)
}
async function detectWeb(fileDir, fileName, datetime) {
const vision = require('@google-cloud/vision');
const client = new vision.ImageAnnotatorClient();
const [result] = await client.webDetection(fileDir);
const webDetection = result.webDetection;
if (webDetection.webEntities.length) {
console.log(`Web entities found: ${webDetection.webEntities.length}`);
webDetection.webEntities.forEach(webEntity => {
console.log(` Description: ${webEntity.description}`);
console.log(` Score: ${webEntity.score}`);
if (counter < 20){
keywords[counter] = webEntity.description;
counter++;
}
});
}
if (webDetection.bestGuessLabels.length) {
console.log(
`Best guess labels found: ${webDetection.bestGuessLabels.length}`
);
webDetection.bestGuessLabels.forEach(label => {
console.log(` Label: ${label.label}`);
if (counter < 20){
keywords[counter] = label.label;
counter++;
}
});
}
insertQuery(fileName, datetime);
}
async function insertQuery(fileName, datetime){
var query = 'INSERT INTO NUtellerData(fileName, fileSavedDatetime, labels)';
query += 'VALUES ("' + fileName + '", ' + datetime +', "';
keywords.forEach(function(keyword){
if(keyword != ''){
query += '' + keyword + ', ';
console.log(keyword);
}
});
query = query.slice(0, -1);
query += '")';
console.log(query);
dbconn.query(query, function(err, records){
if(err) throw err;
console.log('query updated!');
});
counter = 0;
query = '';
keywords = new Array();
}
module.exports = {
detectStart,
detectWeb,
insertQuery
}