Главная > API
Понятия
comments_A
«, а для проверки публикаций с сайта «А» создать источник под названием «posts_A
«. Такое разделение лучше, чем все в один источник «site_A
«, поскольку появляется раздельный учет расходов, возможность отключить проверку постов без отключения проверки комментариев, подключение разных словарей и так далее./api/
, в значении версии API допускаются только цифры "0-9"
, латинские буквы "a-z"
и "A-Z"
, знак подчеркивания "_"
. Пример: [main_token] => 'PD1k0qeo123j4rJ'
./api/
.Запросы
Только POST-запросы в формате JSON принимаются скриптом. Вы можете передать application/json
данные, исключая загрузки файлов.
Указание версии API
Настоятельно рекомендуем указывать версию API, к которой обращается ваш скрипт, потому что в ином случае на нашей стороне будет использована последняя актуальная версия, что может вызвать проблемы с получением ответа, корректностью обработки. В запросе к основному узлу /api/
, в значении версии API допускаются только цифры "0-9"
, латинские буквы "a-z"
, знак подчеркивания "_"
. Пример: [api_version] => 'v1'
.
Логика API
Основное действие определяется адресом запроса. Например, адрес /api/source/edit_tags
определит, что нужно сделать (изменить метки источника), а параметры, переданные в JSON
, например, [query_details]=>[source_tags]=>[add]=>[telegram, discord, personal]
— уточнят детали как сделать (добавить/удалить/очистить) и с чем сделать (с метками telegram, discord, personal).
В спойлерах приведены примеры использования сервиса с запросом к API. Такой код пока что не тестировался (кроме PHP, JS, Python) и приведен для ускорения написания.
// Пример класса с проверкой
class Check
{
public function run(string $main_token, string $source_token, string $api_version, string $point, string $endpoint, string $text)
{
// Параметры проверки текста
$query_details = [
'source_token' => $source_token,
'text' => $text,
'dictionaries' =>
[
'rus' => [
'heavy',
'expletive',
'weapon',
'terrorism',
'sex',
],
'eng' => [
'heavy',
]
],
'deep_check' => 'yes',
'translit_check' => 'yes',
];
// Формируем набор POST-данных
$send_data['main_token'] = $main_token;
$send_data['api_version'] = $api_version;
$send_data['query_details'] = $query_details;
// Определяем узел для запроса
$url = 'https://lf.statusnick.com/api/' . $point . '/' . $endpoint;
$curl = curl_init();
curl_setopt_array(
$curl,
[
CURLOPT_POST => 1,
CURLOPT_HEADER => 0,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => $url,
CURLOPT_POSTFIELDS => json_encode($send_data),
CURLOPT_HTTPHEADER => array("Content-Type: application/json"),
]
);
$result = curl_exec($curl);
$result_json = json_decode($result, 1);
curl_close($curl);
return $result_json;
}
}
// Пример использования
$checker = new Check();
$check_result = $checker->run('main_token', 'source_token', 'v1', 'text', 'check', 'content for check');
// Если обнаружены запрещенные слова
if (!empty($check_result['result']['final']['check']['check_result'])) :
// Делаем что-то
endif;
function check(main_token, source_token, api_version, point, endpoint, text) {
// Параметры проверки текста
var query_details = {
source_token: source_token,
text: text,
dictionaries: {
rus: ['heavy', 'expletive', 'weapon', 'terrorism', 'sex'],
eng: ['heavy']
},
deep_check: 'yes',
translit_check: 'yes'
};
// Формируем набор POST-данных
var send_data = {
main_token: main_token,
api_version: api_version,
query_details: query_details
};
// Определяем узел для запроса
var url = 'https://lf.statusnick.com/api/' + point + '/' + endpoint;
// Выполняем AJAX-запрос
var xhr = new XMLHttpRequest();
xhr.open('POST', url, true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && xhr.status == 200) {
var result_json = JSON.parse(xhr.responseText);
// Пример использования результата
if (result_json.result.final.check.check_result) {
// Делаем что-то
}
}
};
xhr.send(JSON.stringify(send_data));
}
// Пример использования
check('main_token', 'source_token', 'v1', 'text', 'check', 'content for check');
import requests
import json
def check(main_token, source_token, api_version, point, endpoint, text):
# Параметры проверки текста
query_details = {
'source_token': source_token,
'text': text,
'dictionaries': {
'rus': ['heavy', 'expletive', 'weapon', 'terrorism', 'sex'],
'eng': ['heavy']
},
'deep_check': 'yes',
'translit_check': 'yes'
}
# Формируем набор POST-данных
send_data = {
'main_token': main_token,
'api_version': api_version,
'query_details': query_details
}
# Определяем узел для запроса
url = f'https://lf.statusnick.com/api/{point}/{endpoint}'
# Выполняем POST-запрос
headers = {'Content-Type': 'application/json'}
response = requests.post(url, data=json.dumps(send_data), headers=headers)
# Пример обработки результата
result_json = response.json()
return result_json
# Пример использования
res = check('main_token', 'source_token', 'v1', 'text', 'check', 'content to check')
if res.get('result', {}).get('final', {}).get('check', {}).get('check_result'):
print(res)
else:
print('OK')
API v1
Первая версия.
API v1_up_limits
Дубликат первой версии с повышенными границами лимитов и другой стоимостью. Подходит для проверки больших текстов, не подходит для частых запросов и проверки коротких текстов. Поскольку по логике это дубликат API v1, то удобно в коде переключаться с одной версии проверки на другую всего лишь меняя значение в зависимости от длины текста. Также можно компоновать множество коротких текстов в один большой, чтобы добиться ускорения обработки.
Позднее (не раньше мая 2024 г.) этот API будет доступен только в рамках персонально выделенных ресурсов с посуточным списанием.