You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

112 lines
3.0 KiB

# -*- coding: utf-8 -*-
import urllib2
import json
class TrademarkSearchAPI():
login = "Zuykov"
password = "Uodof8awdooLee9f"
def __init__(self, *args, **options):
pass
def send_request(self, request):
request['login'] = self.login
request['password'] = self.password
request_json = json.dumps(request, separators=(',', ':'))
api_url = "https://api.poiskznakov.ru/"
api_request = urllib2.Request(api_url , request_json, {'Content-Type': 'application/json'})
response = urllib2.urlopen(api_request)
data = json.load(response)
return data
def search_trademark(self, keyword, similarity=100, nices=''):
request = {
'module': 'search',
'procedure': 'make_search',
'search_type': 'wdesc',
'search_string': keyword,
'databases': [21, 23],
'use_translit': 'true',
'skip_expired': 'true',
}
if nices:
request['icgs'] = [int(nice) for nice in nices.split(',')]
if similarity < 100:
request['search_method'] = 'similarity'
request['minimum_similarity'] = similarity
request['limit'] = 30
if similarity == 100:
request['search_method'] = 'containment'
request['limit'] = 30
if similarity == 146:
request['search_method'] = 'identity'
return self.send_request(request)
def get_status(self, search_id):
request = {
'module': 'search',
'procedure': 'check_status',
'search_id': search_id
}
return self.send_request(request)
def get_results(self, search_id):
# Если не готов результат, то ничего не делаем
status = self.get_status(search_id)
if status['search_status'] != 'finished':
return {}, status
request = {
'module': 'search',
'procedure': 'get_result',
'search_id': search_id,
'databases': [21, 23]
}
data = self.send_request(request)
if int(data['total_records_found']) > 0:
records = data['records_list']
trademarks = {}
if records.get('21', None):
trademarks = records['21']['records'].copy()
if records.get('23', None):
trademarks.update(records['23']['records'])
return trademarks, status
else:
return None, status
def get_details(self, ids, keys):
request = {
'module': 'detail',
'procedure': 'get_detail_info',
'marks': list(ids),
'access_keys': list(keys)
}
data = self.send_request(request)
rospatent = data['records_list'].get('21', {}).get('records', {})
romarin = data['records_list'].get('23', {}).get('records', {})
rospatent.update(romarin)
return rospatent