Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*eslint-env node*/
- //------------------------------------------------------------------------------
- // node.js starter application for Bluemix
- //------------------------------------------------------------------------------
- // This application uses express as its web server
- var express = require('express'),
- bodyParser = require('body-parser'),
- urlencodedParser = bodyParser.urlencoded({ extended: false }),
- extend = require('util')._extend,
- fs = require('fs'),
- request = require('request'),
- watson = require('watson-developer-cloud');
- // credentials
- var credentials_lang = extend({
- username: '246412c0-f39a-424c-a61e-4054cc589fef',
- password: 'lAna28GByO4x',
- version: 'v2'
- });
- //}, bluemix.getServiceCreds('language-translation')); // VCAP_SERVICES
- var credentials_pers = extend({
- username: '2cc8d6f4-7389-4152-bd39-ea275f5c35d1',
- password: 'MLa2NOoxqj3M',
- version: 'v2'
- });
- //}, bluemix.getServiceCreds('personality_insights')); // VCAP_SERVICES
- var visual_recognition = watson.visual_recognition({
- api_key: '3a979cdebdf9fa964a3df0c7ae4bebc78d8e50d7',
- version_date: '2016-05-20',
- version: 'v3'
- });
- var tone_analyzer = watson.tone_analyzer({
- username: '2e5702e8-b833-4444-b43d-25fffbd910ac',
- password: 'k18xypHwnilk',
- version: 'v3',
- version_date: '2016-05-19'
- });
- var personality_insights = watson.personality_insights(credentials_pers);
- var language_translation = watson.language_translation(credentials_lang);
- // cfenv provides access to your Cloud Foundry environment
- var cfenv = require('cfenv');
- // get the app environment from Cloud Foundry
- var appEnv = cfenv.getAppEnv();
- // create a new express server
- var app = express();
- app.use(express.static(__dirname + '/public'));
- // adding the template "pug" (formerly jade)
- app.set('view engine', 'pug');
- //------------------------------------------------------------------------------
- // routes
- //------------------------------------------------------------------------------
- var params = null;
- app.get('/', function(req, res){
- res.render('index.pug');
- })
- .get('/api/translate', function(req, res){
- res.render('translate.pug');
- })
- .get('/api/personality', function(req, res){
- res.render('personality.pug');
- })
- .get('/api/visual', function(req, res){
- res.render('visual.pug');
- })
- .get('/api/search', function(req, res){
- res.render('twitter.pug');
- })
- // Language Translation
- .post('/api/translate', urlencodedParser, function(req, res) {
- if (req.body.message != '') {
- params = {
- text: req.body.message,
- source: 'fr',
- target: 'en'
- };
- language_translation.translate(params, function (err, translatedMessage) {
- res.render('translate.pug', { 'translation': translatedMessage.translations[0].translation });
- });
- }
- })
- // Personality Insights
- .post('/api/personality', urlencodedParser, function(req, res) {
- if (req.body.message != '') {
- params = { text: req.body.message };
- personality_insights.profile(params, function(err, personality) {
- res.render('personality.pug', { 'personality': JSON.stringify(personality, null, 2 ) });
- });
- }
- })
- // Visual Recognition
- .post('/api/visual', urlencodedParser, function(req, res) {
- if (req.body.url) { // image externe
- params = {
- url: req.body.url,
- classifier_ids: 'default,chateau_bouges_855464739'
- };
- }
- if (req.body.sample == 'true') { // image sample
- params = {
- images_file: fs.createReadStream(__dirname + '/public' + req.body.sample_radio),
- classifier_ids: 'default,chateau_bouges_855464739'
- };
- }
- visual_recognition.classify(params , function(err, visual) {
- res.render('visual.pug', { 'visual': JSON.stringify(visual, null, 2 ) });
- });
- })
- // Insights for Twitter
- .post('/api/search', urlencodedParser, function(req, res) {
- var query = '';
- var number = '5'; // nombre de tweets par défaut (100 initialement)
- var lang = '';
- var startTime = '';
- var author = '';
- if (req.body.query) { query = encodeURIComponent(req.body.query); } // Autorise l'utilisateur à indiquer un #hashtag
- if (req.body.number) {number = req.body.number; }
- // Paramètres de la query
- if (req.body.language) { lang = '+lang:' + req.body.language; }
- if (req.body.startTime) { startTime = '+posted:' + req.body.startTime; }
- if (req.body.author) {author = '+from:' + req.body.author; }
- // Construction de la query
- query = query + lang + startTime + author;
- var host = 'https://476d07a7-cc7d-4b61-b009-28178ca8bca2:mgAGIPtQou@cdeservice.mybluemix.net';
- var path = '/api/v1/messages/search';
- var url = host + path + '?q=' + query + '&size=' + number;
- // hijacked
- url = 'https://476d07a7-cc7d-4b61-b009-28178ca8bca2:mgAGIPtQou@cdeservice.mybluemix.net/api/v1/messages/search?q=(VillaCavrois OR "Villa Cavrois")+posted:2016-01-01+lang:fr&size=10';
- // '(lang:fr%20OR%20lang:en) lang:fr lang:en
- request.get(url, function(error, response, file) {
- if(error) {
- response.send(error).status(400);
- }
- else {
- var json = JSON.parse(file);
- var messages = []; // liste de tweets
- var sentences = []; // liste de tweets nettoyés de ponctuation de fin de phrase
- var authors = []; // liste des auteurs des tweets
- var big_sentence = ''; // string contenant tous les tweets
- var positive; // JSON Tone Analyzer
- if (json.tweets) {
- json.tweets.forEach(function(item, index) {
- messages.push(item.message.body);
- var sentence = item.message.body.replace(/\.|\!|\?/g,'') + '. '; // Transforme chaque tweet en une phrase pour Tone Analyzer
- big_sentence += sentence;
- sentences.push(sentence);
- authors.push(item.message.actor.preferredUsername);
- // Traduit le texte en anglais si nécessaire
- if (req.body.language == 'fr')
- {
- language_translation.translate({
- text: big_sentence,
- source: 'fr',
- target: 'en'
- }, function(err, englishText) {
- if (err)
- console.log(err)
- else {
- big_sentence = englishText.translations[0].translation;
- tone_analyzer.tone( {
- text: big_sentence,
- tones: 'emotion'
- },
- function(err, tone) {
- if (err) {
- console.log(err);
- }
- else {
- positive = JSON.stringify(tone, null, 2 );
- res.render('twitter.pug', { 'search': file, 'search2': json, 'tweets': messages, 'sentences':sentences, 'authors': authors, 'positive': positive });
- }
- });
- }
- });
- }
- });
- //res.render('twitter.pug', { 'search': file, 'search2': json, 'tweets': messages, 'sentences':sentences, 'authors': authors, 'positive': positive });
- }
- else {
- res.render('twitter.pug', { 'search': file});
- }
- }
- });
- });
- // start server on the specified port and binding host
- app.listen(appEnv.port, '0.0.0.0', function() {
- // print a message when the server starts listening
- console.log("server starting on " + appEnv.url);
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement