Advertisement
mouradsme

Scrubber

Jul 7th, 2020
2,062
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import  { Selector } from 'testcafe';
  2. var     fs = require('fs'),
  3.         http = require('http'),
  4.         https = require('https'),                                                
  5.         Stream = require('stream').Transform;
  6.    
  7. let     baseUrl = 'https://mangallama.com/manga.php?manga=Isekai-Tensei-Soudouki';                                          
  8.  
  9. var download = (url, filename, callback) => {
  10.     var client = http;
  11.     if (url.toString().indexOf("https") === 0){
  12.       client = https;
  13.      }
  14.     var request = client.get(url, function(res){
  15.         console.log(`Preparing... ${filename}`);
  16.         var imagedata = ''
  17.         res.setEncoding('binary')
  18.  
  19.         res.on('data', function(chunk){
  20.             imagedata += chunk
  21.         })
  22.  
  23.         res.on('end', function(){
  24.             fs.writeFile(filename, imagedata, 'binary', function(err){
  25.                 if (err) throw err
  26.                 console.log(`${filename} Saved`)
  27.                 callback()
  28.             })
  29.         })
  30.  
  31.     })
  32. };            
  33.  
  34. fixture('Manga download').page(baseUrl);
  35. test('Parse data', async t => {
  36.         await t.maximizeWindow();
  37.  
  38.         let iElements = await(Selector('.table-striped tbody tr').count);
  39.  
  40.  
  41.         let i = 1;
  42.         let chunk = '';
  43.         let prev = Selector('#chapscontainer > table > tbody > tr:nth-child(1) > td:nth-child(1) > a');
  44.         let prevLink = await prev.getAttribute('href');
  45.         const BATCH_SIZE = 1000;
  46.             console.log(`Accessing Chapter's Page`);
  47.        
  48.         do {
  49.             await t.click(prev);
  50.             let chapters = await(Selector('.imgholder').count);
  51.             let j = 1;
  52.             console.log(`Fetching Chapter's parts //`);
  53.             console.log(`Downloading... Chapter ${i}`);
  54.             do {
  55.                 let chap = Selector(".imgholder").nth(j);
  56.                 let src = await chap.getAttribute('src')
  57.                 let I = iElements - i ;
  58.                 let dir = `./Chapter-${I}`;
  59.                 if (!fs.existsSync(dir)){
  60.                     fs.mkdirSync(dir);
  61.                 }
  62.                 await download(src, `${dir}/${j}.jpg`, function() {
  63.                     console.log(`Chapter ${I} - ${j} Downloaded!`);
  64.                 });
  65.                 j++;
  66.             } while (j < chapters);
  67.            
  68.            
  69.            
  70.             prev = Selector('#wrapper > div > div.col-md-12.hotlist > div:nth-child(3) > div > h3:nth-child(2) > a');
  71.             prevLink = await prev.getAttribute('href');
  72.             await t.wait(10000);
  73.             await t.click(prev);
  74.             i++;
  75.         } while (i < iElements);
  76.     }
  77. )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement