Неофициальный клиент для работы с сервисом антиплагиата от advego.com.
Project description
advego-antiplagiat-api
Описание
Библиотека для работы с сервисом антиплагиата от advego.ru. Библиотека не является официальной, при обновлении сервисов advego возможно возникновение ошибок.
Документация
Как считается уникальность текста
Требования
Python 3.8+
Установка
$ pip install advego-antiplagiat-api
$ pipenv install advego-antiplagiat-api
Пример использования
from antiplagiat import Antiplagiat
import time
TOKEN = os.getenv('ADVEGO_TOKEN')
api = Antiplagiat(TOKEN)
with open('example.txt', 'r') as fp:
text = fp.read()
result = api.unique_text_add(text)
key = result['key']
while True:
# дадим некоторое время на проверку
time.sleep(200)
result = api.unique_check(key)
if result['status'] == 'done':
print('Done!')
# сделать чтото с отчетом
return
elif result['status'] == 'error':
print(f'Error: {result}')
return
elif result['status'] == 'not found':
print('Not found!')
return
else:
print('In progress...')
Реализованные методы
unique_text_add(text, title=None, ignore_rules=None)
Добавляет текст на проверку уникальности.
Параметры:
text - текст для проверки. Для корректной работы текст должен быть в кодировке UTF-8.
title - (необязательно) название проверки.
ignore_rules — (необязательно) перечень правил, по которым будут игнорироваться сайты при проверки.
Доступные правила:
"u:<url>"- проверка уникальности будет игнорировать данный url;"b:<domain>"- проверка уникальности будет игнорировать все url, начинающиеся с domain;"r:<regex>"- проверка уникальности будет игнорировать все url, подходящие по заданное регулярное выражение. Если в регулярном выражении используется обратный слэш\или двойные кавычки"", их нужно экранировать.
Для задания правил также можно использовать вспомогательные функции из модуля helpers.py.
from antiplagiat import Antiplagiat
from antiplagiat.helpers import url_rule, domain_rule, regex_url
TOKEN = 'token' # ваш токен
api = Antiplagiat(TOKEN)
text = """
Python — высокоуровневый язык программирования общего назначения,
ориентированный на повышение производительности разработчика и читаемости кода.
Синтаксис ядра Python минималистичен.
В то же время стандартная библиотека включает большой объём полезных функций.
"""
ignore_rules = [
domain_rule('ru.wikipedia.org'),
url_rule('https://ru.wikipedia.org/wiki/Python'),
regex_rule('.*wikipedia\\.org')
]
result = api.unique_text_add(text, ignore_rules=ignore_rules)
key = result['key']
В случае если текст успешно добавлен на проверку метод возвращает словарь {'key': NNN}, где NNN - номер созданной проверки.
В случае ошибки будет выброшено исключение, см. стандартные исключения.
unique_check(key, agent=None, report_json=1, get_text=False)
Возвращает состояние проверки и отчет, если проверка выполнена.
Параметры:
key — идентификатор проверки, полученный при добавлении.
get_text - если указан, то вместе с отчетом будет возвращен проверенный текст.
agent - тип проверки, указывается чтобы получить результат проверки работы или статьи. Для проверки текста указывать agent не нужно.
report_json - формат отчета, рекомендуется значение 1.
Возможны следующие ответы:
-
{"msg": "", "status": "in progress"}- проверка выполняется. -
{"report": {...}, "status": "done", "text": "..."}- проверка выполнена. -
{"msg": "Error message", "status": "error_code"}- проверка завершилась с ошибкой, где"error_code"код ошибки. -
{"msg": "", "status": "not found"}- проверка с данным ключом не найдена.
unique_recheck(key)
Запускает новую проверку ранее добавленного текста. При этом удаляет предыдущие проверки из очереди.
Параметры:
key — идентификатор проверки, полученный при добавлении.
в случает успеха возвращает 1.
В случае ошибки будет выброшено исключение, см. стандартные исключения.
unique_get_text(key)
Возвращает текст на проверке.
Параметры:
key — идентификатор проверки, полученный при добавлении.
При успешном запросе возвращает словарь, содержащий проверяемый текст {"text": "..."}
В случае ошибки будет выброшено исключение, см. стандартные исключения.
Отчет
Формат возвращаемого отчета:
{
"status": "done",
"report": {
"layers_by_domain": [
{
"rewrite": 33,
"equality": 19,
"layers": [
{
"equality": 19,
"rewrite": 33,
"uri": "https://site/",
"words": [
7,
30,
31,
32
],
"shingles": [
31,
32,
33,
34,
35,
36,
37,
38
]
},
],
}
]
"len": 1050,
"bad_words": [],
"equal_words": [
0,
1,
3,
5,
7,
15,
19,
20,
22,
24,
25,
27,
28,
30
],
"word_count": 154,
"lang": "russian",
"error_pages": 0,
"rewrite": 82,
"progress": 100,
"text_fragments": [
"",
"Слово1",
" ",
"Слово2",
" ",
"Слово3",
" ",
"Слово4",
" ",
"Слово5",
". "
],
"captchas": 0,
"found_pages": 11,
"checked_pages": 48,
"equal_shingles": [
31,
32,
36,
37,
38,
40
],
"checked_phrases": 8,
},
}
Расшифровка:
layers_by_domain - найденные страницы с совпадениями, сгруппированные по доменам (если найдено несколько страниц на одном сайте),
layers - найденные страницы линейным списком,
equality - количество найденных совпадений по фразам в указанном источнике (uri), процентов,
rewrite - количество найденных совпадений по словам в указанном источнике (uri), процентов,
uri - адрес страницы с найденными совпадениями,
words - слова, входящие в найденные совпадения по словам (см. text_fragments),
shingles - слова, входящие в найденные совпадения по фразам (см. text_fragments),
len - длина текста в символах с пробелами,
bad_words - слова с подменой символов,
equal_words - аналогично words, но для всего текста,
equal_shingles - аналогично shingles, но для всего текста,
word_count - количество слов в проверяемом тексте,
text_fragments - фрагменты текста для восстановления совпадений по словам и фразам.
Порядковый номер фрагмента вычисляется по формуле 2n + 1, где n = номеру, указанному в соответствущей секции words, shingles, equal_words и equal_shingles.
Для удобной работы с отчетом можно использовать вспомогательный класс AdvanceReport. Атрибуты этого класса соответствуют ключам словаря report, но в отличие от отчета получаемого от сервиса антиплагиата, такие значения как words, shingles, equal_words и т.п. содержат не номера слов в тексте, а уже сами слова.
Исключение: ключу len соответствует атрибут length.
Также AdvanceReport предоставляет атрибуты uniqueness и originality, соответствующие значениям уникальности и оригинальности текста, подробнее см. как считается уникальность текста.
Методы AdvanceReport
words_by_numbers(numbers)
Возвращает слова по номерам в тексте.
Параметры:
numbers - список номеров слов.
save_as_json(file_path, indent=4)
Сохранить отчет в json. Будет сохранен словарь, переданный при инициализации.
Параметры:
file_path - путь до файла.
indent - размер отступов.
Пример:
from antiplagiat import Antiplagiat, AdvanceReport
TOKEN = os.getenv('ADVEGO_TOKEN')
api = Antiplagiat(TOKEN)
text = """some text"""
# ... отправляем текст на проверку и получаем ключ key
result = api.unique_check(key)
adv_report = AdvanceReport(result.get('report'), text)
print(f'Уникальность текста {adv_report.uniqueness}/{adv_report.originality}')
print('Найденные источники:')
for domain in adv_report.layers_by_domain:
for layer in domain.layers:
print(layer.uri)
Стандартные исключения
APIException - общее исключение для ошибок при запросе сервиса антиплагиата. От него наследуются все остальные исключения.
CharAccountError - не хватает символов на счету. Код ошибки -1.
AccountError - не хватает денежных средств на счету. Код ошибки -2.
DatabaseError - ошибка подключения к БД. Код ошибки -5.
TextKeyError - получен неверный ключ. Код ошибки -10.
TokenError - ошибка авторизации по токену. Код ошибки -11.
TextError - ошибка при проверке поля text. Код ошибки -13.
TitleError - ошибка при проверке поля title. Код ошибки -14.
AddCheckError - ошибка добавления работы. Код ошибки -17.
TextNotFoundError - текст не найден. Код ошибки -21.
NotEnoughSymbolsError - недостаточно символов на счету, минимальное количество – 100 000. Код ошибки -67.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file advego-antiplagiat-api-1.1.0.tar.gz.
File metadata
- Download URL: advego-antiplagiat-api-1.1.0.tar.gz
- Upload date:
- Size: 14.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/47.3.1 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.8.3+
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c6e038f2f73cbb8dd25dea91bf567b8441b26d53c9b11dcad568db6585885e9b
|
|
| MD5 |
2b9e03d1b93dd244bf5d08f404fad500
|
|
| BLAKE2b-256 |
97687922b78e012c8fbe3c27f89c7b8f04503a0f603ce61c7da8ddf81b44a6a2
|
File details
Details for the file advego_antiplagiat_api-1.1.0-py3-none-any.whl.
File metadata
- Download URL: advego_antiplagiat_api-1.1.0-py3-none-any.whl
- Upload date:
- Size: 13.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/47.3.1 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.8.3+
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
961a8d3929afccdcffa50f2ddd6fc8e5e53f3e87965e84d2d30ffef0417917fe
|
|
| MD5 |
1637a65b60864d7703c26aee501bf864
|
|
| BLAKE2b-256 |
abc1a91ed2fea38fe3baedc217cd9d8d404e7bee67f35144ce06b2a262d54983
|