Advertisement
Guest User

Untitled

a guest
Aug 31st, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #!/usr/bin/env node
  2. 'use strict';
  3.  
  4. var fs = require('fs');
  5. var https = require('https');
  6. var { URL } = require('url');
  7.  
  8. var slug = process.argv[2];
  9.  
  10. if(typeof slug === 'undefined') {
  11.     console.log('Usage: snatch-catalog.js <board-name>');
  12.     return;
  13. }
  14.  
  15. function get(url, callback) {
  16.     https.request(new URL(url), res => {
  17.         var data = Buffer.from([]);
  18.  
  19.         res.on('data', chunk => {
  20.             data = Buffer.concat([data, chunk]);
  21.         });
  22.  
  23.         res.on('end', () => {
  24.             if(callback) callback(data);
  25.         });
  26.     }).end();
  27. }
  28.  
  29. get('https://8ch.net/' + slug + '/catalog.html', data => {
  30.     fs.mkdir(slug, err => {
  31.         var m;
  32.         var r = /class="thread.*?href="(.*?\.html)"/g;
  33.         while((m = r.exec(data)) !== null) {
  34.             if(m.index === r.lastIndex) r.lastIndex++;
  35.             const board_url = 'https://8ch.net' + m[1];
  36.             get(board_url, data => {
  37.                 var m;
  38.                 var r = /postfilename">(.+?)<\/span>.+?href="(.+?)" target="_blank"/g;
  39.  
  40.                 while((m = r.exec(data)) !== null) {
  41.                     if(m.index === r.lastIndex) r.lastIndex++;
  42.  
  43.                     const file_name = m[1];
  44.                     const file_url = m[2];
  45.  
  46.                     console.log('Downloading ' + file_name + '...');
  47.  
  48.                     get(file_url, data => {
  49.                         fs.writeFile(slug + '/' + file_name, data, err => {
  50.                             if(err) console.error(err);
  51.                         });
  52.                     });
  53.                 }
  54.             });
  55.         }
  56.     });
  57. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement