在添加书签页面,输入书签页面,能自动填写书签标题
This commit is contained in:
parent
dbc7ba3816
commit
82d6fbb99a
|
|
@ -7,14 +7,17 @@
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"body-parser": "~1.15.1",
|
"body-parser": "~1.15.1",
|
||||||
|
"cheerio": "^0.22.0",
|
||||||
"cookie-parser": "~1.4.3",
|
"cookie-parser": "~1.4.3",
|
||||||
"crypto": "0.0.3",
|
"crypto": "0.0.3",
|
||||||
"debug": "~2.2.0",
|
"debug": "~2.2.0",
|
||||||
"ejs": "~2.4.1",
|
"ejs": "~2.4.1",
|
||||||
"express": "~4.13.4",
|
"express": "~4.13.4",
|
||||||
"express-session": "^1.14.1",
|
"express-session": "^1.14.1",
|
||||||
|
"iconv-lite": "^0.4.13",
|
||||||
"morgan": "~1.7.0",
|
"morgan": "~1.7.0",
|
||||||
"mysql": "^2.11.1",
|
"mysql": "^2.11.1",
|
||||||
|
"request": "^2.78.0",
|
||||||
"serve-favicon": "~2.3.0",
|
"serve-favicon": "~2.3.0",
|
||||||
"supervisor": "^0.11.0"
|
"supervisor": "^0.11.0"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,10 +4,23 @@ app.controller('editCtr', ['$scope', '$state', '$timeout', 'bookmarkService', 'p
|
||||||
init();
|
init();
|
||||||
semanticInit();
|
semanticInit();
|
||||||
|
|
||||||
$scope.$watch('url', function(newValue, oldValue, scope) {
|
$scope.$watch('url', function(newUrl, oldUrl, scope) {
|
||||||
$timeout(function() {
|
$timeout(function() {
|
||||||
$scope.urlError = $scope.url == '' && $('.ui.modal.js-add-bookmark').modal('is active');
|
$scope.urlError = $scope.url == '' && $('.ui.modal.js-add-bookmark').modal('is active');
|
||||||
});
|
});
|
||||||
|
$scope.title = "";
|
||||||
|
if (/http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w- .\/?%&=]*)?/.test(newUrl)) {
|
||||||
|
var params = {
|
||||||
|
url: newUrl,
|
||||||
|
}
|
||||||
|
bookmarkService.getTitle(params).then(
|
||||||
|
function(data) {
|
||||||
|
console.log(JSON.stringify(data));
|
||||||
|
$scope.title = data.title;
|
||||||
|
},
|
||||||
|
function(errorMsg) {}
|
||||||
|
);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
$scope.$watch('title', function(newValue, oldValue, scope) {
|
$scope.$watch('title', function(newValue, oldValue, scope) {
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,20 @@
|
||||||
app.factory('bookmarkService', ['$http', '$q', function($http, $q) {
|
app.factory('bookmarkService', ['$http', '$q', function($http, $q) {
|
||||||
// service interface
|
// service interface
|
||||||
var service = {
|
var service = {
|
||||||
|
getTitle: function(params) {
|
||||||
|
var def = $q.defer();
|
||||||
|
$http.post('/api/getTitle/', {
|
||||||
|
params: params
|
||||||
|
})
|
||||||
|
.success(function(data) {
|
||||||
|
def.resolve(data);
|
||||||
|
})
|
||||||
|
.error(function(data) {
|
||||||
|
console.log('Error: ' + data);
|
||||||
|
def.reject('Failed to get getTitle');
|
||||||
|
});
|
||||||
|
return def.promise;
|
||||||
|
},
|
||||||
login: function(params) {
|
login: function(params) {
|
||||||
var def = $q.defer();
|
var def = $q.defer();
|
||||||
$http.post('/api/login/', {
|
$http.post('/api/login/', {
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,11 @@
|
||||||
var api = require('express').Router();
|
var api = require('express').Router();
|
||||||
var mysql = require('mysql');
|
var mysql = require('mysql');
|
||||||
var crypto = require('crypto');
|
var crypto = require('crypto');
|
||||||
|
var http = require('http');
|
||||||
|
var https = require('https');
|
||||||
|
var cheerio = require('cheerio');
|
||||||
|
var request = require('request')
|
||||||
|
var iconv = require('iconv-lite')
|
||||||
var client = mysql.createConnection({
|
var client = mysql.createConnection({
|
||||||
host: '127.0.0.1',
|
host: '127.0.0.1',
|
||||||
user: 'lcq',
|
user: 'lcq',
|
||||||
|
|
@ -11,6 +16,60 @@ var client = mysql.createConnection({
|
||||||
});
|
});
|
||||||
client.connect();
|
client.connect();
|
||||||
|
|
||||||
|
api.post('/getTitle', function(req, response) {
|
||||||
|
var params = req.body.params;
|
||||||
|
var url = params.url;
|
||||||
|
|
||||||
|
var options = {
|
||||||
|
url: url,
|
||||||
|
encoding: null,
|
||||||
|
//代理服务器
|
||||||
|
//proxy: 'http://xxx.xxx.xxx.xxx:8888',
|
||||||
|
headers: {
|
||||||
|
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.65 Safari/537.36'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
request(options, function(err, res, body) {
|
||||||
|
var charset = "utf-8";
|
||||||
|
var arr = body.toString().match(/<meta([^>]*?)>/g);
|
||||||
|
if (arr) {
|
||||||
|
arr.forEach(function(val) {
|
||||||
|
var match = val.match(/charset\s*=\s*(.+)\"/);
|
||||||
|
if (match && match[1]) {
|
||||||
|
if (match[1].substr(0, 1) == '"') match[1] = match[1].substr(1);
|
||||||
|
charset = match[1].trim();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
var html = iconv.decode(body, charset);
|
||||||
|
var $ = cheerio.load(html, {
|
||||||
|
decodeEntities: false
|
||||||
|
})
|
||||||
|
var title = $("title").text();
|
||||||
|
console.log(title);
|
||||||
|
response.json({
|
||||||
|
title: title || '',
|
||||||
|
});
|
||||||
|
})
|
||||||
|
|
||||||
|
// var httpGet = url.indexOf("https") >= 0 ? https : http;
|
||||||
|
// httpGet.get(url, function(res) {
|
||||||
|
// var html = '';
|
||||||
|
// res.on('data', function(data) {
|
||||||
|
// html += data;
|
||||||
|
// });
|
||||||
|
// res.on('end', function() {
|
||||||
|
// var $ = cheerio.load(html);
|
||||||
|
// var title = $("title").text();
|
||||||
|
// console.log(title, response.headers['content-type']);
|
||||||
|
// response.json({
|
||||||
|
// title: title || '',
|
||||||
|
// });
|
||||||
|
// });
|
||||||
|
// });
|
||||||
|
})
|
||||||
|
|
||||||
api.post('/logout', function(req, res) {
|
api.post('/logout', function(req, res) {
|
||||||
var params = req.body.params;
|
var params = req.body.params;
|
||||||
console.log('logout......', params);
|
console.log('logout......', params);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue