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.
96 lines
2.5 KiB
96 lines
2.5 KiB
#!/usr/bin/python
|
|
# -*- 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):
|
|
request = {
|
|
'module': 'search',
|
|
'procedure': 'make_search',
|
|
'search_type': 'wdesc',
|
|
'search_string': keyword,
|
|
'databases': [21],
|
|
'use_translit': 'true',
|
|
'skip_expired': 'false',
|
|
}
|
|
|
|
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]
|
|
}
|
|
data = self.send_request(request)
|
|
|
|
if int(data['total_records_found']) > 0:
|
|
return data['records_list']['21']['records'], 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)
|
|
|
|
return data['records_list']['21']['records']
|
|
|
|
|
|
|
|
|