获取favicon触发timer设定一个哨兵

This commit is contained in:
luchenqun 2017-03-09 12:44:20 +08:00
parent 75b4d1d9f1
commit dce319f283
2 changed files with 39 additions and 9 deletions

View File

@ -719,7 +719,7 @@ db.getBookmarks = function() {
db.getBookmarkWaitSnap = function(today) { db.getBookmarkWaitSnap = function(today) {
var todayNotSnap = today + 31; var todayNotSnap = today + 31;
var sql = "SELECT id, url, snap_state, favicon_state FROM `bookmarks` WHERE `snap_state`>=0 AND `snap_state` <= 64 AND snap_state != " + todayNotSnap + " ORDER BY created_at DESC LIMIT 0, 1"; var sql = "SELECT id, url, snap_state FROM `bookmarks` WHERE `snap_state`>=0 AND `snap_state` <= 64 AND snap_state != " + todayNotSnap + " ORDER BY created_at DESC LIMIT 0, 1";
return new Promise(function(resolve, reject) { return new Promise(function(resolve, reject) {
client.query(sql, (err, result) => { client.query(sql, (err, result) => {
if (err) { if (err) {
@ -733,7 +733,7 @@ db.getBookmarkWaitSnap = function(today) {
db.getBookmarkWaitFavicon = function(today) { db.getBookmarkWaitFavicon = function(today) {
var todayNotSnap = today + 31; var todayNotSnap = today + 31;
var sql = "SELECT id, url, snap_state, favicon_state FROM `bookmarks` WHERE `favicon_state`>=0 AND `favicon_state` <= 64 AND favicon_state != " + todayNotSnap + " ORDER BY created_at DESC LIMIT 0, 1"; var sql = "SELECT id, url, favicon_state FROM `bookmarks` WHERE `favicon_state`>=0 AND `favicon_state` <= 64 AND favicon_state != " + todayNotSnap + " ORDER BY created_at DESC LIMIT 0, 1";
return new Promise(function(resolve, reject) { return new Promise(function(resolve, reject) {
client.query(sql, (err, result) => { client.query(sql, (err, result) => {
if (err) { if (err) {

View File

@ -930,8 +930,14 @@ api.getSnapByTimer = function() {
api.getFaviconByTimer = function() { api.getFaviconByTimer = function() {
console.log('getFaviconByTimer...........'); console.log('getFaviconByTimer...........');
var timeout = 3000 var timeout = 3000;
var busy = false;
setInterval(function() { setInterval(function() {
if (busy) {
console.log('getFaviconByTimer is busy')
return;
}
busy = true;
var today = new Date().getDate(); var today = new Date().getDate();
db.getBookmarkWaitFavicon(today) db.getBookmarkWaitFavicon(today)
.then((bookmarks) => { .then((bookmarks) => {
@ -944,12 +950,26 @@ api.getFaviconByTimer = function() {
if (!/http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w- .\/?%&=]*)?/.test(url)) { if (!/http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w- .\/?%&=]*)?/.test(url)) {
copyFile(defaultFile, faviconPath); copyFile(defaultFile, faviconPath);
db.updateBookmarkFaviconState(id, today + 31); db.updateBookmarkFaviconState(id, today + 31)
}else{ .then((affectedRows) => {
busy = false
})
.catch((err) => {
console.log('updateBookmarkFaviconState err', err);
busy = false
});
} else {
var faviconUrl = "http://g.soz.im/" + url; var faviconUrl = "http://g.soz.im/" + url;
download(faviconUrl).then(data => { download(faviconUrl).then(data => {
fs.writeFileSync(faviconPath, data); fs.writeFileSync(faviconPath, data);
db.updateBookmarkFaviconState(id, -1); db.updateBookmarkFaviconState(id, -1)
.then((affectedRows) => {
busy = false;
})
.catch((err) => {
console.log('updateBookmarkFaviconState err', err);
busy = false;
});
}).catch((err) => { }).catch((err) => {
var newFaviconState = -1; var newFaviconState = -1;
console.log("boomarkid = " + id + ", download over", err) console.log("boomarkid = " + id + ", download over", err)
@ -959,12 +979,22 @@ api.getFaviconByTimer = function() {
newFaviconState = today + 31; newFaviconState = today + 31;
copyFile(defaultFile, faviconPath); copyFile(defaultFile, faviconPath);
} }
db.updateBookmarkFaviconState(id, newFaviconState); db.updateBookmarkFaviconState(id, newFaviconState)
.then((affectedRows) => {
busy = false;
})
.catch((err) => {
console.log('updateBookmarkFaviconState err', err);
busy = false;
});
}); });
} }
} }
}) })
.catch((err) => console.log('getFaviconByTimer err', err)); .catch((err) => {
console.log('getFaviconByTimer err', err);
busy = false;
});
}, timeout); }, timeout);
} }
@ -972,7 +1002,7 @@ function md5(str) {
return crypto.createHash('md5').update(str).digest('hex'); return crypto.createHash('md5').update(str).digest('hex');
}; };
function copyFile(sourceFile, destFile){ function copyFile(sourceFile, destFile) {
fs.exists(sourceFile, function(exists) { fs.exists(sourceFile, function(exists) {
if (exists) { if (exists) {
var readStream = fs.createReadStream(sourceFile); var readStream = fs.createReadStream(sourceFile);