Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var request = require('request');
- var co = require('co');
- var _ = require('lodash');
- const DESC = 'ukr';
- const ENDS = ['и', 'а', 'у', 'ы', 'я', 'е', 'ю', 'ой', 'ёй', 'ей', 'ом', 'ём', 'ем', 'о', 'ый'];
- const FILTER = 'вод сук аль спасиб через вмест част виде никогд либ совс случа защит тако пар уровн вид ним поэтом нов мог почт баз короч волн точн ниху этим тем этих така люб здесь ког пик пор давн смысл воим однг которых пор врем врод конечн кстат кром перв сраз сказал хорош именн такж прям делять башн нам куд стоит пол фот кака знает нормальн значит слов сделать начал мест серг член пот лучш посл хот друг тип нахуй сейчас одн ничег быть когд лет моб зна рук скольк может даж мен вообщ без над под нужн больш меньш дел лол потом тред них всех которы очень теперь тот тут тог очень этот нечег прав нег боле должн всегд один тел стал мног могут каки никт зна хоть кажд теперь вот так был как так был был теб нет есл там вот есть тольк будет прост сам год чтоб сво тут почем себ над под раз можн тож нас это этог котор будут тво ведь тогд чег вас наш зач таки пок всег'.replace(/\s/gm, '|');
- var ends = new RegExp(`(${ENDS.join('|')})$`, 'i');
- var filter = new RegExp(`^(${FILTER})$`, 'i');
- var filter2 = new RegExp(`(ть|шь|ют)$`, 'i');
- var search = 'залуп Володин долбит \\+15 ольг савушк качалочк хуй анус сосать бутылк'.toLowerCase().split(' ').map((word)=>new RegExp(word));
- function freq() {
- co(function*() {
- var {body} = yield _request(`http://2ch.hk/${DESC}/catalog.json`),
- threads = JSON.parse(body).threads,
- posts = [],
- dict = {};
- threads = (yield Promise.all(threads
- .map((thread)=>_request(`http://2ch.hk/${DESC}/res/${thread.num}.json`))))
- .map((thread)=>JSON.parse(thread.body));
- threads.forEach((thread)=> {
- posts = posts.concat(thread.threads[0].posts.map((post)=>post.comment.replace(/<a[^\>]*>[^<]*<\/a>/, '')));
- });
- posts = posts.join(' ').toLowerCase().split(/[^а-яА-Я+15]/)
- .forEach((word)=> {
- var i, searchWord;
- word = word.replace(ends, '');
- if (word.length < 3 || word.match(filter) || word.match(filter2)) {
- return;
- }
- if (!dict[word]) {
- dict[word] = 0;
- }
- dict[word]++;
- });
- console.log(_(dict).toPairs().sortBy((el)=>el[1]).map((el)=>`${el[0]}:${el[1]}`).value().reverse().join('\n\r'));
- });
- }
- function byWords() {
- co(function*() {
- var {body} = yield _request(`http://2ch.hk/${DESC}/catalog.json`),
- threads = JSON.parse(body).threads,
- posts = [],
- dict = {};
- threads = (yield Promise.all(threads
- .map((thread)=>_request(`http://2ch.hk/${DESC}/res/${thread.num}.json`))))
- .map((thread)=>JSON.parse(thread.body));
- threads.forEach((thread)=> {
- posts = posts.concat(thread.threads[0].posts.map((post)=>post.comment.replace(/<a[^\>]*>[^<]*<\/a>/, '')));
- });
- posts = posts.join(' ').toLowerCase().split(/[^а-яА-Я+15]/)
- .forEach((word)=> {
- var i, searchWord;
- if (word.length < 3) {
- return;
- }
- for (i = 0; i < search.length; i++) {
- searchWord = search[i];
- if (searchWord.test(word)) {
- if (!dict[searchWord]) {
- dict[searchWord] = 0;
- }
- dict[searchWord]++;
- }
- }
- });
- console.log(_(dict).toPairs().sortBy((el)=>el[1]).map((el)=>`${el[0]}:${el[1]}`).value().reverse().join('\n\r'));
- });
- }
- function byCountry() {
- co(function*() {
- var {body} = yield _request(`http://2ch.hk/${DESC}/catalog.json`),
- threads = JSON.parse(body).threads,
- posts = [],
- dict = {};
- threads = (yield Promise.all(threads
- .map((thread)=>_request(`http://2ch.hk/${DESC}/res/${thread.num}.json`))))
- .map((thread)=>JSON.parse(thread.body));
- threads.forEach((thread)=> {
- thread.threads[0].posts.forEach((post)=>{
- if (!post.icon) {
- return;
- }
- var comment = post.comment.replace(/<a[^\>]*>[^<]*<\/a>/, ''),
- country = post.icon.match(/\/(\w{2})\.png/)[1];
- if (!(country == 'RU' || country == 'UA' || country == 'BY')) {
- return;
- }
- if (!dict[country]) {
- dict[country] = {posts: []};
- }
- dict[country].posts.push(comment);
- });
- });
- _.map(dict, (value, key)=>{
- var _dict = {};
- value.posts.join(' ').toLowerCase().split(/[^а-яА-Я+15]/)
- .forEach((word)=> {
- var i, searchWord;
- if (word.length < 3) {
- return;
- }
- for (i = 0; i < search.length; i++) {
- searchWord = search[i];
- if (searchWord.test(word)) {
- if (!_dict[searchWord]) {
- _dict[searchWord] = 0;
- }
- _dict[searchWord]++;
- }
- }
- });
- console.log(key, value.posts.length);
- console.log(_(_dict).toPairs().sortBy((el)=>el[1]).map((el)=>`${el[0]}:${el[1]}`).value().reverse().join('\n\r'));
- });
- });
- }
- byCountry();
- function _request() {
- var args = [].slice.call(arguments);
- return new Promise(function (resolve, reject) {
- request.apply(request, args.concat((error, response, body)=> {
- if (error) {
- reject(error);
- } else {
- resolve({
- response,
- body
- })
- }
- }))
- });
- }
Advertisement
Add Comment
Please, Sign In to add comment