Улучшение [1.2.127] JS парсеры: добавить поддержку модулей nodejs

Рад представить вам поддержку node модулей, включая сетевые(клиенты redis/mongo/mysql etc.), поддержка включает в себя работу с почти любыми модулями совместимыми с node 8.x/9.x

Пример использования md5 + запись в файл:
Код:
const md5 = require('md5'),
      fs = require('fs');

class Parser {
    constructor() {
        this.defaultConf = {
            version: '0.1.34',
            results: {
            },
            results_format: '',
            parsecodes: {
                200: 1,
            },
            max_size: 200 * 1024,
        };
    }

    *parse(set, results) {
        this.logger.put("Write to files/writefiletest.txt: " + set.query);
  
        fs.appendFileSync('files/writefileest.txt', set.query + "\n" + md5(set.query) + "\n");
      
        results.success = 1;
        return results;
    }
}

Пример использования клиента к Redis:
Код:
const asyncRedis = require("async-redis"),
    redisClient = asyncRedis.createClient();

class Parser {
    constructor() {
        this.defaultConf = {
            version: '0.1.8',
            results: {
                flat: [
                    ['title', 'HTML title'],
                ]
            },
            results_format: '$query: $title\\n',
            parsecodes: {
                200: 1,
            },
            max_size: 200 * 1024,
        };
    }

    async *parse(set, results) { 
      
        this.logger.put(await redisClient.get("rand"));       
        await redisClient.set("rand", Math.random());
      
        this.logger.put('ok');
        results.success = 1;

        return results;
    }
}

Для установки модулей необходимо установить node версии 8.x/9.x, перейти в директорию A-Parser и папку files и устанавливать модули используя менеджер пакетов npm:
Код:
npm install md5
 
Последнее редактирование:
Кроме того частично поддерживается фунционал самой ноды, включая net и fs модули, пример использования fs модуля:

Код:
const fs = require('fs');

class Parser {
    constructor() {
        this.defaultConf = {
            version: '0.1.17',
            results: {
                flat: [
                    ['title', 'HTML title'],
                ]
            },
            results_format: '$query: $title\\n',
            parsecodes: {
                200: 1,
            },
            max_size: 200 * 1024,
        };
    }

    *parse(set, results) {
       
        fs.readFile('config/config.db', (err, data) => {
            if(!err || data)
                throw "";
            this.logger.put(err.toString());
        });

        fs.readFile('queries/subs/zones.txt', (err, data) => {
            if(err || !data)
                throw "";
            this.logger.put(data)
        });
       
        fs.writeFileSync('queries/fs-utf8-тест.txt', 'тест utf8');
       
        if(!fs.existsSync('queries/fs-utf8-тест.txt') || fs.existsSync('queries/not-exists'))
            throw "";
       
        if(fs.readFileSync('queries/fs-utf8-тест.txt', 'utf8') != 'тест utf8')
            throw "";
       
        if(fs.existsSync('queries/test/fs/fs1'))
            throw "";
       
        fs.writeFileSync('queries/test/fs/fs1/fs2/fs3.txt', 'test', {mkpath: true});
       
        if(fs.readFileSync('queries/test/fs/fs1/fs2/fs3.txt') != 'test')
            throw "";
       
        fs.unlinkSync('queries/test/fs/fs1/fs2/fs3.txt');
       
        let pass = 0;
        try {
            fs.readFileSync('queries/test/fs/fs1/fs2/fs3.txt');
            pass++;
        }
        catch(e) {
        }
       
        if(pass)
            throw "";
       
        fs.rmdirSync('queries/test/fs/fs1/fs2/');
        fs.rmdirSync('queries/test/fs/fs1');
       
        if(fs.existsSync('queries/test/fs/fs1'))
            throw "";
       
        fs.mkdirSync('queries/test/fs/fs1');
       
        if(!fs.existsSync('queries/test/fs/fs1'))
            throw "";
       
        fs.rmdirSync('queries/test/fs/fs1');
       
        this.logger.put('all ok');
       
        results.success = 1;

        return results;
    }
}
 
Назад
Верх