#!/usr/bin/env python3 # -*- coding: utf-8 -*- import redis from dynaconf import Dynaconf # Configuration settings = Dynaconf( settings_files=['../config/settings.yaml'] ) class CPEGuesser: def __init__(self): self.rdb = redis.Redis(host=settings.redis.host, port=settings.redis.port, db=8, decode_responses=True) def guessCpe(self, words): k = [] for keyword in words: k.append(f"w:{keyword.lower()}") maxinter = len(k) cpes = [] for x in reversed(range(maxinter)): ret = self.rdb.sinter(k[x]) cpes.append(list(ret)) result = set(cpes[0]).intersection(*cpes) ranked = [] for cpe in result: rank = self.rdb.zrank('rank:cpe', cpe) ranked.append((rank, cpe)) return sorted(ranked)