Skip to main content

advego-antiplagiat-api

Описание

Библиотека для работы с сервисом антиплагиата от advego.ru. Библиотека не является официальной, при обновлении сервисов advego возможно возникновение ошибок.

Документация

Документация по API

Как считается уникальность текста

Требования

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.

Metadata

Release files for advego-antiplagiat-api 1.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for advego-antiplagiat-api 1.1.0
File Size Uploaded
advego-antiplagiat-api-1.1.0.tar.gz 14.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for advego-antiplagiat-api 1.1.0
File Interpreter ABI Platform
advego_antiplagiat_api-1.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 27.5 kB

Release files / advego-antiplagiat-api-1.1.0.tar.gz

Download URL advego-antiplagiat-api-1.1.0.tar.gz
Size 14.2 kB
Tags Source
SHA-256 checksum
How to use checksums
c6e038f2f73cbb8dd25dea91bf567b8441b26d53c9b11dcad568db6585885e9b
BLAKE2b-256 checksum
How to use checksums
97687922b78e012c8fbe3c27f89c7b8f04503a0f603ce61c7da8ddf81b44a6a2
Upload date
Uploaded using Trusted Publishing?
What is 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+

Release files / advego_antiplagiat_api-1.1.0-py3-none-any.whl

Download URL advego_antiplagiat_api-1.1.0-py3-none-any.whl
Size 13.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
961a8d3929afccdcffa50f2ddd6fc8e5e53f3e87965e84d2d30ffef0417917fe
BLAKE2b-256 checksum
How to use checksums
abc1a91ed2fea38fe3baedc217cd9d8d404e7bee67f35144ce06b2a262d54983
Upload date
Uploaded using Trusted Publishing?
What is 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+

Release history Release notifications | RSS feed

This release

1.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page