Guest User

Untitled

a guest
Dec 17th, 2017
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.21 KB | None | 0 0
  1. const fs = require('fs');
  2. const tar = require('tar');
  3. const csv = require('csv');
  4. const path = require('path');
  5. const iconvl = require('iconv-lite');
  6.  
  7. let onFail = (err) => {
  8. console.error(err);
  9. process.exit();
  10. };
  11.  
  12. let unpack = new tar.Parse({
  13. onwarn: (msg, data) => {
  14. console.error(msg, data);
  15. process.exit();
  16. },
  17. });
  18.  
  19. unpack.on('entry', (entry) => {
  20.  
  21. let {path, type} = entry;
  22.  
  23. let skip = () => {
  24. console.log('skipping', path);
  25. entry.resume();
  26. };
  27.  
  28. let target = 'Association.txt';
  29. if(type !== 'File' || path !== target) return skip();
  30.  
  31. let counter = 0;
  32. let parser = new csv.parse({
  33. delimiter: String.fromCodePoint('0x0001'),
  34. rowDelimiter: String.fromCodePoint('0x0002'),
  35. skip_lines_with_empty_values: true,
  36. quote: false,
  37. columns: true,
  38. trim: true,
  39. });
  40.  
  41. parser.on('error', onFail);
  42.  
  43. parser.on('data', _ => console.log(++counter));
  44.  
  45. let iconv = new iconvl.decodeStream('utf-8');
  46.  
  47. console.log('Parsing');
  48. entry.pipe(iconv).pipe(parser);
  49. });
  50.  
  51.  
  52. let p = path.resolve(__dirname, 'full_inform_171201_utf8.tar.gz');
  53. let stream = fs.createReadStream(p);
  54. console.log('Unpacking');
  55. stream.pipe(unpack);
Add Comment
Please, Sign In to add comment