Advertisement
Guest User

Untitled

a guest
Apr 6th, 2020
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 'use strict';
  2. const fs      = require('fs'),
  3.       path    = require('path'),
  4.       scripts = require('scripts.js'),
  5.       pipe    = (...fns) => (x) => fns.reduce((v, f) => f(v), x);
  6.  
  7. module.exports = {    
  8.     buildHtmlPipe: (post, fileName) => {
  9.         return pipe(
  10.                 this.removeStyle,
  11.                 this.addStorytextDiv,
  12.                 this.addLocalCss,
  13.                 this.addJQueryCDN,
  14.                 this.addLocalJs,
  15.                 this.addSidebarButtons(fileName),
  16.             )(post);
  17.     },
  18.  
  19.     removeStyle: function(fileText) {
  20.         return fileText.replace('style="font-size: 0.750rem"', '')
  21.     },
  22.  
  23.     addStorytextDiv: function(fileText) {
  24.         return '<html><head></head><body><div class="storytext">' + fileText + '</div></body></html>';
  25.     },
  26.    
  27.     addLocalCss: function(fileText) {
  28.         return fileText.replace(
  29.             '</head>',
  30.             '<link rel="stylesheet" href="asc.css"></head>'
  31.         );
  32.     },
  33.  
  34.     addJQueryCDN: function(fileText) {
  35.         return fileText.replace(
  36.             '</head>',
  37.             '<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script></head>'
  38.         );
  39.     },
  40.  
  41.     addLocalJs: function(fileText) {
  42.         return fileText.replace(
  43.             '</head>',
  44.             '<script type="text/javascript" src="asc.js"></script></head>'
  45.         );
  46.     },
  47.  
  48.     addSidebarButtons: (fileName, editFolder = false) => {
  49.         // Get absolute path
  50.         const filenames = scripts.getLocalFilenames()
  51.                           .map(name => path.join(__dirname, editFolder ? '/pages-edited/' : '/pages-forum/', name));
  52.        
  53.         return fileText => {
  54.             let              $ = fileText.toCheerioObject(),
  55.                 prevButtonLink = filenames[filenames.indexOf(fileName) - 1] || filenames[filenames.length - 1],
  56.                 nextButtonLink = filenames[filenames.indexOf(fileName) + 1] || filenames[0];
  57.  
  58.             $('.storytext').prepend($(`<div class="sidenav"><a type='button' rel='noopener noreferrer' href="${prevButtonLink}"></a></div>`));
  59.             $('.storytext').append($(`<div class="sidenav-right"><a type='button' rel='noopener noreferrer' href="${nextButtonLink}"></a></div>`));
  60.             return $.html()
  61.         };
  62.     },
  63.  
  64.     scrapeForJayfictionPosts: function(page) {
  65.         page = page.toCheerioObject();
  66.         const articles = [];
  67.         page('article.hasThreadmark[data-author="Jayfiction"]').each(function() {
  68.             return articles.push({
  69.                 type: page('.message-cell--threadmark-header label', this)
  70.                         .text()
  71.                         .replace(/[\\\/:]/g, '-')
  72.                         .replace(/"/g, ''),
  73.                 title: page('.message-cell--threadmark-header span', this)
  74.                     .text()
  75.                         .replace(/[\\\/:]/g, '-')
  76.                         .replace(/"/g, '')
  77.                         .replace(/\.?New$/, ''),
  78.                 time: new Date(page('time', this).attr('datetime')),
  79.                 fileName: `${pagesForum}${time.getTime()}--${type}_${title}.html`,
  80.                 post: page('div.bbWrapper', this).html()
  81.             })
  82.         });
  83.         return articles;
  84.     },
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement