import { createHash } from 'crypto'; import Utils from '../utils/utils.js'; import DebugInfo from '../models/DebugInfo.js'; const baseUrl = 'https://www.nomerogram.ru/api/v1.1'; const secretSuffix = 'queivoo1ieNgae2e'; const appId = 'p15'; const deviceId = '01b854631cb28e175ffbcccf6114acc3'; const from = 'search'; const userAgent = 'Nomerogram/2.18 (iPhone; iOS 13.7; Scale/2.00)'; class NomerogramProvider { static async getGroups(number) { try { let timestamp = Math.floor(Date.now() / 1000); let secretSource = appId + number + deviceId + from + timestamp + secretSuffix; let hash = createHash('sha256'); hash.update(secretSource); let secret = hash.digest('hex'); let url = `${baseUrl}/group/list?from=${from}&carplate=${number}×tamp=${timestamp}&secret=${secret}&app_id=${appId}&device_id=${deviceId}`; let result = await fetch(url, { signal: AbortSignal.timeout(5000), headers: { 'User-Agent': userAgent }, }); let json = await result.json(); if (!json.success) { console.log('Nomerogram error: ', json.message); throw Error(json.message); //return []; } console.log('Nomerogram found ads: ', json.data.groups.length); return json.data.groups.flatMap((g) => { return g.photos.map((p) => { return { url: p.src.default, thumbnail: p.src.thumbnail, date: Utils.parseDate(g.date), }; }); }); } catch (ex) { console.log('Nomerogram error: ', ex.message); ex.debugInfo = { nomerogram: DebugInfo.fromError(ex.message) }; throw ex; } } } export default NomerogramProvider;