Advertisement
Guest User

Untitled

a guest
Mar 14th, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 'use strict';
  2. let AWS = require('aws-sdk');
  3. let request = require('request');
  4. AWS.config.loadFromPath('config.json');
  5. let s3 = new AWS.S3();
  6. //const throttledQueue = require('throttled-queue');
  7. //let throttle = throttledQueue(10, 5000);
  8. let f = require('f-throttle');
  9.  
  10.  
  11. require('dotenv').config();
  12. let knex = require('knex')({
  13.   client: 'mysql2',
  14.   connection: {
  15.     host: process.env.DB_HOST,
  16.     user: process.env.DB_USER,
  17.     password: process.env.DB_PASS,
  18.     database: 'zaply'
  19.   },
  20.   debug: false
  21. });
  22.  
  23. function put_from_url(url, bucket, key, callback) {
  24.     request({
  25.         agent: false,
  26.         url: url,
  27.         encoding: null
  28.     }, function(err, res, body) {
  29.         if (err){
  30.             console.log(err);
  31.             return callback(err, res);
  32.           }
  33.         s3.putObject({
  34.             Bucket: bucket,
  35.             Key: key,
  36.             ContentType: res.headers['content-type'],
  37.             ContentLength: res.headers['content-length'],
  38.             Body: body // buffer
  39.         }, callback);
  40.     })
  41. }
  42.  
  43. let { promisify } = require('util');
  44. let promise_to_put_from_url = promisify(put_from_url);
  45.  
  46. knex.select('products.supermarket', 'products.name as name', 'products.image_medium', 'supermarkets.base_url_product', 'supermarkets.base_url_image').table('products')
  47. .join('supermarkets', 'supermarkets.id', '=', 'products.supermarket')
  48. .then(function(collection) {
  49.   for (let c in collection) {
  50.     //throttle(function() {
  51.     //  console.log('Imagem: ' + collection[c].name + ' Núm: ' + [c]);
  52.       let ft = f(50, () => promise_to_put_from_url(
  53.         collection[c].base_url_image + collection[c].image_medium,
  54.         'zaply-product-images',
  55.         collection[c].supermarket + '-' + collection[c].name.normalize('NFD').replace(/[\u0300-\u036f]/g, '').replace(/[^\w.]/g, '-') + '.jpg',
  56.         function(err, res) {
  57.           if(err) {
  58.             console.log('Erro: ' + err);
  59.           }
  60.         }
  61.       ));
  62.    //});
  63.   }
  64. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement