Guest User

Untitled

a guest
Nov 11th, 2016
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. "use strict";
  2.  
  3. require("babel-core/register");
  4.  
  5. import fetch from "node-fetch";
  6. import striptags from 'striptags';
  7. import co from 'co';
  8.  
  9. const keyWords = ["butthurt", "бугурт", "буггурт", "баттхерт", "батхерт"];
  10.  
  11. let checkCaps = (str) => striptags(str).toUpperCase() === str;
  12. let checkDogs = (str) => (str.match(/\@/g) || []).length > 0;
  13.  
  14. let detectButthurt = (thread) => {
  15.     let expr = new RegExp(keyWords.join("|"));
  16.     let dogsOut = checkDogs(thread.comment);
  17.     let capsOn = checkCaps(thread.comment);
  18.     let subjContainsKw = expr.test(thread.subject.toLowerCase());
  19.  
  20.     return subjContainsKw || capsOn || dogsOut;
  21. };
  22.  
  23. let fetchThreadsLight = function*(url) {
  24.     let response = yield fetch(url);
  25.     let parsedResponse = yield response.json();
  26.     console.log('total threads recieved: ' + parsedResponse.threads.length);
  27.     return parsedResponse.threads;
  28. };
  29.  
  30. let findSuspiciousThreads = (threads) => {
  31.     let suspiciousThreads = [];
  32.  
  33.     for (let thread of threads) {
  34.         let butthurtDetected = detectButthurt(thread);
  35.         if (butthurtDetected) {
  36.             suspiciousThreads.push(thread);
  37.             console.log('------------------');
  38.             console.log(thread.views);
  39.             //console.log('link: ' + 'http://2ch.hk/b/res/' + thread.num + '.html');
  40.             console.log('------------------');
  41.         }
  42.     }
  43.     return suspiciousThreads;
  44. };
  45.  
  46. let run = function*() {
  47.     let threads = [];
  48.  
  49.     try {
  50.         // threads w/o posts
  51.         threads = yield * fetchThreadsLight("http://2ch.hk/b/threads.json");
  52.     } catch (e) {
  53.         console.log('threads fetch failed');
  54.     }
  55.  
  56.     return findSuspiciousThreads(threads);
  57. };
  58.  
  59. co(run).then(
  60.     suspiciousThreads => {
  61.         console.log('suspicious threads: ' + suspiciousThreads.length);
  62.     },
  63.     error => {
  64.         console.log(error);
  65.     }
  66. );
Add Comment
Please, Sign In to add comment