Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env node
- 'use strict';
- var fs = require('fs');
- var https = require('https');
- var { URL } = require('url');
- var slug = process.argv[2];
- if(typeof slug === 'undefined') {
- console.log('Usage: snatch-catalog.js <board-name>');
- return;
- }
- function get(url, callback) {
- https.request(new URL(url), res => {
- var data = Buffer.from([]);
- res.on('data', chunk => {
- data = Buffer.concat([data, chunk]);
- });
- res.on('end', () => {
- if(callback) callback(data);
- });
- }).end();
- }
- get('https://8ch.net/' + slug + '/catalog.html', data => {
- fs.mkdir(slug, err => {
- var m;
- var r = /class="thread.*?href="(.*?\.html)"/g;
- while((m = r.exec(data)) !== null) {
- if(m.index === r.lastIndex) r.lastIndex++;
- const board_url = 'https://8ch.net' + m[1];
- get(board_url, data => {
- var m;
- var r = /postfilename">(.+?)<\/span>.+?href="(.+?)" target="_blank"/g;
- while((m = r.exec(data)) !== null) {
- if(m.index === r.lastIndex) r.lastIndex++;
- const file_name = m[1];
- const file_url = m[2];
- console.log('Downloading ' + file_name + '...');
- get(file_url, data => {
- fs.writeFile(slug + '/' + file_name, data, err => {
- if(err) console.error(err);
- });
- });
- }
- });
- }
- });
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement