View difference between Paste ID: pK6FAXnf and RpJT6YuR
SHOW: | | - or go back to the newest paste.
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
);