Invalid timestamp libapp md5 checksum error на литрес на айфон

Компания ЛитРес разработала API для издательств и сервисов электронного самиздата, который позволяет автоматизировать процесс размещения электронных книг в каталоге ЛитРес для последующей продажи или бесплатного распространения. О возможных вариантах сотрудничества вы можете узнать у менеджеров ЛитРес (http://www.litres.ru/o-kompanii/contactnaya-informaciya/).

1 Аннотация

Компания ЛитРес разработала API для издательств и сервисов электронного самиздата, который позволяет автоматизировать процесс размещения электронных книг в каталоге ЛитРес для последующей продажи или бесплатного распространения.
О возможных вариантах сотрудничества вы можете узнать у менеджеров ЛитРес (http://www.litres.ru/o-kompanii/contactnaya-informaciya/).

  1. Загрузка и предварительное размещение в каталоге ЛитРес электронных книг в форматах FB2/FB3, а также PDF и аудио книг.
  2. Редактирование информации, связанной с загруженными книгами (авторы, серии, жанры, ключевые слова, аннотации, обложки, цены и пр.).
  3. Подача запросов на размещение загруженных материалов в общедоступном каталоге ЛитРес для продажи или бесплатного распространения.
  4. Просмотр статистики по продажам и онлайн-чтению.

3 Последовательность размещения книг в продажу

Пунктирной рамкой выделены не обязательные этапы. Стрелками обозначены основные данные, которые используются при формировании запросов на последующих этапах. Выноски справа обозначают названия запросов к API.

4 Общая информация по работе API

  1. После заключения договора с ЛитРес партнер (издательство или сервис электронного самиздата) получает индивидуальные ключи, которые будут использоваться при формировании запросов к API:
    • partner – идентификатор партнера. Например: «51221432»;
    • secret_key – секретный ключ партнера. Например: «password»;
    • owner – один или несколько идентификаторов правообладателей партнера, определяющих набор ресурсов (сайтов, мобильных приложений и пр.), на которых будут размещаться книги. Например: «9351135».
  2. Работа с API сервера ЛитРес для любой программы-клиента строится по схеме запрос-ответ: клиент формирует и передает запрос, а сервер в ответ возвращает XML-документ с ответом.
  3. Все запросы к серверам ЛитРес осуществляются только по протоколу HTTPS.
  4. Во всех запросах к серверам ЛитРес (если не указано обратное) передаются параметры partner и sha:
    • partner – идентификатор партнера;
    • sha – хеш SHA-256, формируемый индивидуально для каждого из запросов и рассчитываемый как

      $sha=Digest::SHA::sha256_hex($timestamp.':'.$secret_key.':'.$partner)

      где:

      • $timestamp – московское время в формате «2014-11-07T16:21:02+03:00». Каждое значение timestamp можно использовать только один раз, причем оно не может отличаться от серверного (московского) времени более чем на 300 секунд в обе стороны;, где:
      • $secret_key – секретный ключ партнера;
      • $partner – идентификатор партнера.

    Далее в документации все обязательные параметры отмечены красной звездочкой (*).

  5. Все текстовые данные передаются и обрабатываются в кодировке UTF-8.

  6. Все ответы сервера передаются в виде XML, который всегда имеет кодировку UTF-8 (о чем сообщает HTTP-заголовок «Content-type: text/xml; charset=utf-8»);
  7. В XML-ответах, отдаваемых сервером ЛитРес, помимо описанного в документации содержимого, может размещаться, добавляться и удаляться неограниченное и не регламентированное содержание – узлы, текст и атрибуты. Софт на стороне партнера должен корректно отбрасывать и обрабатывать ситуации, при которых, например, в документации описана структура

    а фактически возвращается

    <a b="c" y="x" s="z"><i/><d/><m>text</m></a>

    Атрибуты и параметры, которые вас интересуют, гарантировано останутся по прежнему адресу a/@b и a/d, но дополнительное содержимое может (и будет) появляться и пропадать. Учитывайте эту особенность.

  8. Для всех дробных чисел (например, для цен) в качестве разделителя дробной части используется точка. Число 15,50 является некорректным, а 15.50 и 15.5 – корректными;
  9. Перед размещением книги в общедоступном каталоге ЛитРес, она, а также вся связанная с ней информация (авторы, жанры, серии, цена и т. д.), должна пройти процедуру модерации (одобрения редактором ЛитРес). После того, как книга одобрена и размещена в публичном доступе, единственное, что можно поменять через данное API – её цену. Если требуется переопределить какие-либо другие атрибуты, книга должна заново пройти полную процедуру одобрения.
  10. Все UUID обязательно должны быть сформированы по стандарту RFC 4122. Запрещается генерировать UUID упрощенным генератором случайных символов, т. к. это может вызвать коллизии с другими объектами системы.

5 Жанры ЛитРес

Загружаемая книга должна иметь привязку минимум к одному жанру (но не более четырех!), из классификации ЛитРес (создавать свои жанры нельзя). Книгам присваиваются токены только из «конечных» жанров (type=»genre» в ответе сервера). Все остальные контейнеры (type=»container«) и корневые жанры (type=»root«) предназначены только для определения иерархической структуры жанрового дерева, обладающего неограниченной вложенностью. 

Учитывайте, что жанровое дерево может изменяться. Со временем, например, конечные жанры (genre) могут превратиться в контейнеры (container). Поэтому рекомендуется обновлять информацию по жанровому дереву не реже раза в сутки. Если частые обращения к серверу нежелательны, можно обновлять дерево жанров реже, но ни в коем случае не реже одного раза в 30 дней.

5.1 Запрос списка жанров

Для получения списка жанров ЛитРес используется следующий URL (без каких-либо параметров):
https://sp.litres.ru/genres_list_2/

5.2 Ответ сервера

Пример возвращаемого XML:

<genres>
	<genre id="5003" title="бизнес-книги" type="root">
		<genre id="5049" title="банковское дело" token="bankovskoe_delo" type="genre"/>
		<genre id="5051" title="бухучет / налогообложение / аудит" token="buhuchet_nalogooblozhenie_audit" type="genre"/>
		<genre id="6784" title="государственное и муниципальное управление" token="gosudarstvennoe_i_munitsipalnoe_upravlenie" type="genre"/>
		<genre id="5060" title="делопроизводство" token="deloproizvodstvo" type="genre"/>
		<genre id="5061" title="зарубежная деловая литература" token="zarubezhnaya_delovaya_literatura" type="genre"/>
		<genre id="5062" title="интернет-бизнес" token="internet" type="genre"/>
		<genre id="5047" title="кадровый менеджмент" token="kadrovyj_menedzhment" type="container">
			<genre id="5334" title="аттестация персонала" token="attestaciya_personala" type="genre"/>
			<genre id="5330" title="гендерные различия" token="gendernyye_razlichiya" type="genre"/>
			<genre id="5332" title="конфликты" token="konflikty" type="genre"/>
			<genre id="5336" title="коучинг" token="kouching" type="genre"/>
			<genre id="5333" title="мотивация" token="motivaciya" type="genre"/>
			<genre id="5335" title="поиск и подбор персонала" token="poisk_presonala_hr" type="genre"/>
			<genre id="5331" title="тимбилдинг" token="timbilding" type="genre"/>
			<genre id="6583" title="управление персоналом" token="upravlenie_personalom" type="genre"/>
	</genre>
</genres>

Таким образом, в примере допустимые жанры и их @token‘ы расположены в строках 3-8 и 10-17 (обратите внимание, строка 9 это контейнер). В дальнейшем эти токены используются для привязки книги к какому-то жанру в запросе редактирования карточки книги (partner_object_update), а также внутри FB2-книги в запросе загрузки файла (partner_fb2_upload).

Рекомендуется, чтобы загружаемая книга имела привязку к хотя бы одному-двум тегам (ключевым словам) из классификации ЛитРес. Также рекомендуется регулярно сверять словарь тегов ЛитРес, т.к. теги могут появляться, удаляться, а также незначительно менять текстовое описание.

6.1 Запрос списка тегов

Для получения списка тегов ЛитРес используется URL: https://sp.litres.ru/get_litres_keywords/.

Параметры запроса:

  • partner* – идентификатор партнера;
  • sha* – хеш SHA-256, формируемый индивидуально для каждого из запросов:

    $sha=Digest::SHA::sha256_hex($timestamp.':'.$secret_key.':'.$partner)
  • timestamp* – московское время в формате «2014-11-07T16:21:02+03:00».

Изучить пример кода для формирования sha и посмотреть актуальный список тегов можно с помощью тестового файла SP_LitRes_get_litres_keywords.html.

6.2 Ответ сервера

Пример возвращаемого XML:

<tags timestamp="2015-02-27T18:35:32+03:00">
	<tag uuid="6156b4b6-5b5b-11e4-96e2-0025905a06ea" tag_title="облачные сервисы"/>
	<tag uuid="614bcc80-5b5b-11e4-96e2-0025905a06ea" tag_title="облачные технологии"/>
	<tag uuid="61238fb8-5b5b-11e4-96e2-0025905a06ea" tag_title="обливание"/>
	<tag uuid="bb25750f-9a73-11ea-a00d-441ea1508474" tag_title="обложка ню" visible="0"/>
	<tag uuid="6165b878-5b5b-11e4-96e2-0025905a06ea" tag_title="облучение"/>
	<tag uuid="61415df6-5b5b-11e4-96e2-0025905a06ea" tag_title="обманы зрения"/>
</tags>

Корневой элемент tags имеет атрибут @timestamp, содержащий текущее время сервера.

В tags хранится список ключевых слов, каждое каждое из которых представлено элементом tag со следующим содержимым:

  • @uuid – идентификатор тега. Используется в запросе редактирования карточки книги (partner_object_update);
  • @tag_title – текстовое описание тега. Используется внутри FB2-книги в запросе загрузки файла (partner_fb2_upload);
  • @visible – атрибут, определяющий «видимость» одобренного тега на карточке книги. Может отсутствовать, что означает, что тег будет отображается, по умолчанию.
    Может принимать следующие значения:
    • 0 – тег не виден на карточке книги, даже если он является одобренным;
    • 1 – тег виден на карточке книги.

7 Цены ЛитРес

ЛитРес продает книги по определенной ценовой сетке. Если указанная партнером цена будет отличаться от представленных в сетке, то произойдет округление вверх до ближайшего ценового уровня (или до максимального, если переданная цена выше).

7.1 Запрос ценовой сетки

Для получения ценовой сетки ЛитРес используется следующий URL (без каких-либо параметров): https://sp.litres.ru/static/ds/price_grid.xml.

7.2 Ответ сервера

Пример возвращаемого XML:

<price_data>
	<price value="0.00"/>
	<price value="5.99"/>
	<price value="9.99"/>
	<price value="14.99"/>
	<price value="19.99"/>
	<price value="399.00"/>
	<price value="439.00"/>
	<price value="490.00"/>
</price_data>

Каждый элемент из сетки цен представлен тегом price с атрибутом @value, в котором указана цена в рублях. Данная цена используется в запросе редактирования карточки книги (partner_object_update), а также в запросе изменения цены (partner_art_price_change).

8 Создание и редактирование серий, персон, книг

Для создания и редактирования серий, авторов, переводчиков и самих книг используется единый формат запроса. Причем за один запрос к серверу могут быть созданы или изменены сразу несколько серий/персон/книг.

8.1 Запрос на создание/редактирование серии, персоны, книги

Используется следующий URL: https://sp.litres.ru/partner_object_update/.
Параметры запроса (обязательные параметры отмечены красной звездочкой):

  • partner* – идентификатор партнера;
  • sha* – хеш SHA-256, формируемый индивидуально для каждого из запросов:

    $sha=Digest::SHA::sha256_hex($timestamp.':'.$secret_key.':'.$partner)
  • timestamp* – московское время в формате «2014-11-07T16:21:02+03:00»;

  • request* – в данном параметре необходимо передать XML-документ, содержание которого изменяется в зависимости от того, что необходимо создать или отредактировать (подробнее они рассмотрены ниже):
    • XML для создания/редактирования серии;
    • XML для создания/редактирования персоны;
    • XML для создания/редактирования описания к книге.

Если в XML-документе будет содержаться сразу несколько создаваемых или изменяемых элементов, то они будут обработаны на стороне сервера в следующей последовательности: сначала все серии, затем все персоны и все книги.
Проверить корректность (валидность) XML-документа можно с помощью XSD-схемы query_samizdat.xsd.
Протестировать запросы создания/редактирования элементов можно с помощью тестового файла SP_LitRes_partner_object_update.html.

8.1.1 XML для запроса создания/редактирования серии

Если планируется, что книга будет логически объединена в серию или цикл с какими-то другими книгами, то для них создается «серия» с общим названием.

Пример XML:

<?xml version="1.0" encoding="UTF-8"?>
<update_object>
  <serie uuid="9b9bbdad-22f2-455d-bfe2-73d8f35d340b" name="Название серии" text_descr_source="Подробное описание серии" />
</update_object>

В теге серии update_object/serie указываются следующие атрибуты (обязательные атрибуты отмечены красной звездочкой):

  • @uuid* – уникальный идентификатор серии. Генерируется на стороне партнера при создании новой серии. Если необходимо отредактировать название или описание ранее созданной серии, то используется её старый UUID;
  • @name* – название серии. Значение должно быть уникальным среди всех серий партнера. Иначе запрос вернет ошибку. Максимальная длина – 255 символов. Первая буква заглавная. Точка в конце не нужна. «Капс» запрещен (исключение – аббревиатуры и пр.). Примеры:
    • Библиотека делового человека.
    • 50 оттенков.
    • Журнал «Коллекция Караван историй» 2014.
  • @text_descr_source – описание серии. Примеры:
    • Еженедельный аналитический журнал. На страницах издания вы найдете материалы о политических организациях, власти денег, анализ религиозных и научных идей. В каждом номере рассматриваются такие вопросы как, каким людям и корпорациям принадлежит сегодняшняя власть в России и за рубежом, что представляет собой расстановка сил в политической элите, и многое другое. Ведущие политики и экономисты дают комментарии событиям прошедшей недели и делают точные прогнозы на скорое будущее.
    • «Авантюрный детектив» – серия приключенческих романов Татьяны Поляковой, умело сочетающей захватывающие дух погони, сложные расследования и интригующую любовную линию. Критики и читатели отмечают в своих отзывах, что у разных книг цикла различные оттенки – среди них есть истории с политической окраской, встречаются произведения, щедро сдобренные историческими фактами, а бывают и явно мелодраматические сюжеты, однако легкость восприятия, неизменный юмор автора и счастливые финалы присутствуют всюду. В серию вошло около пятидесяти произведений автора, среди которых романы «Огонь, мерцающий в сосуде», «Я – ваши неприятности», «Уходи красиво» и «Мое второе я». По мотивам авантюрных детективов Татьяны Поляковой снят фильм «Тонкая штучка», а также популярные сериалы «Как бы не так» и «Строптивая мишень».

Проверить корректность (валидность) XML-документа можно с помощью XSD-схемы query_samizdat.xsd.

8.1.2 XML для запроса создания/редактирования персоны

С книгой могут быть связаны различные персоны, такие как авторы, переводчики, художники, составители, редакторы и т.д. Причем в приведенным далее XML сначала создается только описание персоны (ФИО, дата рождения, фотография и пр.), а её роль (автор, переводчик и т. д.) указывается уже в запросе создания/редактирования описания к книге.

Авторско-правовой отдел (АПО) может объединить несколько персон в одну. Например, вы ввели персону Пушкин и загружаете несколько его книг. Но в системе Литрес существует уже Пушкин со множеством других книг. Редактора АПО определили что это одна и та же персона и объединили. С этого момента вы теряете право обновлять описание персоны (будет приходить код ошибки 102216), но можете по прежнему привязывать книги к этой персоне использую ваш старый uuid.

Пример XML:

<?xml version="1.0" encoding="UTF-8"?>
<update_object>
	<person uuid="01f10c47-7369-4702-8d8b-f98fedf05798" first_name="Петр" middle_name="Сергеевич" last_name="Антонов" auto_sklon="1" inverse_full_name="Антонов Петр" birth_year="1969" photo_url="our_authors/123.jpg">
		<description>
			<p>текст <b>жирный текст</b></p>
			<p>Список:</p>
			<ul><li>Элемент1</li><li>Элемент2</li><li>Элемент3</li></ul>
		</description>
	</person>
</update_object>

Ещё пример XML:

<?xml version="1.0" encoding="UTF-8"?>
<update_object>
	<person uuid="33530e47-2cbf-4791-8493-c25b05cf3622" first_name="Дарья" last_name="Донцова" auto_sklon="0" last_rodit="Донцовой" last_dateln="Донцовой" last_vinit="Донцову" last_tvorit="Донцовой" last_predl="Донцовой" full_name="Дарья Донцова" full_rodit="Дарьи Донцовой" full_dateln="Дарье Донцовой" full_vinit="Дарью Донцову" full_tvorit="Дарьей Донцовой" full_predl="Дарье Донцовой" inverse_full_name="Донцова Дарья"/>
</update_object>

В теге персоны update_object/person указываются следующие атрибуты (обязательные атрибуты отмечены красной звездочкой):

  • @uuid* – уникальный идентификатор персоны. Генерируется на стороне партнера при создании новой персоны. Если необходимо отредактировать ранее созданную персону, то используется её старый UUID;
  • @first-name – имя. Максимальная длина – 255 символов. «Капс» запрещен. Точка в конце не нужна (исключение – когда в качестве имени указывается только лишь инициал, например, «А.»;
  • @middle-name – отчество. Максимальная длина – 255 символов. «Капс» запрещен. Точка в конце не нужна (исключение – когда в качестве отчества указывается только лишь инициал, например, «В.»;
  • @last-name* – фамилия. Максимальная длина – 255 символов. Точка в конце не нужна. «Капс» запрещен. Поле @last-name должно быть заполнено обязательно (предупреждение).
    Если персона не имеет фамилии, а использует только псевдоним или имя – оно указывается именно в @last-name;

    Примечание: если необходимо создать нестандартную персону, например, коллектив редакции журнала, тогда в атрибуте @last-name достаточно указать слово «Редакция» или «Издательство».

  • @auto_sklon* – если в этом атрибуте передано значение «1», то склонение имени и фамилии персоны по падежам будет происходить в автоматическом режиме (рекомендуется только для «простых» ФИО). Если указать в атрибуте «0», то необходимо в явном виде «просклонять» персону в следующих дополнительных атрибутах:

    • @last_rodit – фамилия (родительный падеж);
    • @last_dateln – фамилия (дательный падеж);
    • @last_vinit – фамилия (винительный падеж);
    • @last_tvorit – фамилия (творительный падеж);
    • @last_predl – фамилия (предложный падеж);
    • @full_name – «полное имя» (обычно это имя и фамилия) в именительном падеже. Если этот параметр не передан в запросе, то он автоматически формируется из имени, отчества и фамилии, разделенных пробелами: «first-name middle-name last-name». Рекомендуется, чтобы значение в @full_name (или сформированное автоматически) было уникальным среди всех персон партнера. Если же партнер добавит через API пять персон с одинаковыми «полными именами», то при попытке добавить шестую запрос вернет ошибку;
    • @full_rodit – полное имя (родительный падеж);
    • @full_dateln – полное имя (дательный падеж);
    • @full_vinit – полное имя (винительный падеж);
    • @full_tvorit – полное имя (творительный падеж);
    • @full_predl – полное имя (предложный падеж);
    • @inverse_full_name – полное имя в обратном порядке слов в именительном падеже;
  • @birth_year – год рождения в формате «ГГГГ»;
  • @photo_url – относительный путь до изображения/фотографии персоны на сервере партнера, например «our_authors/123.jpg». Допустимый формат файла: JPEG (RGB), картинка должна быть квадратной (предупреждение) и иметь размер не менее 100px;
  • @uilang – необязательный параметр «язык описания автора», двубуквенный символ. По умолчанию ru (и он же основной). Вы можете добавлять варианты написания автора и текста его биографии на других языках отдельными запросами. 
    При заключении договора партнер передает ЛитРес URL директории на своем сервере, в которой будут размещаться фотографии персон, например, «http://www.site.ru/ext_photo/» (загрузка изображений со сторонних ресурсов не допустима). И при обработке запроса на создание/редактирование персоны происходит синхронное скачивание фотографии с комбинированного URL: http://www.site.ru/ext_photo/our_authors/123.jpg. Важно, чтобы изображение было доступно по HTTP без авторизации. Т. к. если произойдет ошибка на этапе загрузки изображения, то весь запрос на обновление персоны получит статус ошибочного;
  • @description – описание автора. Должен содержать один или несколько абзацев или списков, каждый из которых должен быть обрамлен тегами <p></p>,<ul></ul>,<ol></ol>, элемент списка — <li></li>. Стили <b></b><i></i><u></u><sub></sub><sup></sup>. Пустые абзацы не допускаются. Размещение ссылок в description не допускается (предупреждение) (при попытке сервер вернет ошибку 102200 – см. Коды ошибок). 

Пример:

<?xml version="1.0" encoding="UTF-8"?>
<update_object>
	<person last_name="Редакция" uuid="01f10c46-7329-4749-8d8b-f93fedf05699" auto_sklon="1"/>
</update_object>

Для более подробного описания в запросе потребуется просклонять название нестандартной персоны, например:

<?xml version="1.0" encoding="UTF-8"?>
<update_object>
	<person uuid="33530e47-2cbf-4791-8493-c25b05cf3622" last_name="Редакция журнала «Вопросы экологии»" auto_sklon="0" last_rodit="Редакции журнала «Вопросы экологии»" last_dateln="Редакции журнала «Вопросы экологии»" last_vinit="Редакцию журнала «Вопросы экологии»" last_tvorit="Редакцией журнала «Вопросы экологии»" last_predl="Редакции журнала «Вопросы экологии»" full_name="Редакция журнала «Вопросы экологии»" full_rodit="Редакции журнала «Вопросы экологии»" full_dateln="Редакции журнала «Вопросы экологии»" full_vinit="Редакцию журнала «Вопросы экологии»" full_tvorit="Редакцией журнала «Вопросы экологии»" full_predl="Редакции журнала «Вопросы экологии»" inverse_full_name="Редакция журнала «Вопросы экологии»"/>
</update_object>

Проверить корректность (валидность) XML-документа можно с помощью XSD-схемы query_samizdat.xsd

8.1.3 XML для запроса создания/редактирования описания к книге

В XML должно содержаться описание книги, её выходной информации, данных об авторах и т. д. При обновлении объекта всегда указывайте полный набор данных, а не только изменившуюся часть, иначе некоторая информация может быть утеряна.

Пример XML:

<?xml version="1.0" encoding="UTF-8"?>
<update_object>
   <art_to_update uuid="63c38eb5-c0f1-4cae-b170-0bfa812e5c5f" name="Двести возможно лучших рецептов" type="fb2" owner="9351135" date_written_s="2012" date_written_d="2012-01-01" date_translate_s="2014" date_translate_d="2014-01-03" price="14.99" draft="1" update_period="200" publisher="Издательство Привет" isbn="9785170642281" adult="12" adult_cover="yes" adult_annotation="yes" trial_percent="8" valid_till="2015-05-01">
      <title-info>
         <genre>home_cooking</genre>
         <genre>home_crafts</genre>
         <annotation>
            <p>Замечательные рецепты на все случаи жизни.</p>
            <p>Одна из лучших книг в своем серии. Убедительно, ярко, вкусно!</p>
         </annotation>
         <title-relations>
            <related-title uuid="33b19c47-7369-4702-8d8b-f98fedf05798" relation="sequel"/>
            <related-title uuid="58f47daf-aadd-49f7-aaf0-8ff0a6c4e574" relation="prequel"/>
         </title-relations>
         <item-relations>
            <person uuid="5fec2133-b3e1-4a0a-961e-81493c9dfd6d" relation="author"/>
         </item-relations>
         <item-series>
            <related-serie uuid="ab940dec-936d-40fc-8ce4-357e75917e34" />
            <related-serie uuid="9b9bbdad-22f2-455d-bfe2-73d8f35d340b" number="5"/>
         </item-series>
         <art_tags>
            <tag uuid="617082dd-5b5b-11e4-96e2-0025905a06ea"/>
            <tag uuid="61799487-5b5b-11e4-96e2-0025905a06ea"/>
         </art_tags>
         <lang>ru</lang>
         <src-lang>en</src-lang>
         <udc>656.11</udc>
         <udc>[32 + 338](470)</udc>
         <bbk>60.9я73</bbk>
         <bbk>66.2(2Рос) + 65.9(2Рос)</bbk>
      </title-info>
   </art_to_update>
</update_object>

Еще один пример XML с минимальным обязательным набором параметров:

<?xml version="1.0" encoding="UTF-8"?>
<update_object>
   <art_to_update uuid="63c38eb5-c0f1-4cae-b170-0bfa812e5c5f" name="Двести возможно лучших рецептов" type="fb2" owner="9351135" price="14.99" adult="12">
      <title-info>
         <genre>home_cooking</genre>
         <annotation>
		<p>текст <b>жирный текст</b></p>
		<p>Список:</p>
		<ul><li>Элемент1</li><li>Элемент2</li><li>Элемент3</li></ul>
         </annotation>
         <item-relations>
            <person uuid="5fec2133-b3e1-4a0a-961e-81493c9dfd6d" relation="author"/>
         </item-relations>
         <lang>ru</lang>
      </title-info>
   </art_to_update>
</update_object>

Имейте в виду, что в этом запросе важен порядок тегов. Сначала в art_to_update/title-info должны идти жанры (не более четырех), затем аннотация, связи с другими книгами, связи с персонами, серии, теги, язык произведения, язык его оригинала и индексы УДК/ББК (обязательные элементы отмечены красной звездочкой):

  • genre* (не более четырех);
  • annotation*;
  • title-relations;
  • item-relations*;
  • item-series;
  • art_tags;
  • lang*;
  • src-lang;
  • udc;
  • bbk.

Если расположить элементы в ином порядке, то API будет выдавать ошибку. Проверить корректность (валидность) XML-документа можно с помощью XSD-схемы query_samizdat.xsd.

Описание создаваемой/редактируемой книги представляется тегом update_object/art_to_update со следующим содержимым (обязательные теги и атрибуты отмечены красной звездочкой):

  • @uuid* – уникальный идентификатор книги. При создании новой книги UUID должен быть сгенерирован партнером. Если в этом параметре передается UUID от созданной ранее книги, то происходит обновление параметров, перечисленных в запросе;
  • @name* – полное название книги. Оно должно быть уникальным среди всех книг партнера, иначе запрос вернет ошибку. Рекомендации по названию:
    • название книги не должно состоять из прописных буква, т. е. названия «капсом» запрещены. Допускается в исключительных случаях, например: 100 мест всемирного наследия ЮНЕСКО;
    • в начале и конце названия не должно быть пробелов;
    • в конце названия точка не требуется. Примеры-исключения: Великие сражения 1920–1870 гг. Исторические завитушки – или проба пера?..;
    • если в названии книги есть кавычки-лапки, то их рекомендуется заменить на кавычки-ёлочки. Пример корректных кавычек: Операция «Багратион»;
  • @type* – формат книги. Допустимые значения: «fb2», «fb3» и «pdf», «audio»;
  • @owner* – уникальный идентификатор правообладателя партнера, определяющий набор ресурсов/площадок, на которых будет размещена книга (значение для этого параметра передается партнеру при заключении договора с ЛитРес);
  • @date_written_s – дата написания книги в формате «ГГГГ»;
  • @date_written_d – дата написания книги в формате «ГГГГ-ММ-ДД»;
  • @date_translate_s – дата перевода книги с языка оригинала в формате «ГГГГ»;
  • @date_translate_d – дата перевода книги с языка оригинала в формате «ГГГГ-ММ-ДД»;
  • @draft – атрибут, указывающий на то, что книга является «черновиком». Данный атрибут принимается только для книг типа «0»;
  • @update_period – периодичность обновления «черновика» в днях. Передается только совместно с атрибутом «draft» и может принимать целочисленные значение в промежутке от 0 до 255;
  • @price* – цена на книгу в рублях в формате дробного числа с точкой в качестве разделителя дробной части, например: «99.90» или «99.9». Сетка доступных для использования цен приводится в главе «цены ЛитРес». Если в данном параметре будет передана иная цена, то при размещении книги в продажу она все равно округлится вверх до ближайшего значения из сетки цен (но не больше максимального). Если необходимо распространять книгу бесплатно, то укажите цену «0.00»;
  • @publisher – полное название издательства, опубликовавшего книгу, например «Эксмо-Пресс»;
  • @publisher_code – внутренний издательский код книги. Длина до 100 символов.
  • @isbn – ISBN книги (целое число, состоящее из 13 цифр без разделителей);
  • @adult* – возрастное ограничение, накладываемое на содержание книги (целое число). Доступные значения: 0, 6, 12, 16, 18, 21;
  • @adult_cover – если на обложке книги есть что-то, подпадающее под возрастное ограничение «18+», то в этом атрибуте необходимо передать значение «yes». Иначе по умолчанию используется значение «no»;
  • @adult_annotation – если в аннотации книги есть что-то, подпадающее под возрастное ограничение «18+», то в этом атрибуте необходимо передать значение «yes». Иначе по умолчанию используется значение «no»;
  • @trial_percent – (актуально только для FB2-книг, у pdf-книг задается по листам в другом запросе) размер фрагмента книги в процентах, доступный читателю для бесплатного ознакомления перед покупкой. Доступные значения: целое число от 8 до 20 включительно. Значение по умолчанию: 25%;
  • @preview_length – размер фрагмента аудио книги в секундах, доступный читателю для бесплатного ознакомления перед покупкой. По умолчанию это 10% от начала первого mp3 файла книги, но не более 300 секунд. Актуально только для книг, у которых указан тип @type=audio;
  • @valid_till – дата индивидуального окончания прав на данную книгу в формате «ГГГГ-ММ-ДД». При наступлении указанной даты книга автоматически полностью снимется с продажи. Также с помощью этого атрибута можно принудительно снять книгу с продажи, передав в нём текущую дату;
  • @keep_on_sale – атрибут, указывающий, что книга должна остаться в продаже. Принимает значение =1. Если параметр не передан, то при обновлении данных книги, она будет снята с продажи;
  • title-info/genre* – перечень жанров книги. Допустимые значения приведены в главе «жанры ЛитРес» в атрибутах @token. Для каждой книги должен быть определен хотя бы один такой жанр;
  • title-info/annotation* – аннотация к книге. Должен содержать один или несколько абзацев или списков, каждый из которых должен быть обрамлен тегами <p></p>,<ul></ul>,<ol></ol>, элемент списка — <li></li>. Стили <b></b><i></i><u></u><sub></sub><sup></sup>. Пустые абзацы не допускаются. Размещение ссылок в аннотации не допускается (предупреждение) (при попытке сервер вернет ошибку 102201 – см. Коды ошибок);
  • title-info/title-relations/related-title – список логических связей с другими книгами, добавленными ранее через API. Например, если книга является второй в серии, то можно создать связь с первой книгой (предыдущим выпуском). Атрибуты:
    • @uuid* – уникальный идентификатор логически связанной книги. Такая книга должна быть заранее создана партнером, но не обязательно размещена в продажу;
    • @relation* – тип связи между книгами. Допустимые значения:
      • previous – предыдущий выпуск;
      • next – следующий выпуск;
      • translated_from – перевод с;
      • translated – перевод;
      • collected – сборник;
      • part – часть;
      • reedition – переиздание;
      • sequel – продолжение;
      • prequel – предыстория;
      • another_type – другой тип книги, например аудиоверсия для текстовой;
      • auto_speech – создана авточтецом;
      • auto_speech_paid – cоздана авточтецом на продажу.
  • title-info/item-relations/person* – список персон, связанных с книгой. Важно, чтобы к книге была привязана хотя бы одна персона (автор, составитель или кто-то еще). Атрибуты:
    • @uuid* – уникальный идентификатор персоны. Такая персона должна быть заранее создана партнером;
    • @relation* – роль персоны по отношению к книге. Допустимые значения:
      • author – автор;
      • translator – переводчик;
      • illustrator – художник;
      • compiler – составитель;
      • editor – редактор;
      • narrator – чтец;
      • coauthor – соавтор.
    • @license_end – [зарезервировано и не используется].

  • title-info/item-series/related-serie – список серий, в которых размещается книга. Если в запросе не передан этот тег, то серии, присвоенные книге ранее, не будут изменены. Атрибуты:
    • @uuid* – уникальный идентификатор серии. Такая серия должна быть заранее создана партнером;
    • @number – порядковый номер книги в серии (целое положительное число). Следует указывать, если есть порядковая нумерация книг в серии. И, если вы добавляете, например, сначала 3-й выпуск номера журнала, а потом планируете добавить первые два, то необходимо сразу указывать корректную нумерацию. Издательские серии, например, «учебники высшей школы», как правило, идут без номера серии (но при желании можно и указать).

Дополнительно в узле item-series можно передать необязательный параметр keep_old=1. Он определяет, что переданный в этом запросе список серий нужно добавить к уже имеющимся сериям, в которых размещается книга. Если параметр не передан явным образом (а по умолчанию keep_old=0) и при этом передан пустой тег item-series, то в результате выполнения запроса все ранее присвоенные серии, в которых размещается книга, будут удалены.

  • title-info/art_tags/tag – список тегов (ключевых слов) книги. Атрибуты:
    • @uuid* – уникальный идентификатор ключевого слова. Допустимые значения рассмотрены в главе «теги ЛитРес»;
  • title-info/lang* – язык, на котором написана книга (двухбуквенный код в нижнем регистре в формате ISO). Допустимые значения:
    • ru – Русский;
    • uk – Украинский;
    • en – Английский;
    • de – Немецкий;
    • fr – Французский;
    • ab – Абхазский;
    • az – Азербайджанский;
    • ay – Аймара;
    • sq – Албанский;
    • ar – Арабский;
    • hy – Армянский;
    • as – Ассамский;
    • af – Африкаанс;
    • ts – Банту;
    • eu – Баскский;
    • ba – Башкирский;
    • be – Белорусский;
    • bn – Бенгальский;
    • my – Бирманский;
    • bh – Бихарский;
    • bg – Болгарский;
    • br – Бретонский;
    • cy – Валлийский;
    • hu – Венгерский;
    • wo – Волоф;
    • vi – Вьетнамский;
    • gd – Гаэльский;
    • nl – Голландский;
    • el – Греческий;
    • ka – Грузинский;
    • gn – Гуарани;
    • da – Датский;
    • gr – Древнегреческий;
    • iw – Древнееврейский;
    • dr – Древнерусский;
    • zu – Зулу;
    • he – Иврит;
    • yi – Идиш;
    • in – Индонезийский;
    • ia – Интерлингва;
    • ga – Ирландский;
    • is – Исландский;
    • es – Испанский;
    • it – Итальянский;
    • kk – Казахский;
    • kn – Каннада;
    • ca – Каталанский;
    • ks – Кашмири;
    • qu – Кечуа;
    • ky – Киргизский;
    • zh – Китайский;
    • ko – Корейский;
    • kw – Корнский;
    • co – Корсиканский;
    • ku – Курдский;
    • km – Кхмерский;
    • xh – Кхоса;
    • la – Латинский;
    • lv – Латышский;
    • lt – Литовский;
    • mk – Македонский;
    • mg – Малагасийский;
    • ms – Малайский;
    • mt – Мальтийский;
    • mi – Маори;
    • mr – Маратхи;
    • mo – Молдавский;
    • mn – Монгольский;
    • na – Науру;
    • ne – Непали;
    • no – Норвежский;
    • pa – Панджаби;
    • fa – Персидский;
    • pl – Польский;
    • pt – Португальский;
    • ps – Пушту;
    • rm – Ретороманский;
    • ro – Румынский;
    • rn – Рунди;
    • sm – Самоанский;
    • sa – Санскрит;
    • sr – Сербский;
    • si – Сингальский;
    • sd – Синдхи;
    • sk – Словацкий;
    • sl – Словенский;
    • so – Сомали;
    • st – Сото;
    • sw – Суахили;
    • su – Сунданский;
    • tl – Тагальский;
    • tg – Таджикский;
    • th – Тайский;
    • ta – Тамильский;
    • tt – Татарский;
    • te – Телугу;
    • bo – Тибетский;
    • tr – Турецкий;
    • tk – Туркменский;
    • uz – Узбекский;
    • ug – Уйгурский;
    • ur – Урду;
    • fo – Фарерский;
    • fj – Фиджи;
    • fi – Финский;
    • fy – Фризский;
    • ha – Хауса;
    • hi – Хинди;
    • hr – Хорватскосербский;
    • cs – Чешский;
    • sv – Шведский;
    • sn – Шона;
    • eo – Эсперанто;
    • et – Эстонский;
    • jv – Яванский;
    • ja – Японский;
  • title-info/src-lang – язык, с которого было переведено данное произведение (язык оригинала) – двухбуквенный код в нижнем регистре в формате ISO. Важно: оставьте это поле пустым, если книга не переводилась и язык оригинала совпадает с языком, на котором написана книга;
  • title-info/udc – перечень УДК-индексов книги. У книги может быть несколько индексов и каждый из них записывается в отдельном теге title-info/udc. Важно, чтобы в значении индекса отсутствовал префикс «УДК». Примеры корректных индексов:
    • 656.11;
    • 656.072:338.47;
    • 001(470);
    • 070(571.54)(091);
    • [32 + 338](470);

    • 364(571.53/.54)(091)(075.8);
    • 340.15(47+57)(075.8);
    • [574 + 502/504](075.8);

    • 94(100)«654»(075.8).
  • title-info/bbk – перечень ББК-индексов книги. У книги может быть несколько индексов и каждый из них записывается в отдельном теге title-info/bbk. Важно, чтобы в значении индекса отсутствовал префикс «ББК». Примеры корректных индексов:
    • 72;
    • 39.311;
    • 60.9я73;
    • 63.3(0)5я73;
    • 28.080я73 + 20.18я73;
    • 66.2(2Рос) + 65.9(2Рос).

Проверить корректность (валидность) XML-документа можно с помощью XSD-схемы query_samizdat.xsd.

8.2 Ответ сервера

Пример возвращаемого XML:

<update_object_result>
	<updated_object result="error" timestamp="2015-05-27T18:20:30+03:00" error_message="Failed to add relation with art uuid = '33b19c47-7369-4702-8d8b-f98fedf05798': no ownership or art doesn't exist" uuid="63c38eb5-c0f1-4cae-b170-0bfa812e5c5f" error_code="102014"/>
</update_object_result>

В ответе каждый создаваемый или редактируемый элемент (серия, персона, книга) представлен тегами update_object_result/updated_object со следующим содержимым:

  • @result* – в случае успешной обработки элемента (серии, персоны, книги) этот атрибут имеет значение ok, иначе – error;
  • @timestamp* – дата и время обработки запроса на сервере;
  • @error_message – текстовое описание ошибки на английском языке (в случае, если result=»error»);
  • @error_code – код ошибки (в случае, если result=»error»). Перечень всех кодов с описанием см. в разделе «Коды ошибок»;
  • @uuid* – идентификатор создаваемого/редактируемого элемента.

9 Загрузка файла FB2 (FB3) и отправка книги на модерацию

9.1 Запрос на загрузку файла FB2 (FB3) и отправку книги на модерацию

Для FB2-файлов используется URL: https://sp.litres.ru/partner_fb2_upload/.
Для FB3-файлов используется URL: https://sp.litres.ru/partner_fb3_upload/.

(предупреждение) Параллельная загрузка объектов от одного робота не поддерживается. Загружайте объекты по одному экземпляру.

Параметры запроса (обязательные параметры отмечены красной звездочкой):

  • partner* – идентификатор партнера;
  • sha* – хеш SHA-256, формируемый индивидуально для каждого из запросов:

    $sha=Digest::SHA::sha256_hex($timestamp.':'.$secret_key.':'.$partner)
  • timestamp* – московское время в формате «2014-11-07T16:21:02+03:00»;

  • uuid* – уникальный идентификатор загружаемой книги;
  • file* – в данном параметре необходимо передать содержимое файла книги в ZIP-архиве. К загружаемым файлам предъявляются требования:
    • кодировка текста в файле: UTF-8;
    • допустимые символы в тексте файла: диапазоны допустимых символов;
    • книга в FB2-формате должна соответствовать схеме FictionBook2.2;
    • не допускаются к использованию следующие конструкции:
      • table – теги таблиц недопустимы. Все таблицы должны быть вставлены в книгу в виде изображений;
      • stylesheet – использование стилей недопустимо;
    • все внутренние сноски и ссылки внутри книги должны иметь актуальные точки привязки;
    • размер конечного файла в ZIP-архиве: не более 30 МБ;
    • в книге не должно быть оглавления (оно будет формироваться автоматически из заголовков);
    • все изображения в книге должны быть в форматах JPEG или PNG в цветовой схеме RGB с разрешением каждого файла не более 2 мегапиксела (длина × ширина ≤ 2 000 000 px). Рекомендуемый размер: 600-1000 px по длинной стороне. При этом все изображения в книге обязательно должны быть использованы;
    • в загружаемом файле может содержаться обложка книги. Но если она не задана, то на стороне ЛитРес она будет сгенерирована автоматически. Требования к обложке:
      • расширение файла: JPG;
      • цветовая схема: RGB;
      • минимальный размер бо́льшей стороны обложки: 1500 px, например 1000×1500 px;
      • в качестве обложки допустимо использовать только лицевую сторону книги без каких-либо дополнительных эффектов (например, 3D и т. п.);
      • рекомендуемое (но не обязательное) соотношение сторон: 5×7 (W×H);
    • для FB2-книг можете воспользоваться более подробными рекомендациями по оформлению и вёрстке «Советы для верстальщиков»;
    • для создания FB3-книг можно пользоваться специальным редактором http://fb3edit.org/. (предупреждение) Рекомендуется заполнять все поля описания, чтобы избежать далее проблем с модерацией и релизом.

  • keep_on_sale – необязательный атрибут, указывающий, что книга должна остаться в продаже. Принимает значение =1. Если параметр не передан, то при обновлении FB2/FB3 файлов, книга будет снята с продажи;
  • file_checksum – необязательный атрибут, определяющий необходимость проверки FB2/FB3-файла на целостность. Принимает значение sha256 от файла (например, считается линукс-утилитой «sha256sum»), в нижнем регистре.

Пример содержимого FB2-файла:

<FictionBook xmlns="http://www.gribuser.ru/xml/fictionbook/2.0" xmlns:l="http://www.w3.org/1999/xlink">
 <description>
  <title-info>
   <genre>poetry</genre>
   <author>
    <first-name>Владимир</first-name>
    <middle-name>Владимирович</middle-name>
    <last-name>Маяковский</last-name>
    <id>dce719b0-2a83-102a-9ae1-2dfe723fe7c7</id>
   </author>
   <book-title>Тучкины штучки</book-title>
   <annotation>
    <p>«Плыли по◦небу тучки.</p>
    <p>Тучек◦– четыре штучки:</p>
    <p>от первой до◦третьей◦– люди,</p>
    <p>четвёртая была◦– верблюдик…»</p>
   </annotation>
   <date></date>
   <lang>ru</lang>
   <sequence name="Хрестоматии для начальной школы">
    <sequence name="Большая хрестоматия для начальной школы">
     <sequence name="Современная русская литература"/>
    </sequence>
   </sequence>
  </title-info>
  <document-info>
   <author>
    <nickname>MCat78</nickname>
   </author>
   <program-used>FictionBook Editor Release 2.6.6</program-used>
   <date value="2012-10-09">09 October 2012</date>
   <src-url>http://www.litres.ru/pages/biblio_book/?art=4235585</src-url>
   <src-ocr>Текст предоставлен издательством</src-ocr>
   <id>aa9720a5-12f6-11e2-86b3-b737ee03444a</id>
   <version>1.0</version>
   <history>
    <p>v 1.0 – создание fb2 – (MCat78)</p>
   </history>
  </document-info>
  <publish-info>
   <book-name>Большая хрестоматия для начальной школы</book-name>
   <publisher>Эксмо</publisher>
   <city>Москва</city>
   <year>2012</year>
   <isbn>978-5-699-56619-8</isbn>
   <sequence name="Для школьников и учеников начальных классов"/>
  </publish-info>
 </description>
 <body>
  <title>
   <p>Владимир Владимирович Маяковский</p>
   <p>Тучкины штучки</p>
  </title>
  <section>
   <poem>
    <stanza>
     <v>Плыли по◦небу тучки.</v>
     <v>Тучек◦– четыре штучки:</v>
     <v>от первой до◦третьей◦– люди,</v>
     <v>четвёртая была◦– верблюдик,</v>
     <v>К ним, любопытством объятая,</v>
     <v>по дороге пристала пятая,</v>
     <v>от неё в◦небосинем лоне</v>
     <v>разбежались за◦слоником слоник.</v>
     <v>И, не◦знаю, спугнула шестая ли,</v>
     <v>тучки взяли все◦– и◦растаяли.</v>
     <v>И следом за◦ними, гонясь и</v>
     <v>сжирав,</v>
     <v>солнце погналось◦—</v>
     <v>жёлтый жираф.</v>
    </stanza>
   </poem>
  </section>
 </body>
</FictionBook>

С примерами FB3-файлов можно ознакомиться по ссылке: https://github.com/gribuser/FB3/tree/master/Examples.

    • XML запроса создания/редактирования описания к книге

Данные в теге description FB2-книги

Параметры «XML запроса создания/редактирования описания к книге», из которого можно взять эти данные

Описание

title-info/genre

title-info/genre

Перечень жанров книги

title-info/author

title-info/item-relations/person/@uuid

Автор книги, @id которого должен совпадать с уникальным идентификатором персоны автора

title-info/book-title

@name

Название книги

title-info/annotation

title-info/annotation

Аннотация к книге

title-info/keywords

title-info/art_tags/tag

Ключевые слова (UUID этих тегов приведены в title-info/art_tags/tag, но в FB2-книге должны быть перечислены текстовые описания тегов)

title-info/date

@date_written_s

Дата написания книги

title-info/lang

title-info/lang

Язык, на котором написана книга

title-info/src-lang

title-info/src-lang

Язык, на котором был написан оригинал произведения

title-info/translator

title-info/item-relations/person/@uuid

Перечень переводчиков книги, @id которых должны совпадать с уникальными идентификаторами переводчиков

title-info/sequence

title-info/item-series/related-serie

Список серий, в которых размещается книга

document-info/id

@uuid

Уникальный идентификатор книги

publish-info/publisher

@publisher

Полное название издательства, опубликовавшего книгу

publish-info/isbn

@isbn

ISBN книги

Протестировать запросы загрузки можно с помощью тестового файла. Пример тестового файла для FB2-книги SP_LitRes_partner_fb2_upload.html. Для FB3-книги нужно заменить action на https://sp.litres.ru/partner_fb3_upload/ и заголовок, соответственно.

9.2 Ответ сервера

Пример возвращаемого XML при загрузке FB2-файла:

<update_object_result result="ok" timestamp="2015-05-26T13:52:52+03:00" file_id="12736028"/>

В ответе в update_object_result содержатся следующие атрибуты:

  • @result* – в случае успешной обработки элемента (серии, персоны, книги) этот атрибут имеет значение ok, иначе – error;
  • @timestamp* – дата и время обработки запроса на сервере;
  • @error_message – текстовое описание ошибки на английском языке (в случае, если result=»error»);
  • @error_code – код ошибки (в случае, если result=»error»). Перечень всех кодов с описанием см. в разделе «Коды ошибок»;
  • @file_id – уникальный целочисленный номер файла. В дальнейшем вы сможете посмотреть перечень всех «привязанных» к книге файлов в запросе объектов, изменивших свое состояние (partner_update_log).

Пример возвращаемого XML при загрузке FB3-файла:

<update_object_result result="ok" timestamp="2015-05-26T13:52:52+03:00"/>

При загрузке FB3-файла в ответе в update_object_result содержатся все те же атрибуты, что и при загрузке FB2-файла за исключением атрибута @file_id.

Учитывайте, что успешное выполнение этого запроса запускает на стороне ЛитРес процедуру «релиза» загруженного файла (создание файлов книги в разных форматах). И до окончания процесса релиза изменять описание или сам файл книги нельзя: при попытке обновления данных API будет выдавать сообщение об ошибке.

9.3 Запрос статуса релиза загруженного файла книги

Файл книги проходит обработку в системе, проходит «релиз»: создаются файлы для бесплатного отрывка, создаются файлы для онлайн читалок, файлы альтернативных форматов и т.д. Когда файл книги успешно проходит релиз, он поступает на модерацию.
Релиз может завершиться с ошибкой, в этом случае книга не поступит на модерацию.
Арт может не содержаться в релизной таблице, но обычно в течение нескольких недель после попытки (с любым исходом) релиза арт в ней присутствует.

Узнать статус релиза можно запросом: https://sp.litres.ru/partner_release_status/.

Параметры запроса (обязательные параметры отмечены красной звездочкой):

  • partner* – идентификатор партнера;
  • sha* – хеш SHA-256, формируемый индивидуально для каждого из запросов:

    $sha=Digest::SHA::sha256_hex($timestamp.':'.$secret_key.':'.$partner)
  • timestamp* – московское время в формате «2014-11-07T16:21:02+03:00»;

  • uuid* – уникальный идентификатор загружаемой книги (один или несколько – до 100 штук);

В ответе для каждой указанной книги будет элемент release_status содержащий следующие атрибуты:

  • @status*waiting, processing, ok, error, not found;
  • @timestamp* – дата и время обработки запроса на сервере;
  • @file_id* – уникальный целочисленный номер файла;
  • @uuid* – уникальный идентификатор книги;
  • @error_message – техническое сообщение системы об ошибке (в случае, если status=»error»);
  • @requested, @started, @finished – время постановки в очередь, начала и завершения обработки (если не NULL).

10 Загрузка PDF-файлов книги на FTP

Файл книги в PDF-формате может иметь достаточно большие размеры. Поэтому для их передачи используется особая процедура загрузки.
Для начала книгу необходимо закачать по FTP на специальный сервер ЛитРес (адрес, логин и пароль сообщаются партнеру при заключении договора). На этом сервере загруженный файл хранится несколько часов. За это время нужно успеть выполнить запрос на модерацию PDF-книги (partner_object_update).

Требования к PDF-файлу книги:

  • все страницы книги должны находиться в одном PDF файле.Рекомендуется, что бы на одной странице PDF документа была отдельная страница книги, а не разворот;
  • PDF файл должен быть оптимизирован по размеру. Для чтения книги в электронном виде не требуется такое высокое качество, как для полиграфии. Поэтому размер PDF файла нужно уменьшать настолько, чтобы его можно было быстро скачать через мобильный интернет и при этом читаемость текста и качество картинок осталась на должном уровне;
  • название PDF файла должно состоять только из английских букв, арабских цифр и символов нижнего подчёркивания «_». Пробелы запрещены! Рекомендуется задавать «человекочитаемые» названия, т. к. конечные пользователи скачают файл книги именно с этим названием.

11 Загрузка обложек для PDF-книг

В случае с книгами в формате FB2 обложка берется из содержимого FB2-файла. А для PDF-книг обложку необходимо загружать отдельно. Если её не загрузить, то книга будет вообще без обложки (автогенерация обложек для PDF не предусмотрена).
Требования к файлу обложки аналогичны требованиям для FB2-обложек и рассмотрены ранее в запросе загрузки FB2 книг.

11.1 Запрос на загрузку обложки для PDF-книги

Используется следующий URL: https://sp.litres.ru/partner_cover_upload/.

(предупреждение) Параллельная загрузка объектов от одного робота не поддерживается. Загружайте объекты по одному экземпляру.
 Здесь и далее под роботом ЛитРес понимается скрипт-обработчик, выполняющий действия по добавлению, изменению, удалению книги, ее атрибутов (жанров, серий, описания, цены и т. д.) и правообладателей на стороне партнера.

Параметры запроса (обязательные параметры отмечены красной звездочкой):

  • partner* – идентификатор партнера;
  • sha* – хеш SHA-256, формируемый индивидуально для каждого из запросов:

    $sha=Digest::SHA::sha256_hex($timestamp.':'.$secret_key.':'.$partner)
  • timestamp* – московское время в формате «2014-11-07T16:21:02+03:00»;

  • uuid* – уникальный идентификатор загружаемой книги;
  • file* – в данном параметре необходимо передать JPEG-файл обложки;
  • file_checksum – необязательный атрибут, определяющий необходимость проверки файла обложки на целостность. Принимает значение sha256 от файла (например, считается линукс-утилитой «sha256sum»), в нижнем регистре.

Протестировать запросы загрузки файлов обложек можно с помощью тестового файла SP_LitRes_partner_cover_upload.html.

11.2 Ответ сервера

Пример возвращаемого XML:

<update_object_result result="error" timestamp="2015-05-26T16:34:28+03:00" error_message="Only images in JPEG format are allowed but 'test.pdf' was given" error_code="102039"/>

В ответе в update_object_result содержатся следующие атрибуты:

  • @result* – в случае успешной обработки элемента (серии, персоны, книги) этот атрибут имеет значение ok, иначе – error;
  • @timestamp* – дата и время обработки запроса на сервере;
  • @error_message – текстовое описание ошибки на английском языке (в случае, если result=»error»);
  • @error_code – код ошибки (в случае, если result=»error»). Перечень всех кодов с описанием см. в разделе «Коды ошибок».

12 Отправка PDF книги на модерацию

После того, как PDF-файл книги загружен на FTP, а обложка загружена и привязана к книге, вы можете отправить PDF-книгу на модерацию.

12.1 Запрос на модерацию PDF-книги

Для отправки PDF-книги на модерацию используется тот же запрос, что и для редактирования серий,авторов и книг: https://sp.litres.ru/partner_object_update/.

Параметры запроса (обязательные параметры отмечены красной звездочкой):

  • partner* – идентификатор партнера;
  • sha* – хеш SHA-256, формируемый индивидуально для каждого из запросов:

    $sha=Digest::SHA::sha256_hex($timestamp.':'.$secret_key.':'.$partner)
  • timestamp* – московское время в формате «2014-11-07T16:21:02+03:00»;

  • request* – в данном параметре необходимо передать XML-документ следующего содержания:

    <?xml version="1.0" encoding="UTF-8"?>
    <update_object>
      <pdf_to_upload name="MoskovskyKomsomolec_215_2014.pdf" sha="123ab..22123" preview_pages="1-4,7-8,15" uuid="63c38eb5-c0f1-4cae-b170-0bfa812e5c5f" />
    </update_object>

    где:

    • @name* – название файла PDF-книги, предварительно загруженной на FTP;
    • @sha* – хеш SHA-256 от содержимого файла книги (важно: FTP протокол старый), в нижнем регистре;
    • @preview_pages* – перечень страниц (или диапазонов страниц), которые должны войти в файл предварительного просмотра, доступного читателю перед покупкой книги. Рекомендуется включать в него не более 20% книги. Пример: preview_pages=«1-4,7-8,15»;
    • @uuid* – уникальный идентификатор книги.

Проверить корректность (валидность) XML-документа можно с помощью XSD-схемы query_samizdat.xsd, а протестировать сам запрос отправки PDF-книги на модерацию можно с помощью тестового файла SP_LitRes_partner_object_update.html.

12.2 Ответ сервера

Пример возвращаемого XML:

<update_object_result>
   <updated_object result="ok" timestamp="2015-09-11T18:21:57+03:00" file_id="14651742" preview_id="14651749" uuid="fa7d41d5-54df-50fb-9234-dcd857a50674" />
</update_object_result>

В ответе содержится тег update_object_result/updated_object со следующим содержимым:

  • @result* – в случае успешной обработки запроса этот атрибут имеет значение ok, иначе – error;
  • @timestamp* – дата и время обработки запроса на сервере;
  • @error_message – текстовое описание ошибки на английском языке (в случае, если result=»error»);
  • @error_code – код ошибки (в случае, если result=»error»). Перечень всех кодов с описанием см. в разделе «Коды ошибок»;
  • @file_id – уникальный целочисленный номер файла с полной версией PDF-книги. В дальнейшем вы сможете посмотреть перечень всех «привязанных» к книге файлов в запросе объектов, изменивших свое состояние (partner_update_log);
  • @preview_id – уникальный целочисленный номер файла с фрагментом PDF-книги. В дальнейшем вы сможете посмотреть перечень всех «привязанных» к книге файлов в запросе объектов, изменивших свое состояние (partner_update_log);
  • @uuid – идентификатор книги.

Учитывайте, что успешное выполнение этого запроса запускает на стороне ЛитРес процедуру «релиза» PDF-книги (создание демо-файла с отрывком книги, генерация изображений для мобильных приложений и пр.). И до окончания процесса релиза изменять описание к книге или повторно отправлять её на модерацию нельзя: в таком случае API будет выдавать сообщение об ошибке.

13 Загрузка файлов аудио книги на FTP

Для передачи файла книги в аудио формате используется такая же процедура загрузки, как и с книгами в формате PDF.
Для начала книгу необходимо закачать по FTP на специальный сервер ЛитРес (адрес, логин и пароль сообщаются партнеру при заключении договора). На этом сервере загруженный файл хранится несколько часов. За это время нужно успеть выполнить запрос на модерацию аудио-книги (partner_object_update).

Требования к файлам аудио книги:

  • все файлы аудио книги должны находиться в одном zip-архиве и должны быть пронумерованы по-порядку (например, *_01.mp3, *_02.mp3, *_03.mp3);
  • названия файлов аудио книги должны состоять только из английских букв, арабских цифр и символов нижнего подчёркивания «_». Пробелы запрещены! Рекомендуется задавать «человекочитаемые» названия, т. к. конечные пользователи скачают файл книги именно с этим названием;
  • если в архиве не содержится файл с именем «sample.*», то ознакомительный фрагмент будет сформирован автоматически из файла книги, который является первым по нумерации (10% файла от начала, но по длительности не более 300 секунд).

14 Загрузка обложек для аудио книг

Для аудио книг обложку необходимо загружать отдельно. Если её не загрузить, то книга будет без обложки (автоматическая генерация не предусмотрена). Загрузка обложек для аудио книг аналогична загрузке обложек для PDF-книг. Требования к файлу обложки аудио книги аналогичны требованиям для FB2-обложек и рассмотрены ранее в запросе загрузки FB2 книг.

15 Отправка аудио книги на модерацию

После того, как файл аудио книги загружен на FTP, обложка также загружена и привязана к книге, вы можете отправить книгу на модерацию.

15.1 Запрос на модерацию аудио книги

Для отправки аудио книги на модерацию используется тот же запрос, что и для редактирования серий, авторов и книг: https://sp.litres.ru/partner_object_update/.

Параметры запроса (обязательные параметры отмечены красной звездочкой):

  • partner* – идентификатор партнера;
  • sha* – хеш SHA-256, формируемый индивидуально для каждого из запросов:

    $sha=Digest::SHA::sha256_hex($timestamp.':'.$secret_key.':'.$partner)
  • timestamp* – московское время в формате «2014-11-07T16:21:02+03:00»;

  • request* – в данном параметре необходимо передать XML-документ следующего содержания:

    <?xml version="1.0" encoding="UTF-8"?>
    <update_object>
      <audio_to_upload name="strannyi_zaichik.mp3" preview_length="90" sha=«123ab..22123» uuid=«63c41eb5-c0f1-4cae-b170-0bfa812e5c5f» />
    </update_object>

    где:

    • @name* – название файла аудио книги, предварительно загруженной на FTP;
    • @sha* – хеш SHA-256 от содержимого файла книги (важно: FTP протокол старый);
    • @uuid* – уникальный идентификатор книги;
    • @preview_length – размер фрагмента аудио книги в секундах, доступный читателю для бесплатного ознакомления перед покупкой. По умолчанию это 10% от начала первого mp3 файла книги, но не более 300 секунд.

Проверить корректность (валидность) XML-документа можно с помощью XSD-схемы query_samizdat.xsd, а протестировать сам запрос отправки аудио книги на модерацию можно с помощью тестового файла SP_LitRes_partner_object_update.html.

15.2 Ответ сервера

Пример возвращаемого XML:

<update_object_result>
   <updated_object result="ok" timestamp="2015-09-11T18:21:57+03:00" uuid="fa7d41d5-54df-50fb-9234-dcd857a50674" />
</update_object_result>

В ответе содержится тег update_object_result/updated_object со следующим содержимым:

  • @result* – в случае успешной обработки запроса этот атрибут имеет значение ok, иначе – error;
  • @timestamp* – дата и время обработки запроса на сервере;
  • @error_message – текстовое описание ошибки на английском языке (в случае, если result=»error»);
  • @error_code – код ошибки (в случае, если result=»error»). Перечень всех кодов с описанием см. в разделе «Коды ошибок»;
  • @uuid – идентификатор книги.

Учитывайте, что успешное выполнение этого запроса запускает на стороне ЛитРес процедуру «релиза» аудио книги (создание демо-файла с отрывком книги, генерация изображений для мобильных приложений и пр.). И до окончания процесса релиза изменять описание к книге или повторно отправлять её на модерацию нельзя: в таком случае API будет выдавать сообщение об ошибке.

16 Проверка статуса книги, персоны или серии

После отправки книги на модерацию рекомендуется с некоторой периодичностью проверять, изменился ли статус книги или нет. Для этого используется универсальный запрос, который позволяет получить информацию об изменениях всех объектов, созданных партнером. Причем можно задавать различные критерии выборки информации: за определенный промежуток времени и/или среди конкретных объектов.
Если вы используете данный API в своем сервисе самиздата, то имейте в виду, что описание книги, персон и серий может незначительно меняться модераторами и редакторами ЛитРес, поэтому рекомендуется периодически (желательно не реже 1 раза в час) обновлять информацию в своей базе в соответствии с данными из приведенного далее запроса.

16.1 Запрос на перечень объектов, изменивших свое состояние

Используется следующий URL: https://sp.litres.ru/partner_update_log/.

Параметры запроса (обязательные параметры отмечены красной звездочкой):

  • partner* – идентификатор партнера;
  • sha* – хеш SHA-256, формируемый индивидуально для каждого из запросов:

    $sha=Digest::SHA::sha256_hex($timestamp.':'.$secret_key.':'.$partner)
  • timestamp* – серверное (московское) время в формате «2014-11-07T16:21:02+03:00»;

  • checkpoint* – время в формате ISO (например, 2015-09-30T12:09:39+03:00), начиная с которого требуется получить информацию по измененным объектам;
  • uuid – уникальный идентификатор объекта. Если он задан, то в ответе будут данные только по этому объекту.

Протестировать запрос проверки объектов, изменивших свое состояние, можно с помощью тестового файла SP_LitRes_partner_update_log.html.

16.2 Ответ сервера

Пример возвращаемого XML:

<partner_update_log timestamp="2015-05-26T19:19:26+03:00">
  <updated-art status="processed" available="0" message="Файл успешно поставлен в очередь на релиз" release_file="12736028" uuid="63c38eb5-c0f1-4cae-b170-0bfa812e5c5f" id="9827348" name="Двести возможно лучших рецептов" type="fb2" owner="9351135" last_update="2017-07-14 19:17:50" valid_till="2099-12-31" date_written_s="2012" date_written_d="2012-01-01" adult="12" price="14.99" isbn="9785170642281" adult_cover="1" adult_annotation="1" date_translate_s="2014" date_translate_d="2014-01-03" trial_percent="8" url="/petr-sergeevich-antonov/dvesti-vozmozhno-luchshih-receptov/">
    <annotation>
      <p>
      Замечательные рецепты на все случаи жизни. Одна из лучших книг в своем серии. Убедительно, ярко, вкусно!
      </p>
    </annotation>
    <lang>ru</lang>
    <src-lang>en</src-lang>
    <title-relations/>
    <item-relations>
      <person uuid="45a54cbd-a311-11e4-bbe7-002590591ed2" relation="agent"/>
      <person uuid="97a64a78-2ba5-4d6d-b0cb-1e0718794bf3" relation="author"/>
    </item-relations>
    <item-series/>
    <art_tags>
      <tag uuid="61799487-5b5b-11e4-96e2-0025905a06ea"/>
    </art_tags>
    <coverpage>
      <image type="jpg" cover_url="/static/bookimages/08/42/01/08420106.bin.dir/08420106.cover.jpg"/>
    </coverpage>
    <item-files>
      <file id="12736023" sent_by="9352347" size="480940" time="2015-05-26 13:52:42"/>
      <file id="12736028" sent_by="101" size="474024" time="2015-05-26 13:52:47"/>
    </item-files>
    <udc>656.11</udc>
    <udc>[32 + 338](470)</udc>
    <bbk>60.9я73</bbk>
    <bbk>66.2(2Рос) + 65.9(2Рос)</bbk>
  </updated-art>
  <updated-person uuid="97a64a78-2ba5-4d6d-b0cb-1e0718794bf3" status="processed" alphabet="И" first_name="Петр 255 символов" last_name="Иванофф" auto_sklon="1" full_name="Петр 255 символов Иванофф" inverse_full_name="Иванофф Петр 255 символов" last_update="2017-07-14 19:17:50" published_photo="/static/author/123.jpg"/>
  <update-serie uuid="9b9bbdad-22f2-455d-bfe2-73d8f35d340b" name="Название серии" last_update="2017-07-14 19:17:50">
    <text_descr_source>
      <hidden>Подробное описание серии</hidden>
    </text_descr_source>
  </update-serie>
</partner_update_log>

Корневой элемент partner_update_log имеет атрибут @timestamp, содержащий текущее серверное время (с точностью до секунды), до которого (не включительно) вы сейчас получили обновления. Для получения непрерывного потока обновлений это значение следует сохранять и при следующем запросе передавать в параметре checkpoint.

В partner_update_log хранится список объектов, изменивших свое состояние. Возможные объекты и их содержимое:

  • updated-art – содержимое этого тега полностью совпадает с запросом на добавление/редактирование описания к книге (partner_object_update). Дополнительно он содержит следующие значения:
    • @status – текущий статус модерации. Основной атрибут, который необходимо отслеживать после отправки запроса на модерацию. Для успешного прохождения модерации и размещения в продажу книги необходимо, чтобы все связанные с ней персоны и серии также прошли модерацию. Возможные значения:
      • received – первоначальный статус;
      • processed – в процессе обработки;
      • approved – одобрен;
      • declined – отклонен (см. @message);
    • @message – если в процессе модерации книга была отклонена (status=»declined»), то в этом атрибуте выводится сообщение о возникшей ошибке или проблеме;
    • @publisher_code – внутренний издательский код книги. Длина до 100 символов.
    • @available – доступность книги для продажи на ресурсах/площадках ЛитРес. Значения:
      • -1 – карточка книги скрыта;
      • 0 – книга не доступна для продажи;
      • 1 – книга доступна и есть в продаже/бесплатной раздаче;
      • 2 – книга скоро поступит в продажу, дата неизвестна;
      • 6 – книга скоро поступит в продажу, дата известна;

Таким образом, как только @status изменит значение на «approved», а @available на «1», то это означает, что книга успешно размещена в продажу на площадках ЛитРеса. Посмотреть книгу на сайте ЛитРес можно по ссылке, сформированной с использованием UUID, например: http://www.litres.ru/search_by_id/?id=aa55bb28-fb43-102b-99a2-0288a49f2f10.

    • @release_file – уникальный целочисленный номер файла, который в текущий момент является актуальной версией книги («релизом» или кандидатом в релиз). Перечень всех файлов, которые отправлялись на модерацию и привязаны к текущей книге, приведены в тегах item-files/file (см. ниже);
    • item-relations/person/@relation=»agent» – у каждой книги всегда будет присутствовать одна служебная персона с типом «agent». Для партнера эта персона не существенна;
    • coverpage/image – путь к загруженной обложке книги на сайтах ЛитРес. Например, для формирования полного адреса можно подставить URL: https://www.litres.ru. Примечание: актуальные данные в этом узле появляются только после размещения книги в продажу (@available=»1″);
    • item-files/file – перечень всех версий файла книги, связанных с текущей книгой (актуально для FB2-книг и аудио книг). Атрибуты:
      • @id – уникальный целочисленный номер файла (в @release_file приведен номер одного из этих файлов, являющийся в текущий момент актуальным «релизом»);
      • @sent_by – идентификатор партнера, отправившего данный файл на сервер ЛитРес. В основном здесь будет содержаться ваш идентификатор партнера (partner), а все остальные значения означают, что файл был загружен сотрудниками или роботами ЛитРес;
      • @size – размер файла в байтах;
      • @filename – наименование файла;
      • @time – время в формате «2014-11-07T16:21:02+03:00», когда файл был загружен в базу ЛитРес;
    • @last_update – дата и время последнего изменения объекта в формате «ГГГГ-ММ-ДД ЧЧ:ММ:СС»;
  • updated-person – содержимое этого тега полностью совпадает с запросом на добавление/редактирование персоны (partner_object_update). Дополнительно он содержит следующие атрибуты:
    • @status – текущий статус модерации. Значения совпадают с аналогичным атрибутом в объектах updated-art:
      • received – первоначальный статус;
      • processed – в процессе обработки;
      • approved – одобрен;
      • declined – отклонен;
    • @published_photo – путь к фотографии персоны на сайтах ЛитРес. Например, для формирования полного адреса можно подставить URL: https://www.litres.ru;
    • @local_person_name – массив локализации, содержащий фамилию и имя, а также описание, на разных языках. Если существуют кроме ru. Если есть только для ru, то этого элемента нет;
    • @last_update – дата и время последнего изменения объекта в формате «ГГГГ-ММ-ДД ЧЧ:ММ:СС»;
  • update-serie – содержимое этого тега полностью совпадает с запросом на добавление/редактирование серии (partner_object_update), за исключением того, что подробное описание серии вынесено в тег update-serie/text_descr_source/hidden. Также данный тег содержит дополнительный атрибут @last_update – дата и время последнего изменения объекта в формате «ГГГГ-ММ-ДД ЧЧ:ММ:СС».

17 Изменение цены продаваемой книги

Если книга уже размещена в продажу на ресурсах/площадках ЛитРес, то партнер может изменять её цену без прохождения повторной модерации.

17.1 Запрос на изменение цены продаваемой книги

Используется следующий URL: https://sp.litres.ru/partner_art_price_change/.

Параметры запроса (обязательные параметры отмечены красной звездочкой):

  • partner* – идентификатор партнера;
  • sha* – хеш SHA-256, формируемый индивидуально для каждого из запросов:

    $sha=Digest::SHA::sha256_hex($timestamp.':'.$secret_key.':'.$partner)
  • timestamp* – московское время в формате «2014-11-07T16:21:02+03:00»;

  • uuid* – уникальный идентификатор книги, цену которой мы хотим изменить;
  • price* – новая цена книги (используйте корректную сетку цен).

Протестировать запрос изменения цены можно с помощью тестового файла SP_LitRes_partner_art_price_change.html.

17.2 Ответ сервера

Пример возвращаемого XML:

<update_object_result result="ok" timestamp="2015-05-27T16:32:36+03:00"/>

В ответе в update_object_result содержатся следующие атрибуты:

  • @result* – в случае успешного изменения цены этот атрибут имеет значение ok, иначе – error;
  • @timestamp* – дата и время обработки запроса;
  • @error_message – текстовое описание ошибки на английском языке (в случае, если result=»error»);
  • @error_code – код ошибки (в случае, если result=»error»). Перечень всех кодов с описанием см. в разделе «Коды ошибок».

18 Изменение правообладателя продаваемой книги

Описанный метод помогает сменить правообладателя для книги, не меняя при этом её статус «в продаже».

18.1 Запрос на изменение правообладателя

Используется следующий URL https://sp.litres.ru/partner_art_owner_change/.

Параметры запроса (обязательные параметры отмечены красной звездочкой):

  • partner* – идентификатор партнера;
  • sha* – хеш SHA-256, формируемый индивидуально для каждого запроса:

    $sha=Digest::SHA::sha256_hex($timestamp.':'.$secret_key.':'.$partner)
  • timestamp* – московское время в формате «2014-11-07T16:21:02+03:00»;

  • uuid* – уникальный идентификатор книги, правообладателя которой мы хотим изменить;

  • owner* – новый правообладатель книги.

18.2 Ответ сервера

Пример возвращаемого XML:

<update_object_result result="ok" timestamp="2015-05-27T16:32:36+03:00"/>

В ответе в update_object_result содержатся следующие атрибуты:

  • @result* – в случае успешного изменения правообладателя этот атрибут имеет значение ok, иначе – error;
  • @timestamp* – дата и время обработки запроса;
  • @error_message – текстовое описание ошибки на английском языке (в случае, если result=»error»);
  • @error_code – код ошибки (в случае, если result=»error»). Перечень всех кодов с описанием см. в разделе «Коды ошибок».

19 Удаление связи между роботом ЛитРес и книгой/персоной/серией

Описанный метод помогает удалить привязку робота ЛитРес к книге/персоне/серии. При этом у книги по прежнему останется статус «в продаже».

19.1 Запрос на удаление связи между роботом ЛитРес и продаваемой книгой

Используется следующий URL https://sp.litres.ru/partner_object_forget/.

Параметры запроса (обязательные параметры отмечены красной звездочкой):

  • partner* – идентификатор партнера;
  • sha* – хеш SHA-256, формируемый индивидуально для каждого из запросов:

    $sha=Digest::SHA::sha256_hex($timestamp.':'.$secret_key.':'.$partner)
    
    
  • timestamp* – московское время в формате «2014-11-07T16:21:02+03:00»;

  • uuid* – уникальный идентификатор объекта, который мы хотим отвязать от робота;
  • type – art / person / serie – тип объекта который мы хотим отвязать. По умолчанию – art.

19.2 Ответ сервера

Пример возвращаемого XML:

<update_object_result result="ok" timestamp="2015-05-27T16:32:36+03:00"/>

В ответе в update_object_result содержатся следующие атрибуты:

  • @result* – в случае успешного удаления робота, этот атрибут имеет значение ok, иначе – error;
  • @timestamp* – дата и время обработки запроса;
  • @error_message – текстовое описание ошибки на английском языке (в случае, если result=»error»);
  • @error_code – код ошибки (в случае, если result=»error»). Перечень всех кодов с описанием см. в разделе «Коды ошибок».

20 Снятие книги с продажи

Если необходимо снять книгу с продажи со всех площадок ЛитРес, выполните запрос на обновление книги (partner_object_update), указав в атрибуте индивидуального окончания прав (@valid_till) текущую дату в формате ГГГГ-ММ-ДД. Таким образом книга исчезнет из всех каталогов ЛитРес, но сохранится у пользователей, уже купивших данную книгу. В дальнейшем данную книгу можно будет вновь вернуть в продажу, указав корректный @valid_till и повторно пройдя модерацию.
Также имейте в виду, что книга автоматически снимается с продажи и отправляется на повторную модерацию каждый раз, когда меняется какая-либо связанная с ней информация: описание, файл, автор, серия и пр. Поэтому если вам необходимо изменить только лишь цену продаваемой книги, используйте запрос на обновление книги (partner_object_update).

21 Получение статистики

Партнер может просматривать и выгружать в XML статистику покупок, просмотров и онлайн-чтения на специальной странице правообладателя на сайте ЛитРес. Адрес этой страницы сообщается партнеру при заключении договора.
Помимо этого партнер может выгружать статистику через API: как в режиме реального времени (запрос на получение статистики в режиме реального времени), так и за закрытые отчетные периоды (запрос на получение статистики за закрытый отчетный период). Имейте в виду, что для «не закрытых» отчетных периодов показания статистики могут незначительно меняться.

21.1 Запрос на получение статистики в режиме реального времени

Используется следующий URL: https://sp.litres.ru/partner_stats/.

Параметры запроса (обязательные параметры отмечены красной звездочкой):

  • partner* – идентификатор партнера;
  • sha* – хеш SHA-256, формируемый индивидуально для каждого из запросов:

    $sha=Digest::SHA::sha256_hex($timestamp.':'.$secret_key.':'.$partner)
  • timestamp* – московское время в формате «2014-11-07T16:21:02+03:00»;

  • time_from – дата и время в формате «ГГГГ-ММ-ДД ЧЧ:ММ:CC», начиная с которого необходимо получить статистику. Передаваемое значение не может отставать от текущего серверного (московского) времени больше чем на 24 часа. Если в запросе передан данный параметр, то параметры from и to должны в запросе отсутствовать;
  • from – дата в формате «ГГГГ-ММ-ДД», начиная с которой необходимо получить статистику;
  • to – дата в формате «ГГГГ-ММ-ДД», до которой (включительно) необходимо получить статистику;
  • add_free – если этот опциональный параметр передан и равен 1, то выдается специальный отчет по розданным бесплатно книгам с площадок самого Литрес (веб-площадки, мобильные приложения, приложения для устройств и т.д.). Как бесплатно так и за деньги. При этом продажи с партнерских площадок не выдаются.
  • owner — выдать отчет только по одному правообладателю (может быть полезно, если робот обслуживает нескольких правообладателей), опциональный параметр.
  • stat_by_date — выдача статистики с группировкой по датам, опциональный параметр (в разработке).

Запрос позволяет выгружать статистику в трех режимах:

  1. с заданного времени (с точностью до секунды) до текущего момента. При этом заданное время не должно отличаться от текущего более чем на сутки. Используемый параметр: time_from;

    Примечание: в ответе сервер дополнительно возвращает точное серверное время, используя которое можно организовать непрерывную череду запросов для сбора статистики в режиме реального времени.

  2. с конкретной даты до текущего момента. Используемый параметр: from;

  3. с конкретной даты до конкретной даты. Используемые параметры: from и to.

Протестировать запрос можно с помощью тестового файла SP_LitRes_partner_stats.html.

21.2 Ответ сервера

Пример возвращаемого XML в случае ошибки:

<update_object_result result="error" timestamp="2015-06-19T18:56:19+03:00" error_message="SHA verification error - timestamp expired" error_code="102029"/>

В ответе в update_object_result содержатся следующие атрибуты:

  • @result – при ошибке имеет значение error;
  • @timestamp – дата и время обработки запроса;
  • @error_message – текстовое описание ошибки на английском языке;
  • @error_code – код ошибки. Перечень всех кодов с описанием см. в разделе «Коды ошибок».

Пример возвращаемого XML в случае успешной обработки запроса:

<partner_stats>
	<art authors="Павел Котиков" id="7222172" uuid="97a64a78-2ba5-4d6d-b0cb-1e0718794bf3" name="Наследие">
		<stat-channelgroup hits="0" hits_amount="0" sales="7" id="2" sales_amount="59.15" name="ЛитРес"/>
		<stat-channelgroup hits="0" hits_amount="0" sales="2" id="25" sales_amount="359.15" name="Bookmate"/>
	</art>	
	<art authors="Олег Максов" id="9363358" uuid="63c38eb5-c0f1-4cae-b170-0bfa812e5c5f" name="Избранный">
		<stat-channelgroup hits="1" hits_amount="0.03" sales="0" id="1" sales_amount="0" name="Прочее"/>
	</art>
	<period is_final="false" start="2015-06-18 19:44:52" end="2015-06-19 18:44:58"/>
</partner_stats>

Пример возвращаемого XML в случае успешной обработки запроса с параметром stat_by_date (в разработке):

<partner_stats>
	<user_info show_prorata="1" report_currency="RUB"/>
	<date value="2022-01-30">
		<art uuid="b17fb12c-5664-11ec-ab26-441ea1508474" series="Метод Тайной Комнаты" name="Путешествие из долгов к миллионам" authors="Михаил Павлов" id="66865293">
			<stat-channelgroup hits="0" name="Продажи по маскам" sales_amount="506.47" hits_amount="0" id="10000" sales="4"/>
		</art>
		<art id="59666592" authors="Михаил Павлов" name="Помоги любви найти тебя. Метод Тайной Комнаты" series="Метод Тайной Комнаты" uuid="7e2e80c7-fc21-11ea-a60e-0cc47a520475">
			<stat-channelgroup name="Продажи по маскам" hits="0" sales_amount="63.28" hits_amount="0" id="10000" sales="1"/>
		</art>
	</date>
	<date value="2022-01-31">
		<art series="Метод Тайной Комнаты" name="Помоги любви найти тебя. Метод Тайной Комнаты" uuid="0d2a566c-21c1-462f-a039-bb8f91d481b2" authors="Михаил Павлов" id="44222804">
			<stat-channelgroup prorata_list_summ="2" sales="1" id="10000" hits_amount="0" sales_amount="93.16" hits="0" name="Продажи по маскам" prorata_amount="113.48"/>
		</art>
		<art name="Путешествие из долгов к миллионам" series="Метод Тайной Комнаты" uuid="f8d283e5-5da5-11ec-ab26-441ea1508474" id="66931483" authors="Михаил Павлов">
			<stat-channelgroup hits_amount="0" prorata_amount="52.51" sales_amount="223.52" name="Продажи по маскам" hits="0" sales="3" prorata_list_summ="5" id="10000"/>
		</art>
	</date>
	<period is_final="true" end="2022-01-31" start="2022-01-30"/>
</partner_stats>

В ответе в partner_stats содержится перечень всех проданных/прочитанных/бесплатно взятых книг (art), а также данные о периоде, за который выдана данная статистика (period).

Каждая книга art содержит следующие данные:

  • @authors – перечень авторов книги через запятую;
  • @id – внутренний идентификатор книги на сервере ЛитРес. Его можно использовать для формирования ссылки на книгу в магазине ЛитРес: http://litres.ru/pages/biblio_book/?art=9368246;
  • @uuid – уникальный идентификатор книги;
  • @name – название книги;
  • в узлах stat-channelgroup перечислены «каналы продаж», на которых книга была куплена, прочитана или получена бесплатно. Т. к. книги продаются не только на сайтах и приложениях ЛитРес, но и на партнерских ресурсах, то для комфортного анализа статистики каждый из них выделен в отдельный канал. Примеры каналов: ресурсы ЛитРес, Google, МВидео, Связной, Bookmate и т. п. Атрибуты каналов:
    • @id – уникальный идентификатора канала продаж;
    • @name – название канала продаж;
    • @sales – количество проданных (или выданных бесплатно) экземпляров книги;
    • @sales_amount – сумма в рублях, зачисленная на счет партнера за покупки книги через данный канал;
    • @hits – целое число. Количество авторских листов (с округлением в бо́льшую сторону), прочитанных в режиме онлайн-чтения. В подсчете авторских листов участвует только «платная» часть книги – чтение ознакомительного фрагмента здесь не отражено;
    • @hits_amount – сумма в рублях, зачисленная на счет партнера за онлайн-чтение книги через данный канал.

Атрибуты узла period:

  • @is_final – возможные значения:
    • true – статистика за выгруженный период актуальна, окончательна и изменяться не будет. Партнер может использовать представленные данные для проведения внутренних финансовых расчетов;
    • false – статистика за выгруженные даты относится к «не закрытому» отчетному периоду и может незначительно меняться. Рекомендуется использовать представленную информацию только для ознакомительных целей;
  • @start – если в запросе передан параметр time_from, то в @start содержится дата и время в формате «ГГГГ-ММ-ДД ЧЧ:ММ:CC», начиная с которого выведена информация по статистике. Если в запросе переданы параметры from и/или to, то в @start содержится только дата в формате «ГГГГ-ММ-ДД»;
  • @end – если в запросе передан параметр time_from, то в @end содержится дата и время в формате «ГГГГ-ММ-ДД ЧЧ:ММ:CC», до которого (не включительно) выведена информация по статистике. Это значение удобно использовать в последующем запросе к API (в параметре time_from) для непрерывного сбора статистики.Если в запросе переданы параметры from и/или to, то в @end содержится только дата в формате «ГГГГ-ММ-ДД».

21.3 Запрос на получение статистики за закрытый отчетный период

Отчетным периодом является месяц. Данный запрос позволяет партнеру получить окончательную статистику по любому из прошедших и «закрытых» месяцев.

Используется следующий URL: https://sp.litres.ru/partner_final_stats/.

Параметры запроса (обязательные параметры отмечены красной звездочкой):

  • partner* – идентификатор партнера;
  • sha* – хеш SHA-256, формируемый индивидуально для каждого из запросов:

    $sha=Digest::SHA::sha256_hex($timestamp.':'.$secret_key.':'.$partner)
  • timestamp* – московское время в формате «2014-11-07T16:21:02+03:00»;

  • y* – год в формате «ГГГГ»;
  • m* – месяц в формате «ММ»;
  • owner – выдать отчет только по одному правообладателю (может быть полезно, если робот обслуживает нескольких правообладателей), опциональный параметр.

Протестировать запрос можно с помощью тестового файла SP_LitRes_partner_final_stats.html.

21.4 Ответ сервера

Формат ответа полностью совпадает с ответом на запрос partner_stats.

22 Получение данных о статусе связи робота и книги/персоны/серии

Партнер может просматривать и выгружать в XML данные о статусе привязки робота к книге/персоне/серии на сайте ЛитРес. 

22.1 Запрос на получение данных о статусе связи робота и книги/персоны/серии

Используется следующий URL: https://sp.litres.ru/partner_events/.

Параметры запроса (обязательные параметры отмечены красной звездочкой):

  • partner* – идентификатор партнера;
  • sha* – хеш SHA-256, формируемый индивидуально для каждого из запросов:

    $sha=Digest::SHA::sha256_hex($timestamp.':'.$secret_key.':'.$partner)
  • timestamp* – московское время в формате «2014-11-07T16:21:02+03:00»;

  • time_from – дата и время в формате «ГГГГ-ММ-ДД ЧЧ:ММ:CC», начиная с которого необходимо получить данные о статусе привязки робота к объекту. Передаваемое значение не может отставать от текущего серверного (московского) времени больше чем на 24 часа. Если в запросе передан данный параметр, то параметры from и to должны в запросе отсутствовать;
  • from – дата в формате «ГГГГ-ММ-ДД», начиная с которой необходимо получить данные о статусе привязки робота к объекту;
  • to – дата в формате «ГГГГ-ММ-ДД», до которой (включительно) необходимо получить данные о статусе привязки робота к объекту;

Запрос позволяет выгружать данные в трех режимах:

  1. с заданного времени (с точностью до секунды) до текущего момента. При этом заданное время не должно отличаться от текущего более чем на сутки. Используемый параметр: time_from;

    Примечание: в ответе сервер дополнительно возвращает точное серверное время, используя которое можно организовать непрерывную череду запросов для сбора данных в режиме реального времени.

  2. с конкретной даты до текущего момента. Используемый параметр: from;

  3. с конкретной даты до конкретной даты. Используемые параметры: from и to.

22.2 Ответ сервера

Пример возвращаемого XML в случае ошибки:

<update_object_result result="error" timestamp="2020-03-10T12:45:21+03:00" error_message="SHA verification error - timestamp expired" error_code="102029"/>

В ответе в update_object_result содержатся следующие атрибуты:

  • @result* – при ошибке имеет значение error;
  • @timestamp* – дата и время обработки запроса;
  • @error_message – текстовое описание ошибки на английском языке;
  • @error_code – код ошибки. Перечень всех кодов с описанием см. в разделе «Коды ошибок».

Пример возвращаемого XML в случае успешной обработки запроса:

<partner_events timestamp="2020-03-10T12:45:21+03:00">
	<event type="link" object_type="person" object_id="3952472" object_uuid="78ecf724-fc53-11e3-871d-0025905a0812" event_date="2020-01-22T17:35:49+03:00"/>
	<event type="link" object_type="serie" object_id="627" object_uuid="619ca63a-5b5b-11e4-96e2-0025905a06ea" event_date="2020-01-22T17:42:36+03:00"/>
	<event type="unlink" object_type="art" object_id="25761301" object_uuid="1d3a0fb0-4c77-4952-a33d-4c9fd433e68b" event_date="2020-03-10T16:53:13+03:00"/>
	<event type="link" object_type="art" object_id="25761282" object_uuid="5c4775b2-57c8-11ea-8be9-3a5c218e6655" event_date="2020-03-10T16:55:03+03:00"/>
</partner_events>

Корневой элемент partner_events имеет атрибут @timestamp, содержащий текущее время сервера.
В ответе в partner_events содержится перечень событий с данными о статусе связи робота и книги/персоны/серии. Каждое событие представлено элементом event со следующим содержимым:

  • @type* – тип события, в результате которого произошло изменение статуса привязки робота к объекту. Возможные значения:
    • link – робот был привязан к объекту. Такое событие возникает на этапе создания или редактирования объекта с использованием запроса partner_object_update или вручную;
    • unlink – робот отвязан от объекта. Причем не важно убрали связь вручную либо с помощью запроса partner_object_forget;
  • @object_type* – тип объекта, для которого произошла смена статуса привязки к роботу. Может принимать следующие значения:
    • art – книга;
    • person – персона;
    • serie – серия;
  • @object_id* – внутренний идентификатор объекта на сервере ЛитРес. В зависимости от типа объекта, указанного в @object_type, это может быть идентификатор книги, персоны или серии соответственно;
  • @object_uuid* – уникальный идентификатор объекта на сервере ЛитРес. В зависимости от типа объекта, указанного в @object_type, это может быть идентификатор книги, персоны или серии соответственно;
  • @event_date* – дата и время события, в результате которого произошло изменение статуса привязки робота к объекту. Возвращается в формате «2014-11-07T16:21:02+03:00».

23 Коды ошибок

  • 102001 – попытка обновить «чужую» персону, которая не была создана партнёром;
  • 102002 – обновление персоны: не хватает данных о склонениях имени;
  • 102003 – обновление персоны: не хватает данных о полном имени персоны;
  • 102004 – обновление персоны: нет данных о URL, с которого необходимо загружать фотографию;
  • 102005 – обновление персоны, не удалось загрузить фотографию;
  • 102006 – обновление персоны: не хватает данных об имени, либо отчестве, либо фамилии;
  • 102007 – ошибка создания новой персоны;
  • 102008 – ошибка обновления персоны;
  • 102009 – ошибка обновления описания персоны;
  • 102010 – обновление серии: не передано название;
  • 102011 – попытка обновить не принадлежащую партнёру серию;
  • 102012 – попытка обновить не принадлежащее партнёру произведение;
  • 102013 – обновление произведения: передан невалидный UUID;
  • 102014 – обновление произведения: попытка связать произведение с другим, которое не принадлежит партнёру;
  • 102015 – обновление произведения: попытка добавить более одного агента;<todo>Удалить эту ошибку по факту изменения логики. Добавить новые ошибки, связанные с отсутствием или некорректностью параметра @owner;
  • 102016 – обновление произведения: попытка связать произведение с персоной, которая не создана партнёром;
  • 102017 – обновление произведения: попытка включить произведение в серию, которая не принадлежит партнёру;
  • 102018 – ошибка при обновлении произведения;
  • 102019 – ошибка при создании произведения;
  • 102020 – обновление произведения: ошибка при задании жанров;
  • 102021 – обновление произведения: попытка присвоить несуществующий тег;
  • 102022 – попытка загрузить PDF для книги, которая не принадлежит партнёру;
  • 102023 – загрузка PDF: файл не найден;
  • 102024 – загрузка PDF: неверная сумма SHA-256 файла;
  • 102025 – загрузка PDF: ошибка добавления файла к произведению;
  • 102026 – передан невалидный timestamp;
  • 102027 – проверка валидности запроса: не удалось получить сведения о самом партнёре;
  • 102028 – партнёр с переданным идентификатором (partner) не существует;
  • 102029 – неверная подпись;
  • 102030 – ошибка повторного использования timestamp. Для каждого из запросов используйте новый timestamp;
  • 102031 – не передан запрос;
  • 102032 – невалидный XML в запросе, либо несоответствующий схеме. Подробне см. в @error_message;
  • 102033 – произведение, для которого обновляется цена, не принадлежит партнёру;
  • 102034 – попытка загрузить FB2 для произведения, которое не принадлежит партнёру;
  • 102035 – загрузка FB2: не найден файл. Убедитесь, что FB2-файл обернут в ZIP-архив и передается методом POST через переменную file c типом содержимого «multipart/form-data»;
  • 102036 – ошибка загрузки FB2. См. подробное описание ошибки в @error_message;
  • 102037 – в запросе на получение обновлённых произведений неверно передан checkpoint;
  • 102038 – неверные данные в запросе на получение обновлённых произведений;
  • 102039 – при загрузке обложки передано не JPEG изображение;
  • 102040 – загрузка обложки: в параметре file передан НЕ файл;
  • 102041 – попытка загрузить обложку для произведения, которое не принадлежит партнёру;
  • 102042 – ошибка загрузки обложки;
  • 102043 – в запросе статистики (partner_stats) не переданы параметры «time_from», «from» или «to». Допустимы следующие комбинации этих параметров:
    • только «time_from»;
    • только «from»;
    • только «from» и «to»;
  • 102044 – некорректный формат параметров «from» и/или «to» в запросе статистики (partner_stats). Укажите даты в формате «ГГГГ-ММ-ДД»;
  • 102045 – в запросе статистики (partner_stats) одновременно переданы параметры «time_from», «from» и «to», хотя в запросе допустимы только следующие комбинации этих параметров:
    • только «time_from»;
    • только «from»;
    • только «from» и «to»;
  • 102046 – некорректный формат параметра «time_from» в запросе статистики (partner_stats). Укажите время в формате «ГГГГ-ММ-ДД ЧЧ:ММ:CC»;
  • 102047 – некорректное значение параметра «time_from» в запросе статистики (partner_stats). Допустимое значение должно быть в промежутке последних суток (24 часа от текущего московского времени);
  • 102048 – некорректный формат параметров «y» и/или «m» в запросе статистики (partner_final_stats). Год должен быть в формате «ГГГГ», а месяц (m) – «ММ»;
  • 102049 – в запросе статистики (partner_final_stats) указан не закрытый отчетный период (даты закрытия периодов уточняйте у менеджеров ЛитРес). Выберите другой месяц или воспользуйтесь запросом статистики по не закрытому периоду (partner_stats);
  • 102050 – в запросе редактирования карточки книги (partner_object_update) указан некорректный идентификатор правообладателя (art_to_update/@owner), определяющий набор ресурсов (сайтов, мобильных приложений и пр.), на которых будет размещаться книга;
  • 102053 – в запросе изменения описания книги (partner_object_update) в параметре request отсутствует или указан неверно уникальный идентификатор правообладателя партнера (update_object/art_to_update/@owner);
  • 102054 – ошибка eval при смене правообладателя;
  • 102055 – правообладатель недоступен данному роботу;
  • 102056 – произведение, для которого меняется правообладатель, не принадлежит партнёру;
  • 102057 – агент, привязанный к произведению, не доступен данному роботу;
  • 102058 – Unknown type ‘$ObjectType’ – неизвестный тип объекта;

  • 102059 – Object with uuid ‘$UUID’ and type ‘$ObjectType’ does not exist or was not created by you – объект с таким uuid и типом не существует или был создан не Вами;

  • 102060 – General Samizdat API error – ошибка API Самиздат;

  • 102062 – присланный на загрузку файл имеет нулевой размер
  • 102101 – ошибка eval при обновлении персоны. Обратитесь к разработчику;
  • 102102 – ошибка eval при обновлении серии. Обратитесь к разработчику;
  • 102103 – ошибка eval при обновлении произведения. Обратитесь к разработчику;
  • 102104 – ошибка eval при загрузке файла PDF. Обратитесь к разработчику;
  • 102105 – ошибка eval при проверке валидности запроса. Обратитесь к разработчику;
  • 102106 – ошибка eval при изменении цены произведения. Обратитесь к разработчику;
  • 102107 – ошибка eval при получении списка тэгов. Обратитесь к разработчику;
  • 102108 – ошибка eval при загрузке FB2. Обратитесь к разработчику;
  • 102109 – ошибка eval при запросе обновлённых произведений. Обратитесь к разработчику;
  • 102110 – ошибка eval при загрузке обложки. Обратитесь к разработчику;
  • 102111 – ошибка приведения заголовка в соответствие с базой;
  • 102115 – в запросе создания/редактирования описания к книге указано не уникальное название произведения (@name). Измените название или проверьте правильность UUID;
  • 102116 – при запросе создания/редактирования персоны превышен лимит на количество не уникальных полных имен персоны (@full_name). Система позволяет создать только 5 одинаковых полных имен. Измените полное имя или проверьте правильность UUID;
  • 102117 – в запросе создания/редактирования серии указано не уникальное название серии (@name). Измените название или проверьте правильность UUID;
  • 102118 – ошибка eval при загрузке статистики (partner_stats). Обратитесь к разработчику;
  • 102119 – ошибка eval при загрузке статистики (partner_final_stats). Обратитесь к разработчику;
  • 102123 – в запросе данных о статусе привязки робота к объекту (partner_events) не переданы параметры «time_from», «from» или «to». Допустимы следующие комбинации этих параметров:

    • только «time_from»;

    • только «from» и «to»;

    • только «from»;

  • 102124 – некорректный формат параметров «from» и/или «to» в запросе данных о статусе привязки робота к объекту (partner_events). Укажите даты в формате «ГГГГ-ММ-ДД»;

  • 102125 – в запросе данных о статусе привязки робота к объекту (partner_events) одновременно переданы параметры «time_from», «from» и «to», хотя в запросе допустимы только следующие комбинации этих параметров:

    • только «time_from»;

    • только «from»;

    • только «from» и «to»;

  • 102126 – некорректный формат параметра «time_from» в запросе данных о статусе привязки робота к объекту (partner_events). Укажите время в формате «ГГГГ-ММ-ДД ЧЧ:ММ:CC»;

  • 102127 – некорректное значение параметра «time_from» в запросе данных о статусе привязки робота к объекту (partner_events). Допустимое значение должно быть в промежутке последних суток (24 часа от текущего московского времени);

  • 102128 – неизвестная ошибка про выполнении запроса данных о статусе привязки робота к объекту (partner_events). Обратитесь к разработчику;
  • 102130 – ошибка при загрузке FB3: книга не найдена или не принадлежит партнёру;
  • 102131 – не найден файл FB3;
  • 102132 – ошибка копирования FB3 во временное хранилище;
  • 102133 – внутренняя ошибка конфигурации SVN;
  • 102134 – ошибка постановки FB3 в релиз;
  • 102135 – ошибка eval при загрузке FB3;
  • 102136 – «черновиком» может быть только книга в формате fb2;
  • 102137 – параметр update_period разрешен только для «черновиков»;
  • 102200 – description не может содержать ссылки;
  • 102201 – annotation не может содержать ссылки;
  • 102202 – загрузка FB2, FB3, Cover: не совпадает SHA256 файла.
  • 102210 – попытка загрузить аудио архив для книги, которая не принадлежит партнёру;
  • 102211 – загрузка аудио файлов: файл не найден;
  • 102212 – загрузка аудио файлов: неверная сумма SHA-256 файла;
  • 102213 – загрузка аудио файлов: неправильное расширение файла, принимается mp3 файл или zip архив с mp3 файлами;
  • 102215 – указанная книга не является аудио книгой, вы не можете добавить к ней mp3-файл.

1 Аннотация

Компания ЛитРес разработала API для издательств и сервисов электронного самиздата, который позволяет автоматизировать процесс размещения электронных книг в каталоге ЛитРес для последующей продажи или бесплатного распространения.
О возможных вариантах сотрудничества вы можете узнать у менеджеров ЛитРес (http://www.litres.ru/o-kompanii/contactnaya-informaciya/).

2 Возможности API

  1. Загрузка и предварительное размещение в каталоге ЛитРес электронных книг в форматах FB2/FB3, а также PDF и аудио книг.
  2. Редактирование информации, связанной с загруженными книгами (авторы, серии, жанры, ключевые слова, аннотации, обложки, цены и пр.).
  3. Подача запросов на размещение загруженных материалов в общедоступном каталоге ЛитРес для продажи или бесплатного распространения.
  4. Просмотр статистики по продажам и онлайн-чтению.

3 Последовательность размещения книг в продажу

Пунктирной рамкой выделены не обязательные этапы. Стрелками обозначены основные данные, которые используются при формировании запросов на последующих этапах. Выноски справа обозначают названия запросов к API.

4 Общая информация по работе API

  1. После заключения договора с ЛитРес партнер (издательство или сервис электронного самиздата) получает индивидуальные ключи, которые будут использоваться при формировании запросов к API:
    • partner – идентификатор партнера. Например: «51221432»;
    • secret_key – секретный ключ партнера. Например: «password»;
    • owner – один или несколько идентификаторов правообладателей партнера, определяющих набор ресурсов (сайтов, мобильных приложений и пр.), на которых будут размещаться книги. Например: «9351135».
  2. Работа с API сервера ЛитРес для любой программы-клиента строится по схеме запрос-ответ: клиент формирует и передает запрос, а сервер в ответ возвращает XML-документ с ответом.
  3. Все запросы к серверам ЛитРес осуществляются только по протоколу HTTPS.
  4. Во всех запросах к серверам ЛитРес (если не указано обратное) передаются параметры partner и sha:
    • partner – идентификатор партнера;
    • sha – хеш SHA-256, формируемый индивидуально для каждого из запросов и рассчитываемый как

      $sha=Digest::SHA::sha256_hex($timestamp.':'.$secret_key.':'.$partner)

      где:

      • $timestamp – московское время в формате «2014-11-07T16:21:02+03:00». Каждое значение timestamp можно использовать только один раз, причем оно не может отличаться от серверного (московского) времени более чем на 300 секунд в обе стороны;, где:
      • $secret_key – секретный ключ партнера;
      • $partner – идентификатор партнера.

    Далее в документации все обязательные параметры отмечены красной звездочкой (*).

  5. Все текстовые данные передаются и обрабатываются в кодировке UTF-8.

  6. Все ответы сервера передаются в виде XML, который всегда имеет кодировку UTF-8 (о чем сообщает HTTP-заголовок «Content-type: text/xml; charset=utf-8»);
  7. В XML-ответах, отдаваемых сервером ЛитРес, помимо описанного в документации содержимого, может размещаться, добавляться и удаляться неограниченное и не регламентированное содержание – узлы, текст и атрибуты. Софт на стороне партнера должен корректно отбрасывать и обрабатывать ситуации, при которых, например, в документации описана структура

    а фактически возвращается

    <a b="c" y="x" s="z"><i/><d/><m>text</m></a>

    Атрибуты и параметры, которые вас интересуют, гарантировано останутся по прежнему адресу a/@b и a/d, но дополнительное содержимое может (и будет) появляться и пропадать. Учитывайте эту особенность.

  8. Для всех дробных чисел (например, для цен) в качестве разделителя дробной части используется точка. Число 15,50 является некорректным, а 15.50 и 15.5 – корректными;
  9. Перед размещением книги в общедоступном каталоге ЛитРес, она, а также вся связанная с ней информация (авторы, жанры, серии, цена и т. д.), должна пройти процедуру модерации (одобрения редактором ЛитРес). После того, как книга одобрена и размещена в публичном доступе, единственное, что можно поменять через данное API – её цену. Если требуется переопределить какие-либо другие атрибуты, книга должна заново пройти полную процедуру одобрения.
  10. Все UUID обязательно должны быть сформированы по стандарту RFC 4122. Запрещается генерировать UUID упрощенным генератором случайных символов, т. к. это может вызвать коллизии с другими объектами системы.

5 Жанры ЛитРес

Загружаемая книга должна иметь привязку минимум к одному жанру (но не более четырех!), из классификации ЛитРес (создавать свои жанры нельзя). Книгам присваиваются токены только из «конечных» жанров (type=»genre» в ответе сервера). Все остальные контейнеры (type=»container«) и корневые жанры (type=»root«) предназначены только для определения иерархической структуры жанрового дерева, обладающего неограниченной вложенностью. 

Учитывайте, что жанровое дерево может изменяться. Со временем, например, конечные жанры (genre) могут превратиться в контейнеры (container). Поэтому рекомендуется обновлять информацию по жанровому дереву не реже раза в сутки. Если частые обращения к серверу нежелательны, можно обновлять дерево жанров реже, но ни в коем случае не реже одного раза в 30 дней.

5.1 Запрос списка жанров

Для получения списка жанров ЛитРес используется следующий URL (без каких-либо параметров):
https://sp.litres.ru/genres_list_2/

5.2 Ответ сервера

Пример возвращаемого XML:

<genres>
	<genre id="5003" title="бизнес-книги" type="root">
		<genre id="5049" title="банковское дело" token="bankovskoe_delo" type="genre"/>
		<genre id="5051" title="бухучет / налогообложение / аудит" token="buhuchet_nalogooblozhenie_audit" type="genre"/>
		<genre id="6784" title="государственное и муниципальное управление" token="gosudarstvennoe_i_munitsipalnoe_upravlenie" type="genre"/>
		<genre id="5060" title="делопроизводство" token="deloproizvodstvo" type="genre"/>
		<genre id="5061" title="зарубежная деловая литература" token="zarubezhnaya_delovaya_literatura" type="genre"/>
		<genre id="5062" title="интернет-бизнес" token="internet" type="genre"/>
		<genre id="5047" title="кадровый менеджмент" token="kadrovyj_menedzhment" type="container">
			<genre id="5334" title="аттестация персонала" token="attestaciya_personala" type="genre"/>
			<genre id="5330" title="гендерные различия" token="gendernyye_razlichiya" type="genre"/>
			<genre id="5332" title="конфликты" token="konflikty" type="genre"/>
			<genre id="5336" title="коучинг" token="kouching" type="genre"/>
			<genre id="5333" title="мотивация" token="motivaciya" type="genre"/>
			<genre id="5335" title="поиск и подбор персонала" token="poisk_presonala_hr" type="genre"/>
			<genre id="5331" title="тимбилдинг" token="timbilding" type="genre"/>
			<genre id="6583" title="управление персоналом" token="upravlenie_personalom" type="genre"/>
	</genre>
</genres>

Таким образом, в примере допустимые жанры и их @token‘ы расположены в строках 3-8 и 10-17 (обратите внимание, строка 9 это контейнер). В дальнейшем эти токены используются для привязки книги к какому-то жанру в запросе редактирования карточки книги (partner_object_update), а также внутри FB2-книги в запросе загрузки файла (partner_fb2_upload).

Рекомендуется, чтобы загружаемая книга имела привязку к хотя бы одному-двум тегам (ключевым словам) из классификации ЛитРес. Также рекомендуется регулярно сверять словарь тегов ЛитРес, т.к. теги могут появляться, удаляться, а также незначительно менять текстовое описание.

6.1 Запрос списка тегов

Для получения списка тегов ЛитРес используется URL: https://sp.litres.ru/get_litres_keywords/.

Параметры запроса:

  • partner* – идентификатор партнера;
  • sha* – хеш SHA-256, формируемый индивидуально для каждого из запросов:

    $sha=Digest::SHA::sha256_hex($timestamp.':'.$secret_key.':'.$partner)
  • timestamp* – московское время в формате «2014-11-07T16:21:02+03:00».

Изучить пример кода для формирования sha и посмотреть актуальный список тегов можно с помощью тестового файла SP_LitRes_get_litres_keywords.html.

6.2 Ответ сервера

Пример возвращаемого XML:

<tags timestamp="2015-02-27T18:35:32+03:00">
	<tag uuid="6156b4b6-5b5b-11e4-96e2-0025905a06ea" tag_title="облачные сервисы"/>
	<tag uuid="614bcc80-5b5b-11e4-96e2-0025905a06ea" tag_title="облачные технологии"/>
	<tag uuid="61238fb8-5b5b-11e4-96e2-0025905a06ea" tag_title="обливание"/>
	<tag uuid="bb25750f-9a73-11ea-a00d-441ea1508474" tag_title="обложка ню" visible="0"/>
	<tag uuid="6165b878-5b5b-11e4-96e2-0025905a06ea" tag_title="облучение"/>
	<tag uuid="61415df6-5b5b-11e4-96e2-0025905a06ea" tag_title="обманы зрения"/>
</tags>

Корневой элемент tags имеет атрибут @timestamp, содержащий текущее время сервера.

В tags хранится список ключевых слов, каждое каждое из которых представлено элементом tag со следующим содержимым:

  • @uuid – идентификатор тега. Используется в запросе редактирования карточки книги (partner_object_update);
  • @tag_title – текстовое описание тега. Используется внутри FB2-книги в запросе загрузки файла (partner_fb2_upload);
  • @visible – атрибут, определяющий «видимость» одобренного тега на карточке книги. Может отсутствовать, что означает, что тег будет отображается, по умолчанию.
    Может принимать следующие значения:
    • 0 – тег не виден на карточке книги, даже если он является одобренным;
    • 1 – тег виден на карточке книги.

7 Цены ЛитРес

ЛитРес продает книги по определенной ценовой сетке. Если указанная партнером цена будет отличаться от представленных в сетке, то произойдет округление вверх до ближайшего ценового уровня (или до максимального, если переданная цена выше).

7.1 Запрос ценовой сетки

Для получения ценовой сетки ЛитРес используется следующий URL (без каких-либо параметров): https://sp.litres.ru/static/ds/price_grid.xml.

7.2 Ответ сервера

Пример возвращаемого XML:

<price_data>
	<price value="0.00"/>
	<price value="5.99"/>
	<price value="9.99"/>
	<price value="14.99"/>
	<price value="19.99"/>
	<price value="399.00"/>
	<price value="439.00"/>
	<price value="490.00"/>
</price_data>

Каждый элемент из сетки цен представлен тегом price с атрибутом @value, в котором указана цена в рублях. Данная цена используется в запросе редактирования карточки книги (partner_object_update), а также в запросе изменения цены (partner_art_price_change).

8 Создание и редактирование серий, персон, книг

Для создания и редактирования серий, авторов, переводчиков и самих книг используется единый формат запроса. Причем за один запрос к серверу могут быть созданы или изменены сразу несколько серий/персон/книг.

8.1 Запрос на создание/редактирование серии, персоны, книги

Используется следующий URL: https://sp.litres.ru/partner_object_update/.
Параметры запроса (обязательные параметры отмечены красной звездочкой):

  • partner* – идентификатор партнера;
  • sha* – хеш SHA-256, формируемый индивидуально для каждого из запросов:

    $sha=Digest::SHA::sha256_hex($timestamp.':'.$secret_key.':'.$partner)
  • timestamp* – московское время в формате «2014-11-07T16:21:02+03:00»;

  • request* – в данном параметре необходимо передать XML-документ, содержание которого изменяется в зависимости от того, что необходимо создать или отредактировать (подробнее они рассмотрены ниже):
    • XML для создания/редактирования серии;
    • XML для создания/редактирования персоны;
    • XML для создания/редактирования описания к книге.

Если в XML-документе будет содержаться сразу несколько создаваемых или изменяемых элементов, то они будут обработаны на стороне сервера в следующей последовательности: сначала все серии, затем все персоны и все книги.
Проверить корректность (валидность) XML-документа можно с помощью XSD-схемы query_samizdat.xsd.
Протестировать запросы создания/редактирования элементов можно с помощью тестового файла SP_LitRes_partner_object_update.html.

8.1.1 XML для запроса создания/редактирования серии

Если планируется, что книга будет логически объединена в серию или цикл с какими-то другими книгами, то для них создается «серия» с общим названием.

Пример XML:

<?xml version="1.0" encoding="UTF-8"?>
<update_object>
  <serie uuid="9b9bbdad-22f2-455d-bfe2-73d8f35d340b" name="Название серии" text_descr_source="Подробное описание серии" />
</update_object>

В теге серии update_object/serie указываются следующие атрибуты (обязательные атрибуты отмечены красной звездочкой):

  • @uuid* – уникальный идентификатор серии. Генерируется на стороне партнера при создании новой серии. Если необходимо отредактировать название или описание ранее созданной серии, то используется её старый UUID;
  • @name* – название серии. Значение должно быть уникальным среди всех серий партнера. Иначе запрос вернет ошибку. Максимальная длина – 255 символов. Первая буква заглавная. Точка в конце не нужна. «Капс» запрещен (исключение – аббревиатуры и пр.). Примеры:
    • Библиотека делового человека.
    • 50 оттенков.
    • Журнал «Коллекция Караван историй» 2014.
  • @text_descr_source – описание серии. Примеры:
    • Еженедельный аналитический журнал. На страницах издания вы найдете материалы о политических организациях, власти денег, анализ религиозных и научных идей. В каждом номере рассматриваются такие вопросы как, каким людям и корпорациям принадлежит сегодняшняя власть в России и за рубежом, что представляет собой расстановка сил в политической элите, и многое другое. Ведущие политики и экономисты дают комментарии событиям прошедшей недели и делают точные прогнозы на скорое будущее.
    • «Авантюрный детектив» – серия приключенческих романов Татьяны Поляковой, умело сочетающей захватывающие дух погони, сложные расследования и интригующую любовную линию. Критики и читатели отмечают в своих отзывах, что у разных книг цикла различные оттенки – среди них есть истории с политической окраской, встречаются произведения, щедро сдобренные историческими фактами, а бывают и явно мелодраматические сюжеты, однако легкость восприятия, неизменный юмор автора и счастливые финалы присутствуют всюду. В серию вошло около пятидесяти произведений автора, среди которых романы «Огонь, мерцающий в сосуде», «Я – ваши неприятности», «Уходи красиво» и «Мое второе я». По мотивам авантюрных детективов Татьяны Поляковой снят фильм «Тонкая штучка», а также популярные сериалы «Как бы не так» и «Строптивая мишень».

Проверить корректность (валидность) XML-документа можно с помощью XSD-схемы query_samizdat.xsd.

8.1.2 XML для запроса создания/редактирования персоны

С книгой могут быть связаны различные персоны, такие как авторы, переводчики, художники, составители, редакторы и т.д. Причем в приведенным далее XML сначала создается только описание персоны (ФИО, дата рождения, фотография и пр.), а её роль (автор, переводчик и т. д.) указывается уже в запросе создания/редактирования описания к книге.

Пример XML:

<?xml version="1.0" encoding="UTF-8"?>
<update_object>
	<person uuid="01f10c47-7369-4702-8d8b-f98fedf05798" first_name="Петр" middle_name="Сергеевич" last_name="Антонов" auto_sklon="1" inverse_full_name="Антонов Петр" birth_year="1969" photo_url="our_authors/123.jpg">
		<description>
			<p>текст <b>жирный текст</b></p>
			<p>Список:</p>
			<ul><li>Элемент1</li><li>Элемент2</li><li>Элемент3</li></ul>
		</description>
	</person>
</update_object>

Ещё пример XML:

<?xml version="1.0" encoding="UTF-8"?>
<update_object>
	<person uuid="33530e47-2cbf-4791-8493-c25b05cf3622" first_name="Дарья" last_name="Донцова" auto_sklon="0" last_rodit="Донцовой" last_dateln="Донцовой" last_vinit="Донцову" last_tvorit="Донцовой" last_predl="Донцовой" full_name="Дарья Донцова" full_rodit="Дарьи Донцовой" full_dateln="Дарье Донцовой" full_vinit="Дарью Донцову" full_tvorit="Дарьей Донцовой" full_predl="Дарье Донцовой" inverse_full_name="Донцова Дарья"/>
</update_object>

В теге персоны update_object/person указываются следующие атрибуты (обязательные атрибуты отмечены красной звездочкой):

  • @uuid* – уникальный идентификатор персоны. Генерируется на стороне партнера при создании новой персоны. Если необходимо отредактировать ранее созданную персону, то используется её старый UUID;
  • @first-name – имя. Максимальная длина – 255 символов. «Капс» запрещен. Точка в конце не нужна (исключение – когда в качестве имени указывается только лишь инициал, например, «А.»;
  • @middle-name – отчество. Максимальная длина – 255 символов. «Капс» запрещен. Точка в конце не нужна (исключение – когда в качестве отчества указывается только лишь инициал, например, «В.»;
  • @last-name* – фамилия. Максимальная длина – 255 символов. Точка в конце не нужна. «Капс» запрещен. Поле @last-name должно быть заполнено обязательно (предупреждение).
    Если персона не имеет фамилии, а использует только псевдоним или имя – оно указывается именно в @last-name;

    Примечание: если необходимо создать нестандартную персону, например, коллектив редакции журнала, тогда в атрибуте @last-name достаточно указать слово «Редакция» или «Издательство».

  • @auto_sklon* – если в этом атрибуте передано значение «1», то склонение имени и фамилии персоны по падежам будет происходить в автоматическом режиме (рекомендуется только для «простых» ФИО). Если указать в атрибуте «0», то необходимо в явном виде «просклонять» персону в следующих дополнительных атрибутах:

    • @last_rodit – фамилия (родительный падеж);
    • @last_dateln – фамилия (дательный падеж);
    • @last_vinit – фамилия (винительный падеж);
    • @last_tvorit – фамилия (творительный падеж);
    • @last_predl – фамилия (предложный падеж);
    • @full_name – «полное имя» (обычно это имя и фамилия) в именительном падеже. Если этот параметр не передан в запросе, то он автоматически формируется из имени, отчества и фамилии, разделенных пробелами: «first-name middle-name last-name». Рекомендуется, чтобы значение в @full_name (или сформированное автоматически) было уникальным среди всех персон партнера. Если же партнер добавит через API пять персон с одинаковыми «полными именами», то при попытке добавить шестую запрос вернет ошибку;
    • @full_rodit – полное имя (родительный падеж);
    • @full_dateln – полное имя (дательный падеж);
    • @full_vinit – полное имя (винительный падеж);
    • @full_tvorit – полное имя (творительный падеж);
    • @full_predl – полное имя (предложный падеж);
    • @inverse_full_name – полное имя в обратном порядке слов в именительном падеже;
  • @birth_year – год рождения в формате «ГГГГ»;
  • @photo_url – относительный путь до изображения/фотографии персоны на сервере партнера, например «our_authors/123.jpg». Допустимый формат файла: JPEG (RGB), картинка должна быть квадратной (предупреждение) и иметь размер не менее 100px;
  • @uilang – необязательный параметр «язык описания автора», двубуквенный символ. По умолчанию ru (и он же основной). Вы можете добавлять варианты написания автора и текста его биографии на других языках отдельными запросами. 
    При заключении договора партнер передает ЛитРес URL директории на своем сервере, в которой будут размещаться фотографии персон, например, «http://www.site.ru/ext_photo/» (загрузка изображений со сторонних ресурсов не допустима). И при обработке запроса на создание/редактирование персоны происходит синхронное скачивание фотографии с комбинированного URL: http://www.site.ru/ext_photo/our_authors/123.jpg. Важно, чтобы изображение было доступно по HTTP без авторизации. Т. к. если произойдет ошибка на этапе загрузки изображения, то весь запрос на обновление персоны получит статус ошибочного;
  • @description – описание автора. Должен содержать один или несколько абзацев или списков, каждый из которых должен быть обрамлен тегами <p></p>,<ul></ul>,<ol></ol>, элемент списка — <li></li>. Стили <b></b><i></i><u></u><sub></sub><sup></sup>. Пустые абзацы не допускаются. Размещение ссылок в description не допускается (предупреждение) (при попытке сервер вернет ошибку 102200 – см. Коды ошибок). 

Пример:

<?xml version="1.0" encoding="UTF-8"?>
<update_object>
	<person last_name="Редакция" uuid="01f10c46-7329-4749-8d8b-f93fedf05699" auto_sklon="1"/>
</update_object>

Для более подробного описания в запросе потребуется просклонять название нестандартной персоны, например:

<?xml version="1.0" encoding="UTF-8"?>
<update_object>
	<person uuid="33530e47-2cbf-4791-8493-c25b05cf3622" last_name="Редакция журнала «Вопросы экологии»" auto_sklon="0" last_rodit="Редакции журнала «Вопросы экологии»" last_dateln="Редакции журнала «Вопросы экологии»" last_vinit="Редакцию журнала «Вопросы экологии»" last_tvorit="Редакцией журнала «Вопросы экологии»" last_predl="Редакции журнала «Вопросы экологии»" full_name="Редакция журнала «Вопросы экологии»" full_rodit="Редакции журнала «Вопросы экологии»" full_dateln="Редакции журнала «Вопросы экологии»" full_vinit="Редакцию журнала «Вопросы экологии»" full_tvorit="Редакцией журнала «Вопросы экологии»" full_predl="Редакции журнала «Вопросы экологии»" inverse_full_name="Редакция журнала «Вопросы экологии»"/>
</update_object>

Проверить корректность (валидность) XML-документа можно с помощью XSD-схемы query_samizdat.xsd

8.1.3 XML для запроса создания/редактирования описания к книге

В XML должно содержаться описание книги, её выходной информации, данных об авторах и т. д. При обновлении объекта всегда указывайте полный набор данных, а не только изменившуюся часть, иначе некоторая информация может быть утеряна.

Пример XML:

<?xml version="1.0" encoding="UTF-8"?>
<update_object>
   <art_to_update uuid="63c38eb5-c0f1-4cae-b170-0bfa812e5c5f" name="Двести возможно лучших рецептов" type="fb2" owner="9351135" date_written_s="2012" date_written_d="2012-01-01" date_translate_s="2014" date_translate_d="2014-01-03" price="14.99" draft="1" update_period="200" publisher="Издательство Привет" isbn="9785170642281" adult="12" adult_cover="yes" adult_annotation="yes" trial_percent="8" valid_till="2015-05-01">
      <title-info>
         <genre>home_cooking</genre>
         <genre>home_crafts</genre>
         <annotation>
            <p>Замечательные рецепты на все случаи жизни.</p>
            <p>Одна из лучших книг в своем серии. Убедительно, ярко, вкусно!</p>
         </annotation>
         <title-relations>
            <related-title uuid="33b19c47-7369-4702-8d8b-f98fedf05798" relation="sequel"/>
            <related-title uuid="58f47daf-aadd-49f7-aaf0-8ff0a6c4e574" relation="prequel"/>
         </title-relations>
         <item-relations>
            <person uuid="5fec2133-b3e1-4a0a-961e-81493c9dfd6d" relation="author"/>
         </item-relations>
         <item-series>
            <related-serie uuid="ab940dec-936d-40fc-8ce4-357e75917e34" />
            <related-serie uuid="9b9bbdad-22f2-455d-bfe2-73d8f35d340b" number="5"/>
         </item-series>
         <art_tags>
            <tag uuid="617082dd-5b5b-11e4-96e2-0025905a06ea"/>
            <tag uuid="61799487-5b5b-11e4-96e2-0025905a06ea"/>
         </art_tags>
         <lang>ru</lang>
         <src-lang>en</src-lang>
         <udc>656.11</udc>
         <udc>[32 + 338](470)</udc>
         <bbk>60.9я73</bbk>
         <bbk>66.2(2Рос) + 65.9(2Рос)</bbk>
      </title-info>
   </art_to_update>
</update_object>

Еще один пример XML с минимальным обязательным набором параметров:

<?xml version="1.0" encoding="UTF-8"?>
<update_object>
   <art_to_update uuid="63c38eb5-c0f1-4cae-b170-0bfa812e5c5f" name="Двести возможно лучших рецептов" type="fb2" owner="9351135" price="14.99" adult="12">
      <title-info>
         <genre>home_cooking</genre>
         <annotation>
		<p>текст <b>жирный текст</b></p>
		<p>Список:</p>
		<ul><li>Элемент1</li><li>Элемент2</li><li>Элемент3</li></ul>
         </annotation>
         <item-relations>
            <person uuid="5fec2133-b3e1-4a0a-961e-81493c9dfd6d" relation="author"/>
         </item-relations>
         <lang>ru</lang>
      </title-info>
   </art_to_update>
</update_object>

Имейте в виду, что в этом запросе важен порядок тегов. Сначала в art_to_update/title-info должны идти жанры (не более четырех), затем аннотация, связи с другими книгами, связи с персонами, серии, теги, язык произведения, язык его оригинала и индексы УДК/ББК (обязательные элементы отмечены красной звездочкой):

  • genre* (не более четырех);
  • annotation*;
  • title-relations;
  • item-relations*;
  • item-series;
  • art_tags;
  • lang*;
  • src-lang;
  • udc;
  • bbk.

Если расположить элементы в ином порядке, то API будет выдавать ошибку. Проверить корректность (валидность) XML-документа можно с помощью XSD-схемы query_samizdat.xsd.

Описание создаваемой/редактируемой книги представляется тегом update_object/art_to_update со следующим содержимым (обязательные теги и атрибуты отмечены красной звездочкой):

  • @uuid* – уникальный идентификатор книги. При создании новой книги UUID должен быть сгенерирован партнером. Если в этом параметре передается UUID от созданной ранее книги, то происходит обновление параметров, перечисленных в запросе;
  • @name* – полное название книги. Оно должно быть уникальным среди всех книг партнера, иначе запрос вернет ошибку. Рекомендации по названию:
    • название книги не должно состоять из прописных буква, т. е. названия «капсом» запрещены. Допускается в исключительных случаях, например: 100 мест всемирного наследия ЮНЕСКО;
    • в начале и конце названия не должно быть пробелов;
    • в конце названия точка не требуется. Примеры-исключения: Великие сражения 1920–1870 гг. Исторические завитушки – или проба пера?..;
    • если в названии книги есть кавычки-лапки, то их рекомендуется заменить на кавычки-ёлочки. Пример корректных кавычек: Операция «Багратион»;
  • @type* – формат книги. Допустимые значения: «fb2», «fb3» и «pdf», «audio»;
  • @owner* – уникальный идентификатор правообладателя партнера, определяющий набор ресурсов/площадок, на которых будет размещена книга (значение для этого параметра передается партнеру при заключении договора с ЛитРес);
  • @date_written_s – дата написания книги в формате «ГГГГ»;
  • @date_written_d – дата написания книги в формате «ГГГГ-ММ-ДД»;
  • @date_translate_s – дата перевода книги с языка оригинала в формате «ГГГГ»;
  • @date_translate_d – дата перевода книги с языка оригинала в формате «ГГГГ-ММ-ДД»;
  • @draft – атрибут, указывающий на то, что книга является «черновиком». Данный атрибут принимается только для книг типа «0»;
  • @update_period – периодичность обновления «черновика» в днях. Передается только совместно с атрибутом «draft» и может принимать целочисленные значение в промежутке от 0 до 255;
  • @price* – цена на книгу в рублях в формате дробного числа с точкой в качестве разделителя дробной части, например: «99.90» или «99.9». Сетка доступных для использования цен приводится в главе «цены ЛитРес». Если в данном параметре будет передана иная цена, то при размещении книги в продажу она все равно округлится вверх до ближайшего значения из сетки цен (но не больше максимального). Если необходимо распространять книгу бесплатно, то укажите цену «0.00»;
  • @publisher – полное название издательства, опубликовавшего книгу, например «Эксмо-Пресс»;
  • @publisher_code – внутренний издательский код книги. Длина до 100 символов.
  • @isbn – ISBN книги (целое число, состоящее из 13 цифр без разделителей);
  • @adult* – возрастное ограничение, накладываемое на содержание книги (целое число). Доступные значения: 0, 6, 12, 16, 18, 21;
  • @adult_cover – если на обложке книги есть что-то, подпадающее под возрастное ограничение «18+», то в этом атрибуте необходимо передать значение «yes». Иначе по умолчанию используется значение «no»;
  • @adult_annotation – если в аннотации книги есть что-то, подпадающее под возрастное ограничение «18+», то в этом атрибуте необходимо передать значение «yes». Иначе по умолчанию используется значение «no»;
  • @trial_percent – (актуально только для FB2-книг, у pdf-книг задается по листам в другом запросе) размер фрагмента книги в процентах, доступный читателю для бесплатного ознакомления перед покупкой. Доступные значения: целое число от 8 до 20 включительно. Значение по умолчанию: 25%;
  • @preview_length – размер фрагмента аудио книги в секундах, доступный читателю для бесплатного ознакомления перед покупкой. По умолчанию это 10% от начала первого mp3 файла книги, но не более 300 секунд. Актуально только для книг, у которых указан тип @type=audio;
  • @valid_till – дата индивидуального окончания прав на данную книгу в формате «ГГГГ-ММ-ДД». При наступлении указанной даты книга автоматически полностью снимется с продажи. Также с помощью этого атрибута можно принудительно снять книгу с продажи, передав в нём текущую дату;
  • @keep_on_sale – атрибут, указывающий, что книга должна остаться в продаже. Принимает значение =1. Если параметр не передан, то при обновлении данных книги, она будет снята с продажи;
  • title-info/genre* – перечень жанров книги. Допустимые значения приведены в главе «жанры ЛитРес» в атрибутах @token. Для каждой книги должен быть определен хотя бы один такой жанр;
  • title-info/annotation* – аннотация к книге. Должен содержать один или несколько абзацев или списков, каждый из которых должен быть обрамлен тегами <p></p>,<ul></ul>,<ol></ol>, элемент списка — <li></li>. Стили <b></b><i></i><u></u><sub></sub><sup></sup>. Пустые абзацы не допускаются. Размещение ссылок в аннотации не допускается (предупреждение) (при попытке сервер вернет ошибку 102201 – см. Коды ошибок);
  • title-info/title-relations/related-title – список логических связей с другими книгами, добавленными ранее через API. Например, если книга является второй в серии, то можно создать связь с первой книгой (предыдущим выпуском). Атрибуты:
    • @uuid* – уникальный идентификатор логически связанной книги. Такая книга должна быть заранее создана партнером, но не обязательно размещена в продажу;
    • @relation* – тип связи между книгами. Допустимые значения:
      • previous – предыдущий выпуск;
      • next – следующий выпуск;
      • translated_from – перевод с;
      • translated – перевод;
      • collected – сборник;
      • part – часть;
      • reedition – переиздание;
      • sequel – продолжение;
      • prequel – предыстория.
  • title-info/item-relations/person* – список персон, связанных с книгой. Важно, чтобы к книге была привязана хотя бы одна персона (автор, составитель или кто-то еще). Атрибуты:
    • @uuid* – уникальный идентификатор персоны. Такая персона должна быть заранее создана партнером;
    • @relation* – роль персоны по отношению к книге. Допустимые значения:
      • author – автор;
      • translator – переводчик;
      • illustrator – художник;
      • compiler – составитель;
      • editor – редактор;
      • narrator – чтец.
    • @license_end – [зарезервировано и не используется].

  • title-info/item-series/related-serie – список серий, в которых размещается книга. Если в запросе не передан этот тег, то серии, присвоенные книге ранее, не будут изменены. Атрибуты:
    • @uuid* – уникальный идентификатор серии. Такая серия должна быть заранее создана партнером;
    • @number – порядковый номер книги в серии (целое положительное число). Следует указывать, если есть порядковая нумерация книг в серии. И, если вы добавляете, например, сначала 3-й выпуск номера журнала, а потом планируете добавить первые два, то необходимо сразу указывать корректную нумерацию. Издательские серии, например, «учебники высшей школы», как правило, идут без номера серии (но при желании можно и указать).

Дополнительно в узле item-series можно передать необязательный параметр keep_old=1. Он определяет, что переданный в этом запросе список серий нужно добавить к уже имеющимся сериям, в которых размещается книга. Если параметр не передан явным образом (а по умолчанию keep_old=0) и при этом передан пустой тег item-series, то в результате выполнения запроса все ранее присвоенные серии, в которых размещается книга, будут удалены.

  • title-info/art_tags/tag – список тегов (ключевых слов) книги. Атрибуты:
    • @uuid* – уникальный идентификатор ключевого слова. Допустимые значения рассмотрены в главе «теги ЛитРес»;
  • title-info/lang* – язык, на котором написана книга (двухбуквенный код в нижнем регистре в формате ISO). Допустимые значения:
    • ru – Русский;
    • uk – Украинский;
    • en – Английский;
    • de – Немецкий;
    • fr – Французский;
    • ab – Абхазский;
    • az – Азербайджанский;
    • ay – Аймара;
    • sq – Албанский;
    • ar – Арабский;
    • hy – Армянский;
    • as – Ассамский;
    • af – Африкаанс;
    • ts – Банту;
    • eu – Баскский;
    • ba – Башкирский;
    • be – Белорусский;
    • bn – Бенгальский;
    • my – Бирманский;
    • bh – Бихарский;
    • bg – Болгарский;
    • br – Бретонский;
    • cy – Валлийский;
    • hu – Венгерский;
    • wo – Волоф;
    • vi – Вьетнамский;
    • gd – Гаэльский;
    • nl – Голландский;
    • el – Греческий;
    • ka – Грузинский;
    • gn – Гуарани;
    • da – Датский;
    • gr – Древнегреческий;
    • iw – Древнееврейский;
    • dr – Древнерусский;
    • zu – Зулу;
    • he – Иврит;
    • yi – Идиш;
    • in – Индонезийский;
    • ia – Интерлингва;
    • ga – Ирландский;
    • is – Исландский;
    • es – Испанский;
    • it – Итальянский;
    • kk – Казахский;
    • kn – Каннада;
    • ca – Каталанский;
    • ks – Кашмири;
    • qu – Кечуа;
    • ky – Киргизский;
    • zh – Китайский;
    • ko – Корейский;
    • kw – Корнский;
    • co – Корсиканский;
    • ku – Курдский;
    • km – Кхмерский;
    • xh – Кхоса;
    • la – Латинский;
    • lv – Латышский;
    • lt – Литовский;
    • mk – Македонский;
    • mg – Малагасийский;
    • ms – Малайский;
    • mt – Мальтийский;
    • mi – Маори;
    • mr – Маратхи;
    • mo – Молдавский;
    • mn – Монгольский;
    • na – Науру;
    • ne – Непали;
    • no – Норвежский;
    • pa – Панджаби;
    • fa – Персидский;
    • pl – Польский;
    • pt – Португальский;
    • ps – Пушту;
    • rm – Ретороманский;
    • ro – Румынский;
    • rn – Рунди;
    • sm – Самоанский;
    • sa – Санскрит;
    • sr – Сербский;
    • si – Сингальский;
    • sd – Синдхи;
    • sk – Словацкий;
    • sl – Словенский;
    • so – Сомали;
    • st – Сото;
    • sw – Суахили;
    • su – Сунданский;
    • tl – Тагальский;
    • tg – Таджикский;
    • th – Тайский;
    • ta – Тамильский;
    • tt – Татарский;
    • te – Телугу;
    • bo – Тибетский;
    • tr – Турецкий;
    • tk – Туркменский;
    • uz – Узбекский;
    • ug – Уйгурский;
    • ur – Урду;
    • fo – Фарерский;
    • fj – Фиджи;
    • fi – Финский;
    • fy – Фризский;
    • ha – Хауса;
    • hi – Хинди;
    • hr – Хорватскосербский;
    • cs – Чешский;
    • sv – Шведский;
    • sn – Шона;
    • eo – Эсперанто;
    • et – Эстонский;
    • jv – Яванский;
    • ja – Японский;
  • title-info/src-lang – язык, с которого было переведено данное произведение (язык оригинала) – двухбуквенный код в нижнем регистре в формате ISO. Важно: оставьте это поле пустым, если книга не переводилась и язык оригинала совпадает с языком, на котором написана книга;
  • title-info/udc – перечень УДК-индексов книги. У книги может быть несколько индексов и каждый из них записывается в отдельном теге title-info/udc. Важно, чтобы в значении индекса отсутствовал префикс «УДК». Примеры корректных индексов:
    • 656.11;
    • 656.072:338.47;
    • 001(470);
    • 070(571.54)(091);
    • [32 + 338](470);

    • 364(571.53/.54)(091)(075.8);
    • 340.15(47+57)(075.8);
    • [574 + 502/504](075.8);

    • 94(100)«654»(075.8).
  • title-info/bbk – перечень ББК-индексов книги. У книги может быть несколько индексов и каждый из них записывается в отдельном теге title-info/bbk. Важно, чтобы в значении индекса отсутствовал префикс «ББК». Примеры корректных индексов:
    • 72;
    • 39.311;
    • 60.9я73;
    • 63.3(0)5я73;
    • 28.080я73 + 20.18я73;
    • 66.2(2Рос) + 65.9(2Рос).

Проверить корректность (валидность) XML-документа можно с помощью XSD-схемы query_samizdat.xsd.

8.2 Ответ сервера

Пример возвращаемого XML:

<update_object_result>
	<updated_object result="error" timestamp="2015-05-27T18:20:30+03:00" error_message="Failed to add relation with art uuid = '33b19c47-7369-4702-8d8b-f98fedf05798': no ownership or art doesn't exist" uuid="63c38eb5-c0f1-4cae-b170-0bfa812e5c5f" error_code="102014"/>
</update_object_result>

В ответе каждый создаваемый или редактируемый элемент (серия, персона, книга) представлен тегами update_object_result/updated_object со следующим содержимым:

  • @result* – в случае успешной обработки элемента (серии, персоны, книги) этот атрибут имеет значение ok, иначе – error;
  • @timestamp* – дата и время обработки запроса на сервере;
  • @error_message – текстовое описание ошибки на английском языке (в случае, если result=»error»);
  • @error_code – код ошибки (в случае, если result=»error»). Перечень всех кодов с описанием см. в разделе «Коды ошибок»;
  • @uuid* – идентификатор создаваемого/редактируемого элемента.

9 Загрузка файла FB2 (FB3) и отправка книги на модерацию

9.1 Запрос на загрузку файла FB2 (FB3) и отправку книги на модерацию

Для FB2-файлов используется URL: https://sp.litres.ru/partner_fb2_upload/.
Для FB3-файлов используется URL: https://sp.litres.ru/partner_fb3_upload/.

(предупреждение) Параллельная загрузка объектов от одного робота не поддерживается. Загружайте объекты по одному экземпляру.

Параметры запроса (обязательные параметры отмечены красной звездочкой):

  • partner* – идентификатор партнера;
  • sha* – хеш SHA-256, формируемый индивидуально для каждого из запросов:

    $sha=Digest::SHA::sha256_hex($timestamp.':'.$secret_key.':'.$partner)
  • timestamp* – московское время в формате «2014-11-07T16:21:02+03:00»;

  • uuid* – уникальный идентификатор загружаемой книги;
  • file* – в данном параметре необходимо передать содержимое файла книги в ZIP-архиве. К загружаемым файлам предъявляются требования:
    • кодировка текста в файле: UTF-8;
    • допустимые символы в тексте файла: диапазоны допустимых символов;
    • книга в FB2-формате должна соответствовать схеме FictionBook2.2;
    • не допускаются к использованию следующие конструкции:
      • table – теги таблиц недопустимы. Все таблицы должны быть вставлены в книгу в виде изображений;
      • stylesheet – использование стилей недопустимо;
    • все внутренние сноски и ссылки внутри книги должны иметь актуальные точки привязки;
    • размер конечного файла в ZIP-архиве: не более 30 МБ;
    • в книге не должно быть оглавления (оно будет формироваться автоматически из заголовков);
    • все изображения в книге должны быть в форматах JPEG или PNG в цветовой схеме RGB с разрешением каждого файла не более 2 мегапиксела (длина × ширина ≤ 2 000 000 px). Рекомендуемый размер: 600-1000 px по длинной стороне. При этом все изображения в книге обязательно должны быть использованы;
    • в загружаемом файле может содержаться обложка книги. Но если она не задана, то на стороне ЛитРес она будет сгенерирована автоматически. Требования к обложке:
      • расширение файла: JPG;
      • цветовая схема: RGB;
      • минимальный размер бо́льшей стороны обложки: 1500 px, например 1000×1500 px;
      • в качестве обложки допустимо использовать только лицевую сторону книги без каких-либо дополнительных эффектов (например, 3D и т. п.);
      • рекомендуемое (но не обязательное) соотношение сторон: 5×7 (W×H);
    • для FB2-книг можете воспользоваться более подробными рекомендациями по оформлению и вёрстке «Советы для верстальщиков»;
    • для создания FB3-книг можно пользоваться специальным редактором http://fb3edit.org/. (предупреждение) Рекомендуется заполнять все поля описания, чтобы избежать далее проблем с модерацией и релизом.

  • keep_on_sale – необязательный атрибут, указывающий, что книга должна остаться в продаже. Принимает значение =1. Если параметр не передан, то при обновлении FB2/FB3 файлов, книга будет снята с продажи;
  • file_checksum – необязательный атрибут, определяющий необходимость проверки FB2/FB3-файла на целостность. Принимает значение sha256 от файла (например, считается линукс-утилитой «sha256sum»), в нижнем регистре.

Пример содержимого FB2-файла:

<FictionBook xmlns="http://www.gribuser.ru/xml/fictionbook/2.0" xmlns:l="http://www.w3.org/1999/xlink">
 <description>
  <title-info>
   <genre>poetry</genre>
   <author>
    <first-name>Владимир</first-name>
    <middle-name>Владимирович</middle-name>
    <last-name>Маяковский</last-name>
    <id>dce719b0-2a83-102a-9ae1-2dfe723fe7c7</id>
   </author>
   <book-title>Тучкины штучки</book-title>
   <annotation>
    <p>«Плыли по◦небу тучки.</p>
    <p>Тучек◦– четыре штучки:</p>
    <p>от первой до◦третьей◦– люди,</p>
    <p>четвёртая была◦– верблюдик…»</p>
   </annotation>
   <date></date>
   <lang>ru</lang>
   <sequence name="Хрестоматии для начальной школы">
    <sequence name="Большая хрестоматия для начальной школы">
     <sequence name="Современная русская литература"/>
    </sequence>
   </sequence>
  </title-info>
  <document-info>
   <author>
    <nickname>MCat78</nickname>
   </author>
   <program-used>FictionBook Editor Release 2.6.6</program-used>
   <date value="2012-10-09">09 October 2012</date>
   <src-url>http://www.litres.ru/pages/biblio_book/?art=4235585</src-url>
   <src-ocr>Текст предоставлен издательством</src-ocr>
   <id>aa9720a5-12f6-11e2-86b3-b737ee03444a</id>
   <version>1.0</version>
   <history>
    <p>v 1.0 – создание fb2 – (MCat78)</p>
   </history>
  </document-info>
  <publish-info>
   <book-name>Большая хрестоматия для начальной школы</book-name>
   <publisher>Эксмо</publisher>
   <city>Москва</city>
   <year>2012</year>
   <isbn>978-5-699-56619-8</isbn>
   <sequence name="Для школьников и учеников начальных классов"/>
  </publish-info>
 </description>
 <body>
  <title>
   <p>Владимир Владимирович Маяковский</p>
   <p>Тучкины штучки</p>
  </title>
  <section>
   <poem>
    <stanza>
     <v>Плыли по◦небу тучки.</v>
     <v>Тучек◦– четыре штучки:</v>
     <v>от первой до◦третьей◦– люди,</v>
     <v>четвёртая была◦– верблюдик,</v>
     <v>К ним, любопытством объятая,</v>
     <v>по дороге пристала пятая,</v>
     <v>от неё в◦небосинем лоне</v>
     <v>разбежались за◦слоником слоник.</v>
     <v>И, не◦знаю, спугнула шестая ли,</v>
     <v>тучки взяли все◦– и◦растаяли.</v>
     <v>И следом за◦ними, гонясь и</v>
     <v>сжирав,</v>
     <v>солнце погналось◦—</v>
     <v>жёлтый жираф.</v>
    </stanza>
   </poem>
  </section>
 </body>
</FictionBook>

С примерами FB3-файлов можно ознакомиться по ссылке: https://github.com/gribuser/FB3/tree/master/Examples.

    • XML запроса создания/редактирования описания к книге

Данные в теге description FB2-книги

Параметры «XML запроса создания/редактирования описания к книге», из которого можно взять эти данные

Описание

title-info/genre

title-info/genre

Перечень жанров книги

title-info/author

title-info/item-relations/person/@uuid

Автор книги, @id которого должен совпадать с уникальным идентификатором персоны автора

title-info/book-title

@name

Название книги

title-info/annotation

title-info/annotation

Аннотация к книге

title-info/keywords

title-info/art_tags/tag

Ключевые слова (UUID этих тегов приведены в title-info/art_tags/tag, но в FB2-книге должны быть перечислены текстовые описания тегов)

title-info/date

@date_written_s

Дата написания книги

title-info/lang

title-info/lang

Язык, на котором написана книга

title-info/src-lang

title-info/src-lang

Язык, на котором был написан оригинал произведения

title-info/translator

title-info/item-relations/person/@uuid

Перечень переводчиков книги, @id которых должны совпадать с уникальными идентификаторами переводчиков

title-info/sequence

title-info/item-series/related-serie

Список серий, в которых размещается книга

document-info/id

@uuid

Уникальный идентификатор книги

publish-info/publisher

@publisher

Полное название издательства, опубликовавшего книгу

publish-info/isbn

@isbn

ISBN книги

Протестировать запросы загрузки можно с помощью тестового файла. Пример тестового файла для FB2-книги SP_LitRes_partner_fb2_upload.html. Для FB3-книги нужно заменить action на https://sp.litres.ru/partner_fb3_upload/ и заголовок, соответственно.

9.2 Ответ сервера

Пример возвращаемого XML при загрузке FB2-файла:

<update_object_result result="ok" timestamp="2015-05-26T13:52:52+03:00" file_id="12736028"/>

В ответе в update_object_result содержатся следующие атрибуты:

  • @result* – в случае успешной обработки элемента (серии, персоны, книги) этот атрибут имеет значение ok, иначе – error;
  • @timestamp* – дата и время обработки запроса на сервере;
  • @error_message – текстовое описание ошибки на английском языке (в случае, если result=»error»);
  • @error_code – код ошибки (в случае, если result=»error»). Перечень всех кодов с описанием см. в разделе «Коды ошибок»;
  • @file_id – уникальный целочисленный номер файла. В дальнейшем вы сможете посмотреть перечень всех «привязанных» к книге файлов в запросе объектов, изменивших свое состояние (partner_update_log).

Пример возвращаемого XML при загрузке FB3-файла:

<update_object_result result="ok" timestamp="2015-05-26T13:52:52+03:00"/>

При загрузке FB3-файла в ответе в update_object_result содержатся все те же атрибуты, что и при загрузке FB2-файла за исключением атрибута @file_id.

Учитывайте, что успешное выполнение этого запроса запускает на стороне ЛитРес процедуру «релиза» загруженного файла (создание файлов книги в разных форматах). И до окончания процесса релиза изменять описание или сам файл книги нельзя: при попытке обновления данных API будет выдавать сообщение об ошибке.

9.3 Запрос статуса релиза загруженного файла книги

Файл книги проходит обработку в системе, проходит «релиз»: создаются файлы для бесплатного отрывка, создаются файлы для онлайн читалок, файлы альтернативных форматов и т.д. Когда файл книги успешно проходит релиз, он поступает на модерацию.
Релиз может завершиться с ошибкой, в этом случае книга не поступит на модерацию.
Арт может не содержаться в релизной таблице, но обычно в течение нескольких недель после попытки (с любым исходом) релиза арт в ней присутствует.

Узнать статус релиза можно запросом: https://sp.litres.ru/partner_release_status/.

Параметры запроса (обязательные параметры отмечены красной звездочкой):

  • partner* – идентификатор партнера;
  • sha* – хеш SHA-256, формируемый индивидуально для каждого из запросов:

    $sha=Digest::SHA::sha256_hex($timestamp.':'.$secret_key.':'.$partner)
  • timestamp* – московское время в формате «2014-11-07T16:21:02+03:00»;

  • uuid* – уникальный идентификатор загружаемой книги (один или несколько – до 100 штук);

В ответе для каждой указанной книги будет элемент release_status содержащий следующие атрибуты:

  • @status*waiting, processing, ok, error, not found;
  • @timestamp* – дата и время обработки запроса на сервере;
  • @file_id* – уникальный целочисленный номер файла;
  • @uuid* – уникальный идентификатор книги;
  • @error_message – техническое сообщение системы об ошибке (в случае, если status=»error»);
  • @requested, @started, @finished – время постановки в очередь, начала и завершения обработки (если не NULL).

10 Загрузка PDF-файлов книги на FTP

Файл книги в PDF-формате может иметь достаточно большие размеры. Поэтому для их передачи используется особая процедура загрузки.
Для начала книгу необходимо закачать по FTP на специальный сервер ЛитРес (адрес, логин и пароль сообщаются партнеру при заключении договора). На этом сервере загруженный файл хранится несколько часов. За это время нужно успеть выполнить запрос на модерацию PDF-книги (partner_object_update).

Требования к PDF-файлу книги:

  • все страницы книги должны находиться в одном PDF файле.Рекомендуется, что бы на одной странице PDF документа была отдельная страница книги, а не разворот;
  • PDF файл должен быть оптимизирован по размеру. Для чтения книги в электронном виде не требуется такое высокое качество, как для полиграфии. Поэтому размер PDF файла нужно уменьшать настолько, чтобы его можно было быстро скачать через мобильный интернет и при этом читаемость текста и качество картинок осталась на должном уровне;
  • название PDF файла должно состоять только из английских букв, арабских цифр и символов нижнего подчёркивания «_». Пробелы запрещены! Рекомендуется задавать «человекочитаемые» названия, т. к. конечные пользователи скачают файл книги именно с этим названием.

11 Загрузка обложек для PDF-книг

В случае с книгами в формате FB2 обложка берется из содержимого FB2-файла. А для PDF-книг обложку необходимо загружать отдельно. Если её не загрузить, то книга будет вообще без обложки (автогенерация обложек для PDF не предусмотрена).
Требования к файлу обложки аналогичны требованиям для FB2-обложек и рассмотрены ранее в запросе загрузки FB2 книг.

11.1 Запрос на загрузку обложки для PDF-книги

Используется следующий URL: https://sp.litres.ru/partner_cover_upload/.

(предупреждение) Параллельная загрузка объектов от одного робота не поддерживается. Загружайте объекты по одному экземпляру.
 Здесь и далее под роботом ЛитРес понимается скрипт-обработчик, выполняющий действия по добавлению, изменению, удалению книги, ее атрибутов (жанров, серий, описания, цены и т. д.) и правообладателей на стороне партнера.

Параметры запроса (обязательные параметры отмечены красной звездочкой):

  • partner* – идентификатор партнера;
  • sha* – хеш SHA-256, формируемый индивидуально для каждого из запросов:

    $sha=Digest::SHA::sha256_hex($timestamp.':'.$secret_key.':'.$partner)
  • timestamp* – московское время в формате «2014-11-07T16:21:02+03:00»;

  • uuid* – уникальный идентификатор загружаемой книги;
  • file* – в данном параметре необходимо передать JPEG-файл обложки;
  • file_checksum – необязательный атрибут, определяющий необходимость проверки файла обложки на целостность. Принимает значение sha256 от файла (например, считается линукс-утилитой «sha256sum»), в нижнем регистре.

Протестировать запросы загрузки файлов обложек можно с помощью тестового файла SP_LitRes_partner_cover_upload.html.

11.2 Ответ сервера

Пример возвращаемого XML:

<update_object_result result="error" timestamp="2015-05-26T16:34:28+03:00" error_message="Only images in JPEG format are allowed but 'test.pdf' was given" error_code="102039"/>

В ответе в update_object_result содержатся следующие атрибуты:

  • @result* – в случае успешной обработки элемента (серии, персоны, книги) этот атрибут имеет значение ok, иначе – error;
  • @timestamp* – дата и время обработки запроса на сервере;
  • @error_message – текстовое описание ошибки на английском языке (в случае, если result=»error»);
  • @error_code – код ошибки (в случае, если result=»error»). Перечень всех кодов с описанием см. в разделе «Коды ошибок».

12 Отправка PDF книги на модерацию

После того, как PDF-файл книги загружен на FTP, а обложка загружена и привязана к книге, вы можете отправить PDF-книгу на модерацию.

12.1 Запрос на модерацию PDF-книги

Для отправки PDF-книги на модерацию используется тот же запрос, что и для редактирования серий,авторов и книг: https://sp.litres.ru/partner_object_update/.

Параметры запроса (обязательные параметры отмечены красной звездочкой):

  • partner* – идентификатор партнера;
  • sha* – хеш SHA-256, формируемый индивидуально для каждого из запросов:

    $sha=Digest::SHA::sha256_hex($timestamp.':'.$secret_key.':'.$partner)
  • timestamp* – московское время в формате «2014-11-07T16:21:02+03:00»;

  • request* – в данном параметре необходимо передать XML-документ следующего содержания:

    <?xml version="1.0" encoding="UTF-8"?>
    <update_object>
      <pdf_to_upload name="MoskovskyKomsomolec_215_2014.pdf" sha="123ab..22123" preview_pages="1-4,7-8,15" uuid="63c38eb5-c0f1-4cae-b170-0bfa812e5c5f" />
    </update_object>

    где:

    • @name* – название файла PDF-книги, предварительно загруженной на FTP;
    • @sha* – хеш SHA-256 от содержимого файла книги (важно: FTP протокол старый), в нижнем регистре;
    • @preview_pages* – перечень страниц (или диапазонов страниц), которые должны войти в файл предварительного просмотра, доступного читателю перед покупкой книги. Рекомендуется включать в него не более 20% книги. Пример: preview_pages=«1-4,7-8,15»;
    • @uuid* – уникальный идентификатор книги.

Проверить корректность (валидность) XML-документа можно с помощью XSD-схемы query_samizdat.xsd, а протестировать сам запрос отправки PDF-книги на модерацию можно с помощью тестового файла SP_LitRes_partner_object_update.html.

12.2 Ответ сервера

Пример возвращаемого XML:

<update_object_result>
   <updated_object result="ok" timestamp="2015-09-11T18:21:57+03:00" file_id="14651742" preview_id="14651749" uuid="fa7d41d5-54df-50fb-9234-dcd857a50674" />
</update_object_result>

В ответе содержится тег update_object_result/updated_object со следующим содержимым:

  • @result* – в случае успешной обработки запроса этот атрибут имеет значение ok, иначе – error;
  • @timestamp* – дата и время обработки запроса на сервере;
  • @error_message – текстовое описание ошибки на английском языке (в случае, если result=»error»);
  • @error_code – код ошибки (в случае, если result=»error»). Перечень всех кодов с описанием см. в разделе «Коды ошибок»;
  • @file_id – уникальный целочисленный номер файла с полной версией PDF-книги. В дальнейшем вы сможете посмотреть перечень всех «привязанных» к книге файлов в запросе объектов, изменивших свое состояние (partner_update_log);
  • @preview_id – уникальный целочисленный номер файла с фрагментом PDF-книги. В дальнейшем вы сможете посмотреть перечень всех «привязанных» к книге файлов в запросе объектов, изменивших свое состояние (partner_update_log);
  • @uuid – идентификатор книги.

Учитывайте, что успешное выполнение этого запроса запускает на стороне ЛитРес процедуру «релиза» PDF-книги (создание демо-файла с отрывком книги, генерация изображений для мобильных приложений и пр.). И до окончания процесса релиза изменять описание к книге или повторно отправлять её на модерацию нельзя: в таком случае API будет выдавать сообщение об ошибке.

13 Загрузка файлов аудио книги на FTP

Для передачи файла книги в аудио формате используется такая же процедура загрузки, как и с книгами в формате PDF.
Для начала книгу необходимо закачать по FTP на специальный сервер ЛитРес (адрес, логин и пароль сообщаются партнеру при заключении договора). На этом сервере загруженный файл хранится несколько часов. За это время нужно успеть выполнить запрос на модерацию аудио-книги (partner_object_update).

Требования к файлам аудио книги:

  • все файлы аудио книги должны находиться в одном zip-архиве и должны быть пронумерованы по-порядку (например, *_01.mp3, *_02.mp3, *_03.mp3);
  • названия файлов аудио книги должны состоять только из английских букв, арабских цифр и символов нижнего подчёркивания «_». Пробелы запрещены! Рекомендуется задавать «человекочитаемые» названия, т. к. конечные пользователи скачают файл книги именно с этим названием;
  • если в архиве не содержится файл с именем «sample.*», то ознакомительный фрагмент будет сформирован автоматически из файла книги, который является первым по нумерации (10% файла от начала, но по длительности не более 300 секунд).

14 Загрузка обложек для аудио книг

Для аудио книг обложку необходимо загружать отдельно. Если её не загрузить, то книга будет без обложки (автоматическая генерация не предусмотрена). Загрузка обложек для аудио книг аналогична загрузке обложек для PDF-книг. Требования к файлу обложки аудио книги аналогичны требованиям для FB2-обложек и рассмотрены ранее в запросе загрузки FB2 книг.

15 Отправка аудио книги на модерацию

После того, как файл аудио книги загружен на FTP, обложка также загружена и привязана к книге, вы можете отправить книгу на модерацию.

15.1 Запрос на модерацию аудио книги

Для отправки аудио книги на модерацию используется тот же запрос, что и для редактирования серий, авторов и книг: https://sp.litres.ru/partner_object_update/.

Параметры запроса (обязательные параметры отмечены красной звездочкой):

  • partner* – идентификатор партнера;
  • sha* – хеш SHA-256, формируемый индивидуально для каждого из запросов:

    $sha=Digest::SHA::sha256_hex($timestamp.':'.$secret_key.':'.$partner)
  • timestamp* – московское время в формате «2014-11-07T16:21:02+03:00»;

  • request* – в данном параметре необходимо передать XML-документ следующего содержания:

    <?xml version="1.0" encoding="UTF-8"?>
    <update_object>
      <audio_to_upload name="strannyi_zaichik.mp3" preview_length="90" sha=«123ab..22123» uuid=«63c41eb5-c0f1-4cae-b170-0bfa812e5c5f» />
    </update_object>

    где:

    • @name* – название файла аудио книги, предварительно загруженной на FTP;
    • @sha* – хеш SHA-256 от содержимого файла книги (важно: FTP протокол старый);
    • @uuid* – уникальный идентификатор книги;
    • @preview_length – размер фрагмента аудио книги в секундах, доступный читателю для бесплатного ознакомления перед покупкой. По умолчанию это 10% от начала первого mp3 файла книги, но не более 300 секунд.

Проверить корректность (валидность) XML-документа можно с помощью XSD-схемы query_samizdat.xsd, а протестировать сам запрос отправки аудио книги на модерацию можно с помощью тестового файла SP_LitRes_partner_object_update.html.

15.2 Ответ сервера

Пример возвращаемого XML:

<update_object_result>
   <updated_object result="ok" timestamp="2015-09-11T18:21:57+03:00" uuid="fa7d41d5-54df-50fb-9234-dcd857a50674" />
</update_object_result>

В ответе содержится тег update_object_result/updated_object со следующим содержимым:

  • @result* – в случае успешной обработки запроса этот атрибут имеет значение ok, иначе – error;
  • @timestamp* – дата и время обработки запроса на сервере;
  • @error_message – текстовое описание ошибки на английском языке (в случае, если result=»error»);
  • @error_code – код ошибки (в случае, если result=»error»). Перечень всех кодов с описанием см. в разделе «Коды ошибок»;
  • @uuid – идентификатор книги.

Учитывайте, что успешное выполнение этого запроса запускает на стороне ЛитРес процедуру «релиза» аудио книги (создание демо-файла с отрывком книги, генерация изображений для мобильных приложений и пр.). И до окончания процесса релиза изменять описание к книге или повторно отправлять её на модерацию нельзя: в таком случае API будет выдавать сообщение об ошибке.

16 Проверка статуса книги, персоны или серии

После отправки книги на модерацию рекомендуется с некоторой периодичностью проверять, изменился ли статус книги или нет. Для этого используется универсальный запрос, который позволяет получить информацию об изменениях всех объектов, созданных партнером. Причем можно задавать различные критерии выборки информации: за определенный промежуток времени и/или среди конкретных объектов.
Если вы используете данный API в своем сервисе самиздата, то имейте в виду, что описание книги, персон и серий может незначительно меняться модераторами и редакторами ЛитРес, поэтому рекомендуется периодически (желательно не реже 1 раза в час) обновлять информацию в своей базе в соответствии с данными из приведенного далее запроса.

16.1 Запрос на перечень объектов, изменивших свое состояние

Используется следующий URL: https://sp.litres.ru/partner_update_log/.

Параметры запроса (обязательные параметры отмечены красной звездочкой):

  • partner* – идентификатор партнера;
  • sha* – хеш SHA-256, формируемый индивидуально для каждого из запросов:

    $sha=Digest::SHA::sha256_hex($timestamp.':'.$secret_key.':'.$partner)
  • timestamp* – серверное (московское) время в формате «2014-11-07T16:21:02+03:00»;

  • checkpoint* – время в формате ISO (например, 2015-09-30T12:09:39+03:00), начиная с которого требуется получить информацию по измененным объектам;
  • uuid – уникальный идентификатор объекта. Если он задан, то в ответе будут данные только по этому объекту.

Протестировать запрос проверки объектов, изменивших свое состояние, можно с помощью тестового файла SP_LitRes_partner_update_log.html.

16.2 Ответ сервера

Пример возвращаемого XML:

<partner_update_log timestamp="2015-05-26T19:19:26+03:00">
  <updated-art status="processed" available="0" message="Файл успешно поставлен в очередь на релиз" release_file="12736028" uuid="63c38eb5-c0f1-4cae-b170-0bfa812e5c5f" id="9827348" name="Двести возможно лучших рецептов" type="fb2" owner="9351135" last_update="2017-07-14 19:17:50" valid_till="2099-12-31" date_written_s="2012" date_written_d="2012-01-01" adult="12" price="14.99" isbn="9785170642281" adult_cover="1" adult_annotation="1" date_translate_s="2014" date_translate_d="2014-01-03" trial_percent="8" url="/petr-sergeevich-antonov/dvesti-vozmozhno-luchshih-receptov/">
    <annotation>
      <p>
      Замечательные рецепты на все случаи жизни. Одна из лучших книг в своем серии. Убедительно, ярко, вкусно!
      </p>
    </annotation>
    <lang>ru</lang>
    <src-lang>en</src-lang>
    <title-relations/>
    <item-relations>
      <person uuid="45a54cbd-a311-11e4-bbe7-002590591ed2" relation="agent"/>
      <person uuid="97a64a78-2ba5-4d6d-b0cb-1e0718794bf3" relation="author"/>
    </item-relations>
    <item-series/>
    <art_tags>
      <tag uuid="61799487-5b5b-11e4-96e2-0025905a06ea"/>
    </art_tags>
    <coverpage>
      <image type="jpg" cover_url="/static/bookimages/08/42/01/08420106.bin.dir/08420106.cover.jpg"/>
    </coverpage>
    <item-files>
      <file id="12736023" sent_by="9352347" size="480940" time="2015-05-26 13:52:42"/>
      <file id="12736028" sent_by="101" size="474024" time="2015-05-26 13:52:47"/>
    </item-files>
    <udc>656.11</udc>
    <udc>[32 + 338](470)</udc>
    <bbk>60.9я73</bbk>
    <bbk>66.2(2Рос) + 65.9(2Рос)</bbk>
  </updated-art>
  <updated-person uuid="97a64a78-2ba5-4d6d-b0cb-1e0718794bf3" status="processed" alphabet="И" first_name="Петр 255 символов" last_name="Иванофф" auto_sklon="1" full_name="Петр 255 символов Иванофф" inverse_full_name="Иванофф Петр 255 символов" last_update="2017-07-14 19:17:50" published_photo="/static/author/123.jpg"/>
  <update-serie uuid="9b9bbdad-22f2-455d-bfe2-73d8f35d340b" name="Название серии" last_update="2017-07-14 19:17:50">
    <text_descr_source>
      <hidden>Подробное описание серии</hidden>
    </text_descr_source>
  </update-serie>
</partner_update_log>

Корневой элемент partner_update_log имеет атрибут @timestamp, содержащий текущее серверное время (с точностью до секунды), до которого (не включительно) вы сейчас получили обновления. Для получения непрерывного потока обновлений это значение следует сохранять и при следующем запросе передавать в параметре checkpoint.

В partner_update_log хранится список объектов, изменивших свое состояние. Возможные объекты и их содержимое:

  • updated-art – содержимое этого тега полностью совпадает с запросом на добавление/редактирование описания к книге (partner_object_update). Дополнительно он содержит следующие значения:
    • @status – текущий статус модерации. Основной атрибут, который необходимо отслеживать после отправки запроса на модерацию. Для успешного прохождения модерации и размещения в продажу книги необходимо, чтобы все связанные с ней персоны и серии также прошли модерацию. Возможные значения:
      • received – первоначальный статус;
      • processed – в процессе обработки;
      • approved – одобрен;
      • declined – отклонен (см. @message);
    • @message – если в процессе модерации книга была отклонена (status=»declined»), то в этом атрибуте выводится сообщение о возникшей ошибке или проблеме;
    • @publisher_code – внутренний издательский код книги. Длина до 100 символов.
    • @available – доступность книги для продажи на ресурсах/площадках ЛитРес. Значения:
      • -1 – карточка книги скрыта;
      • 0 – книга не доступна для продажи;
      • 1 – книга доступна и есть в продаже/бесплатной раздаче;
      • 2 – книга скоро поступит в продажу, дата неизвестна;
      • 6 – книга скоро поступит в продажу, дата известна;

Таким образом, как только @status изменит значение на «approved», а @available на «1», то это означает, что книга успешно размещена в продажу на площадках ЛитРеса. Посмотреть книгу на сайте ЛитРес можно по ссылке, сформированной с использованием UUID, например: http://www.litres.ru/search_by_id/?id=aa55bb28-fb43-102b-99a2-0288a49f2f10.

    • @release_file – уникальный целочисленный номер файла, который в текущий момент является актуальной версией книги («релизом» или кандидатом в релиз). Перечень всех файлов, которые отправлялись на модерацию и привязаны к текущей книге, приведены в тегах item-files/file (см. ниже);
    • item-relations/person/@relation=»agent» – у каждой книги всегда будет присутствовать одна служебная персона с типом «agent». Для партнера эта персона не существенна;
    • coverpage/image – путь к загруженной обложке книги на сайтах ЛитРес. Например, для формирования полного адреса можно подставить URL: https://www.litres.ru. Примечание: актуальные данные в этом узле появляются только после размещения книги в продажу (@available=»1″);
    • item-files/file – перечень всех версий файла книги, связанных с текущей книгой (актуально для FB2-книг и аудио книг). Атрибуты:
      • @id – уникальный целочисленный номер файла (в @release_file приведен номер одного из этих файлов, являющийся в текущий момент актуальным «релизом»);
      • @sent_by – идентификатор партнера, отправившего данный файл на сервер ЛитРес. В основном здесь будет содержаться ваш идентификатор партнера (partner), а все остальные значения означают, что файл был загружен сотрудниками или роботами ЛитРес;
      • @size – размер файла в байтах;
      • @filename – наименование файла;
      • @time – время в формате «2014-11-07T16:21:02+03:00», когда файл был загружен в базу ЛитРес;
    • @last_update – дата и время последнего изменения объекта в формате «ГГГГ-ММ-ДД ЧЧ:ММ:СС»;
  • updated-person – содержимое этого тега полностью совпадает с запросом на добавление/редактирование персоны (partner_object_update). Дополнительно он содержит следующие атрибуты:
    • @status – текущий статус модерации. Значения совпадают с аналогичным атрибутом в объектах updated-art:
      • received – первоначальный статус;
      • processed – в процессе обработки;
      • approved – одобрен;
      • declined – отклонен;
    • @published_photo – путь к фотографии персоны на сайтах ЛитРес. Например, для формирования полного адреса можно подставить URL: https://www.litres.ru;
    • @local_person_name – массив локализации, содержащий фамилию и имя, а также описание, на разных языках. Если существуют кроме ru. Если есть только для ru, то этого элемента нет;
    • @last_update – дата и время последнего изменения объекта в формате «ГГГГ-ММ-ДД ЧЧ:ММ:СС»;
  • update-serie – содержимое этого тега полностью совпадает с запросом на добавление/редактирование серии (partner_object_update), за исключением того, что подробное описание серии вынесено в тег update-serie/text_descr_source/hidden. Также данный тег содержит дополнительный атрибут @last_update – дата и время последнего изменения объекта в формате «ГГГГ-ММ-ДД ЧЧ:ММ:СС».

17 Изменение цены продаваемой книги

Если книга уже размещена в продажу на ресурсах/площадках ЛитРес, то партнер может изменять её цену без прохождения повторной модерации.

17.1 Запрос на изменение цены продаваемой книги

Используется следующий URL: https://sp.litres.ru/partner_art_price_change/.

Параметры запроса (обязательные параметры отмечены красной звездочкой):

  • partner* – идентификатор партнера;
  • sha* – хеш SHA-256, формируемый индивидуально для каждого из запросов:

    $sha=Digest::SHA::sha256_hex($timestamp.':'.$secret_key.':'.$partner)
  • timestamp* – московское время в формате «2014-11-07T16:21:02+03:00»;

  • uuid* – уникальный идентификатор книги, цену которой мы хотим изменить;
  • price* – новая цена книги (используйте корректную сетку цен).

Протестировать запрос изменения цены можно с помощью тестового файла SP_LitRes_partner_art_price_change.html.

17.2 Ответ сервера

Пример возвращаемого XML:

<update_object_result result="ok" timestamp="2015-05-27T16:32:36+03:00"/>

В ответе в update_object_result содержатся следующие атрибуты:

  • @result* – в случае успешного изменения цены этот атрибут имеет значение ok, иначе – error;
  • @timestamp* – дата и время обработки запроса;
  • @error_message – текстовое описание ошибки на английском языке (в случае, если result=»error»);
  • @error_code – код ошибки (в случае, если result=»error»). Перечень всех кодов с описанием см. в разделе «Коды ошибок».

18 Изменение правообладателя продаваемой книги

Описанный метод помогает сменить правообладателя для книги, не меняя при этом её статус «в продаже».

18.1 Запрос на изменение правообладателя

Используется следующий URL https://sp.litres.ru/partner_art_owner_change/.

Параметры запроса (обязательные параметры отмечены красной звездочкой):

  • partner* – идентификатор партнера;
  • sha* – хеш SHA-256, формируемый индивидуально для каждого запроса:

    $sha=Digest::SHA::sha256_hex($timestamp.':'.$secret_key.':'.$partner)
  • timestamp* – московское время в формате «2014-11-07T16:21:02+03:00»;

  • uuid* – уникальный идентификатор книги, правообладателя которой мы хотим изменить;

  • owner* – новый правообладатель книги.

18.2 Ответ сервера

Пример возвращаемого XML:

<update_object_result result="ok" timestamp="2015-05-27T16:32:36+03:00"/>

В ответе в update_object_result содержатся следующие атрибуты:

  • @result* – в случае успешного изменения правообладателя этот атрибут имеет значение ok, иначе – error;
  • @timestamp* – дата и время обработки запроса;
  • @error_message – текстовое описание ошибки на английском языке (в случае, если result=»error»);
  • @error_code – код ошибки (в случае, если result=»error»). Перечень всех кодов с описанием см. в разделе «Коды ошибок».

19 Удаление связи между роботом ЛитРес и книгой/персоной/серией

Описанный метод помогает удалить привязку робота ЛитРес к книге/персоне/серии. При этом у книги по прежнему останется статус «в продаже».

19.1 Запрос на удаление связи между роботом ЛитРес и продаваемой книгой

Используется следующий URL https://sp.litres.ru/partner_object_forget/.

Параметры запроса (обязательные параметры отмечены красной звездочкой):

  • partner* – идентификатор партнера;
  • sha* – хеш SHA-256, формируемый индивидуально для каждого из запросов:

    $sha=Digest::SHA::sha256_hex($timestamp.':'.$secret_key.':'.$partner)
    
    
  • timestamp* – московское время в формате «2014-11-07T16:21:02+03:00»;

  • uuid* – уникальный идентификатор объекта, который мы хотим отвязать от робота;
  • type – art / person / serie – тип объекта который мы хотим отвязать. По умолчанию – art.

19.2 Ответ сервера

Пример возвращаемого XML:

<update_object_result result="ok" timestamp="2015-05-27T16:32:36+03:00"/>

В ответе в update_object_result содержатся следующие атрибуты:

  • @result* – в случае успешного удаления робота, этот атрибут имеет значение ok, иначе – error;
  • @timestamp* – дата и время обработки запроса;
  • @error_message – текстовое описание ошибки на английском языке (в случае, если result=»error»);
  • @error_code – код ошибки (в случае, если result=»error»). Перечень всех кодов с описанием см. в разделе «Коды ошибок».

20 Снятие книги с продажи

Если необходимо снять книгу с продажи со всех площадок ЛитРес, выполните запрос на обновление книги (partner_object_update), указав в атрибуте индивидуального окончания прав (@valid_till) текущую дату в формате ГГГГ-ММ-ДД. Таким образом книга исчезнет из всех каталогов ЛитРес, но сохранится у пользователей, уже купивших данную книгу. В дальнейшем данную книгу можно будет вновь вернуть в продажу, указав корректный @valid_till и повторно пройдя модерацию.
Также имейте в виду, что книга автоматически снимается с продажи и отправляется на повторную модерацию каждый раз, когда меняется какая-либо связанная с ней информация: описание, файл, автор, серия и пр. Поэтому если вам необходимо изменить только лишь цену продаваемой книги, используйте запрос на обновление книги (partner_object_update).

21 Получение статистики

Партнер может просматривать и выгружать в XML статистику покупок, просмотров и онлайн-чтения на специальной странице правообладателя на сайте ЛитРес. Адрес этой страницы сообщается партнеру при заключении договора.
Помимо этого партнер может выгружать статистику через API: как в режиме реального времени (запрос на получение статистики в режиме реального времени), так и за закрытые отчетные периоды (запрос на получение статистики за закрытый отчетный период). Имейте в виду, что для «не закрытых» отчетных периодов показания статистики могут незначительно меняться.

21.1 Запрос на получение статистики в режиме реального времени

Используется следующий URL: https://sp.litres.ru/partner_stats/.

Параметры запроса (обязательные параметры отмечены красной звездочкой):

  • partner* – идентификатор партнера;
  • sha* – хеш SHA-256, формируемый индивидуально для каждого из запросов:

    $sha=Digest::SHA::sha256_hex($timestamp.':'.$secret_key.':'.$partner)
  • timestamp* – московское время в формате «2014-11-07T16:21:02+03:00»;

  • time_from – дата и время в формате «ГГГГ-ММ-ДД ЧЧ:ММ:CC», начиная с которого необходимо получить статистику. Передаваемое значение не может отставать от текущего серверного (московского) времени больше чем на 24 часа. Если в запросе передан данный параметр, то параметры from и to должны в запросе отсутствовать;
  • from – дата в формате «ГГГГ-ММ-ДД», начиная с которой необходимо получить статистику;
  • to – дата в формате «ГГГГ-ММ-ДД», до которой (включительно) необходимо получить статистику;
  • add_free – если этот опциональный параметр передан и равен 1, то выдается специальный отчет по розданным бесплатно книгам с площадок самого Литрес (веб-площадки, мобильные приложения, приложения для устройств и т.д.). Как бесплатно так и за деньги. При этом продажи с партнерских площадок не выдаются.
  • owner — выдать отчет только по одному правообладателю (может быть полезно, если робот обслуживает нескольких правообладателей), опциональный параметр.

Запрос позволяет выгружать статистику в трех режимах:

  1. с заданного времени (с точностью до секунды) до текущего момента. При этом заданное время не должно отличаться от текущего более чем на сутки. Используемый параметр: time_from;

    Примечание: в ответе сервер дополнительно возвращает точное серверное время, используя которое можно организовать непрерывную череду запросов для сбора статистики в режиме реального времени.

  2. с конкретной даты до текущего момента. Используемый параметр: from;

  3. с конкретной даты до конкретной даты. Используемые параметры: from и to.

Протестировать запрос можно с помощью тестового файла SP_LitRes_partner_stats.html.

21.2 Ответ сервера

Пример возвращаемого XML в случае ошибки:

<update_object_result result="error" timestamp="2015-06-19T18:56:19+03:00" error_message="SHA verification error - timestamp expired" error_code="102029"/>

В ответе в update_object_result содержатся следующие атрибуты:

  • @result – при ошибке имеет значение error;
  • @timestamp – дата и время обработки запроса;
  • @error_message – текстовое описание ошибки на английском языке;
  • @error_code – код ошибки. Перечень всех кодов с описанием см. в разделе «Коды ошибок».

Пример возвращаемого XML в случае успешной обработки запроса:

<partner_stats>
	<art authors="Павел Котиков" id="7222172" uuid="97a64a78-2ba5-4d6d-b0cb-1e0718794bf3" name="Наследие">
		<stat-channelgroup hits="0" hits_amount="0" sales="7" id="2" sales_amount="59.15" name="ЛитРес"/>
		<stat-channelgroup hits="0" hits_amount="0" sales="2" id="25" sales_amount="359.15" name="Bookmate"/>
	</art>	
	<art authors="Олег Максов" id="9363358" uuid="63c38eb5-c0f1-4cae-b170-0bfa812e5c5f" name="Избранный">
		<stat-channelgroup hits="1" hits_amount="0.03" sales="0" id="1" sales_amount="0" name="Прочее"/>
	</art>
	<period is_final="false" start="2015-06-18 19:44:52" end="2015-06-19 18:44:58"/>
</partner_stats>

В ответе в partner_stats содержится перечень всех проданных/прочитанных/бесплатно взятых книг (art), а также данные о периоде, за который выдана данная статистика (period).

Каждая книга art содержит следующие данные:

  • @authors – перечень авторов книги через запятую;
  • @id – внутренний идентификатор книги на сервере ЛитРес. Его можно использовать для формирования ссылки на книгу в магазине ЛитРес: http://litres.ru/pages/biblio_book/?art=9368246;
  • @uuid – уникальный идентификатор книги;
  • @name – название книги;
  • в узлах stat-channelgroup перечислены «каналы продаж», на которых книга была куплена, прочитана или получена бесплатно. Т. к. книги продаются не только на сайтах и приложениях ЛитРес, но и на партнерских ресурсах, то для комфортного анализа статистики каждый из них выделен в отдельный канал. Примеры каналов: ресурсы ЛитРес, Google, МВидео, Связной, Bookmate и т. п. Атрибуты каналов:
    • @id – уникальный идентификатора канала продаж;
    • @name – название канала продаж;
    • @sales – количество проданных (или выданных бесплатно) экземпляров книги;
    • @sales_amount – сумма в рублях, зачисленная на счет партнера за покупки книги через данный канал;
    • @hits – целое число. Количество авторских листов (с округлением в бо́льшую сторону), прочитанных в режиме онлайн-чтения. В подсчете авторских листов участвует только «платная» часть книги – чтение ознакомительного фрагмента здесь не отражено;
    • @hits_amount – сумма в рублях, зачисленная на счет партнера за онлайн-чтение книги через данный канал.

Атрибуты узла period:

  • @is_final – возможные значения:
    • true – статистика за выгруженный период актуальна, окончательна и изменяться не будет. Партнер может использовать представленные данные для проведения внутренних финансовых расчетов;
    • false – статистика за выгруженные даты относится к «не закрытому» отчетному периоду и может незначительно меняться. Рекомендуется использовать представленную информацию только для ознакомительных целей;
  • @start – если в запросе передан параметр time_from, то в @start содержится дата и время в формате «ГГГГ-ММ-ДД ЧЧ:ММ:CC», начиная с которого выведена информация по статистике. Если в запросе переданы параметры from и/или to, то в @start содержится только дата в формате «ГГГГ-ММ-ДД»;
  • @end – если в запросе передан параметр time_from, то в @end содержится дата и время в формате «ГГГГ-ММ-ДД ЧЧ:ММ:CC», до которого (не включительно) выведена информация по статистике. Это значение удобно использовать в последующем запросе к API (в параметре time_from) для непрерывного сбора статистики.Если в запросе переданы параметры from и/или to, то в @end содержится только дата в формате «ГГГГ-ММ-ДД».

21.3 Запрос на получение статистики за закрытый отчетный период

Отчетным периодом является месяц. Данный запрос позволяет партнеру получить окончательную статистику по любому из прошедших и «закрытых» месяцев.

Используется следующий URL: https://sp.litres.ru/partner_final_stats/.

Параметры запроса (обязательные параметры отмечены красной звездочкой):

  • partner* – идентификатор партнера;
  • sha* – хеш SHA-256, формируемый индивидуально для каждого из запросов:

    $sha=Digest::SHA::sha256_hex($timestamp.':'.$secret_key.':'.$partner)
  • timestamp* – московское время в формате «2014-11-07T16:21:02+03:00»;

  • y* – год в формате «ГГГГ»;
  • m* – месяц в формате «ММ»;
  • owner – выдать отчет только по одному правообладателю (может быть полезно, если робот обслуживает нескольких правообладателей), опциональный параметр.

Протестировать запрос можно с помощью тестового файла SP_LitRes_partner_final_stats.html.

21.4 Ответ сервера

Формат ответа полностью совпадает с ответом на запрос partner_stats.

22 Получение данных о статусе связи робота и книги/персоны/серии

Партнер может просматривать и выгружать в XML данные о статусе привязки робота к книге/персоне/серии на сайте ЛитРес. 

22.1 Запрос на получение данных о статусе связи робота и книги/персоны/серии

Используется следующий URL: https://sp.litres.ru/partner_events/.

Параметры запроса (обязательные параметры отмечены красной звездочкой):

  • partner* – идентификатор партнера;
  • sha* – хеш SHA-256, формируемый индивидуально для каждого из запросов:

    $sha=Digest::SHA::sha256_hex($timestamp.':'.$secret_key.':'.$partner)
  • timestamp* – московское время в формате «2014-11-07T16:21:02+03:00»;

  • time_from – дата и время в формате «ГГГГ-ММ-ДД ЧЧ:ММ:CC», начиная с которого необходимо получить данные о статусе привязки робота к объекту. Передаваемое значение не может отставать от текущего серверного (московского) времени больше чем на 24 часа. Если в запросе передан данный параметр, то параметры from и to должны в запросе отсутствовать;
  • from – дата в формате «ГГГГ-ММ-ДД», начиная с которой необходимо получить данные о статусе привязки робота к объекту;
  • to – дата в формате «ГГГГ-ММ-ДД», до которой (включительно) необходимо получить данные о статусе привязки робота к объекту;

Запрос позволяет выгружать данные в трех режимах:

  1. с заданного времени (с точностью до секунды) до текущего момента. При этом заданное время не должно отличаться от текущего более чем на сутки. Используемый параметр: time_from;

    Примечание: в ответе сервер дополнительно возвращает точное серверное время, используя которое можно организовать непрерывную череду запросов для сбора данных в режиме реального времени.

  2. с конкретной даты до текущего момента. Используемый параметр: from;

  3. с конкретной даты до конкретной даты. Используемые параметры: from и to.

22.2 Ответ сервера

Пример возвращаемого XML в случае ошибки:

<update_object_result result="error" timestamp="2020-03-10T12:45:21+03:00" error_message="SHA verification error - timestamp expired" error_code="102029"/>

В ответе в update_object_result содержатся следующие атрибуты:

  • @result* – при ошибке имеет значение error;
  • @timestamp* – дата и время обработки запроса;
  • @error_message – текстовое описание ошибки на английском языке;
  • @error_code – код ошибки. Перечень всех кодов с описанием см. в разделе «Коды ошибок».

Пример возвращаемого XML в случае успешной обработки запроса:

<partner_events timestamp="2020-03-10T12:45:21+03:00">
	<event type="link" object_type="person" object_id="3952472" object_uuid="78ecf724-fc53-11e3-871d-0025905a0812" event_date="2020-01-22T17:35:49+03:00"/>
	<event type="link" object_type="serie" object_id="627" object_uuid="619ca63a-5b5b-11e4-96e2-0025905a06ea" event_date="2020-01-22T17:42:36+03:00"/>
	<event type="unlink" object_type="art" object_id="25761301" object_uuid="1d3a0fb0-4c77-4952-a33d-4c9fd433e68b" event_date="2020-03-10T16:53:13+03:00"/>
	<event type="link" object_type="art" object_id="25761282" object_uuid="5c4775b2-57c8-11ea-8be9-3a5c218e6655" event_date="2020-03-10T16:55:03+03:00"/>
</partner_events>

Корневой элемент partner_events имеет атрибут @timestamp, содержащий текущее время сервера.
В ответе в partner_events содержится перечень событий с данными о статусе связи робота и книги/персоны/серии. Каждое событие представлено элементом event со следующим содержимым:

  • @type* – тип события, в результате которого произошло изменение статуса привязки робота к объекту. Возможные значения:
    • link – робот был привязан к объекту. Такое событие возникает на этапе создания или редактирования объекта с использованием запроса partner_object_update или вручную;
    • unlink – робот отвязан от объекта. Причем не важно убрали связь вручную либо с помощью запроса partner_object_forget;
  • @object_type* – тип объекта, для которого произошла смена статуса привязки к роботу. Может принимать следующие значения:
    • art – книга;
    • person – персона;
    • serie – серия;
  • @object_id* – внутренний идентификатор объекта на сервере ЛитРес. В зависимости от типа объекта, указанного в @object_type, это может быть идентификатор книги, персоны или серии соответственно;
  • @object_uuid* – уникальный идентификатор объекта на сервере ЛитРес. В зависимости от типа объекта, указанного в @object_type, это может быть идентификатор книги, персоны или серии соответственно;
  • @event_date* – дата и время события, в результате которого произошло изменение статуса привязки робота к объекту. Возвращается в формате «2014-11-07T16:21:02+03:00».

23 Коды ошибок

  • 102001 – попытка обновить «чужую» персону, которая не была создана партнёром;
  • 102002 – обновление персоны: не хватает данных о склонениях имени;
  • 102003 – обновление персоны: не хватает данных о полном имени персоны;
  • 102004 – обновление персоны: нет данных о URL, с которого необходимо загружать фотографию;
  • 102005 – обновление персоны, не удалось загрузить фотографию;
  • 102006 – обновление персоны: не хватает данных об имени, либо отчестве, либо фамилии;
  • 102007 – ошибка создания новой персоны;
  • 102008 – ошибка обновления персоны;
  • 102009 – ошибка обновления описания персоны;
  • 102010 – обновление серии: не передано название;
  • 102011 – попытка обновить не принадлежащую партнёру серию;
  • 102012 – попытка обновить не принадлежащее партнёру произведение;
  • 102013 – обновление произведения: передан невалидный UUID;
  • 102014 – обновление произведения: попытка связать произведение с другим, которое не принадлежит партнёру;
  • 102015 – обновление произведения: попытка добавить более одного агента;<todo>Удалить эту ошибку по факту изменения логики. Добавить новые ошибки, связанные с отсутствием или некорректностью параметра @owner;
  • 102016 – обновление произведения: попытка связать произведение с персоной, которая не создана партнёром;
  • 102017 – обновление произведения: попытка включить произведение в серию, которая не принадлежит партнёру;
  • 102018 – ошибка при обновлении произведения;
  • 102019 – ошибка при создании произведения;
  • 102020 – обновление произведения: ошибка при задании жанров;
  • 102021 – обновление произведения: попытка присвоить несуществующий тег;
  • 102022 – попытка загрузить PDF для книги, которая не принадлежит партнёру;
  • 102023 – загрузка PDF: файл не найден;
  • 102024 – загрузка PDF: неверная сумма SHA-256 файла;
  • 102025 – загрузка PDF: ошибка добавления файла к произведению;
  • 102026 – передан невалидный timestamp;
  • 102027 – проверка валидности запроса: не удалось получить сведения о самом партнёре;
  • 102028 – партнёр с переданным идентификатором (partner) не существует;
  • 102029 – неверная подпись;
  • 102030 – ошибка повторного использования timestamp. Для каждого из запросов используйте новый timestamp;
  • 102031 – не передан запрос;
  • 102032 – невалидный XML в запросе, либо несоответствующий схеме. Подробне см. в @error_message;
  • 102033 – произведение, для которого обновляется цена, не принадлежит партнёру;
  • 102034 – попытка загрузить FB2 для произведения, которое не принадлежит партнёру;
  • 102035 – загрузка FB2: не найден файл. Убедитесь, что FB2-файл обернут в ZIP-архив и передается методом POST через переменную file c типом содержимого «multipart/form-data»;
  • 102036 – ошибка загрузки FB2. См. подробное описание ошибки в @error_message;
  • 102037 – в запросе на получение обновлённых произведений неверно передан checkpoint;
  • 102038 – неверные данные в запросе на получение обновлённых произведений;
  • 102039 – при загрузке обложки передано не JPEG изображение;
  • 102040 – загрузка обложки: в параметре file передан НЕ файл;
  • 102041 – попытка загрузить обложку для произведения, которое не принадлежит партнёру;
  • 102042 – ошибка загрузки обложки;
  • 102043 – в запросе статистики (partner_stats) не переданы параметры «time_from», «from» или «to». Допустимы следующие комбинации этих параметров:
    • только «time_from»;
    • только «from»;
    • только «from» и «to»;
  • 102044 – некорректный формат параметров «from» и/или «to» в запросе статистики (partner_stats). Укажите даты в формате «ГГГГ-ММ-ДД»;
  • 102045 – в запросе статистики (partner_stats) одновременно переданы параметры «time_from», «from» и «to», хотя в запросе допустимы только следующие комбинации этих параметров:
    • только «time_from»;
    • только «from»;
    • только «from» и «to»;
  • 102046 – некорректный формат параметра «time_from» в запросе статистики (partner_stats). Укажите время в формате «ГГГГ-ММ-ДД ЧЧ:ММ:CC»;
  • 102047 – некорректное значение параметра «time_from» в запросе статистики (partner_stats). Допустимое значение должно быть в промежутке последних суток (24 часа от текущего московского времени);
  • 102048 – некорректный формат параметров «y» и/или «m» в запросе статистики (partner_final_stats). Год должен быть в формате «ГГГГ», а месяц (m) – «ММ»;
  • 102049 – в запросе статистики (partner_final_stats) указан не закрытый отчетный период (даты закрытия периодов уточняйте у менеджеров ЛитРес). Выберите другой месяц или воспользуйтесь запросом статистики по не закрытому периоду (partner_stats);
  • 102050 – в запросе редактирования карточки книги (partner_object_update) указан некорректный идентификатор правообладателя (art_to_update/@owner), определяющий набор ресурсов (сайтов, мобильных приложений и пр.), на которых будет размещаться книга;
  • 102053 – в запросе изменения описания книги (partner_object_update) в параметре request отсутствует или указан неверно уникальный идентификатор правообладателя партнера (update_object/art_to_update/@owner);
  • 102054 – ошибка eval при смене правообладателя;
  • 102055 – правообладатель недоступен данному роботу;
  • 102056 – произведение, для которого меняется правообладатель, не принадлежит партнёру;
  • 102057 – агент, привязанный к произведению, не доступен данному роботу;
  • 102058 – Unknown type ‘$ObjectType’ – неизвестный тип объекта;

  • 102059 – Object with uuid ‘$UUID’ and type ‘$ObjectType’ does not exist or was not created by you – объект с таким uuid и типом не существует или был создан не Вами;

  • 102060 – General Samizdat API error – ошибка API Самиздат;

  • 102062 – присланный на загрузку файл имеет нулевой размер
  • 102101 – ошибка eval при обновлении персоны. Обратитесь к разработчику;
  • 102102 – ошибка eval при обновлении серии. Обратитесь к разработчику;
  • 102103 – ошибка eval при обновлении произведения. Обратитесь к разработчику;
  • 102104 – ошибка eval при загрузке файла PDF. Обратитесь к разработчику;
  • 102105 – ошибка eval при проверке валидности запроса. Обратитесь к разработчику;
  • 102106 – ошибка eval при изменении цены произведения. Обратитесь к разработчику;
  • 102107 – ошибка eval при получении списка тэгов. Обратитесь к разработчику;
  • 102108 – ошибка eval при загрузке FB2. Обратитесь к разработчику;
  • 102109 – ошибка eval при запросе обновлённых произведений. Обратитесь к разработчику;
  • 102110 – ошибка eval при загрузке обложки. Обратитесь к разработчику;
  • 102111 – ошибка приведения заголовка в соответствие с базой;
  • 102115 – в запросе создания/редактирования описания к книге указано не уникальное название произведения (@name). Измените название или проверьте правильность UUID;
  • 102116 – при запросе создания/редактирования персоны превышен лимит на количество не уникальных полных имен персоны (@full_name). Система позволяет создать только 5 одинаковых полных имен. Измените полное имя или проверьте правильность UUID;
  • 102117 – в запросе создания/редактирования серии указано не уникальное название серии (@name). Измените название или проверьте правильность UUID;
  • 102118 – ошибка eval при загрузке статистики (partner_stats). Обратитесь к разработчику;
  • 102119 – ошибка eval при загрузке статистики (partner_final_stats). Обратитесь к разработчику;
  • 102123 – в запросе данных о статусе привязки робота к объекту (partner_events) не переданы параметры «time_from», «from» или «to». Допустимы следующие комбинации этих параметров:

    • только «time_from»;

    • только «from» и «to»;

    • только «from»;

  • 102124 – некорректный формат параметров «from» и/или «to» в запросе данных о статусе привязки робота к объекту (partner_events). Укажите даты в формате «ГГГГ-ММ-ДД»;

  • 102125 – в запросе данных о статусе привязки робота к объекту (partner_events) одновременно переданы параметры «time_from», «from» и «to», хотя в запросе допустимы только следующие комбинации этих параметров:

    • только «time_from»;

    • только «from»;

    • только «from» и «to»;

  • 102126 – некорректный формат параметра «time_from» в запросе данных о статусе привязки робота к объекту (partner_events). Укажите время в формате «ГГГГ-ММ-ДД ЧЧ:ММ:CC»;

  • 102127 – некорректное значение параметра «time_from» в запросе данных о статусе привязки робота к объекту (partner_events). Допустимое значение должно быть в промежутке последних суток (24 часа от текущего московского времени);

  • 102128 – неизвестная ошибка про выполнении запроса данных о статусе привязки робота к объекту (partner_events). Обратитесь к разработчику;
  • 102130 – ошибка при загрузке FB3: книга не найдена или не принадлежит партнёру;
  • 102131 – не найден файл FB3;
  • 102132 – ошибка копирования FB3 во временное хранилище;
  • 102133 – внутренняя ошибка конфигурации SVN;
  • 102134 – ошибка постановки FB3 в релиз;
  • 102135 – ошибка eval при загрузке FB3;
  • 102136 – «черновиком» может быть только книга в формате fb2;
  • 102137 – параметр update_period разрешен только для «черновиков»;
  • 102200 – description не может содержать ссылки;
  • 102201 – annotation не может содержать ссылки;
  • 102202 – загрузка FB2, FB3, Cover: не совпадает SHA256 файла.
  • 102210 – попытка загрузить аудио архив для книги, которая не принадлежит партнёру;
  • 102211 – загрузка аудио файлов: файл не найден;
  • 102212 – загрузка аудио файлов: неверная сумма SHA-256 файла;
  • 102213 – загрузка аудио файлов: неправильное расширение файла, принимается mp3 файл или zip архив с mp3 файлами;
  • 102215 – указанная книга не является аудио книгой, вы не можете добавить к ней mp3-файл.
  • 102216 — вы больше не можете редактировать описание этой персоны, свяжитесь с АПО чтобы внести изменения. Вы по прежнему можете привязывать книги к этой персоне.

На чтение 11 мин Просмотров 2.1к. Обновлено 26.03.2021

Что такое контрольная сумма

Вы собираетесь нажать кнопку загрузки и замечаете рядом с ней странный код. Кажется, не имеет никакого отношения к тому, насколько велик файл или на что вы должны обратить внимание. Так что вперед, получите файл и беда! Это не похоже на то, что вы ожидали.

Если бы только был быстрый способ узнать, совпадает ли только что загруженный вами элемент с файлом, который был на веб-сайте. Что ж, есть. Добро пожаловать в мир контрольных сумм!

Содержание

  1. Что за контрольная сумма (Checksum)?
  2. Технология
  3. Так что же делать с контрольной суммой (Checksum)?
  4. Выполните свою контрольную сумму
  5. Windows
  6. macOS
  7. Linux
  8. Заключение

Что за контрольная сумма (Checksum)?

Rонтрольная сумма (Checksum) — это число в форме двоичного или шестнадцатеричного значения, полученное из источника данных. Важные моменты, которые следует знать: контрольная сумма обычно намного меньше, чем источник данных, а также почти полностью уникальна. Это означает, что вероятность того, что некоторые другие данные дадут точно такую ​​же контрольную сумму, крайне маловероятна.

Давайте рассмотрим несколько примеров, первый из которых — это простой текстовый файл (ниже), содержащий важную информацию! Все файлы содержат данные, которые охватывают не только, скажем, текст, который мы видим — будут выделены биты, чтобы сообщить нам, какой это тип файла, как данные расположены и так далее…

Все это обрабатывается в процессе создания контрольной суммы

Все это обрабатывается в процессе создания контрольной суммы, и мы покажем вам, как это работает и как вы можете сделать это самостоятельно, позже в этой статье.

Но пока давайте посмотрим на значение, которое мы получаем:

798B38084999FA50E7D1861E07E45F4E3AA39668DC6A12A84A058CAAA32DE0EB

Сам по себе этот код нам ничего не говорит. Мы не можем полностью «взломать» его, чтобы выяснить, из какого набора нулей и единиц состоит текстовый файл. Однако предполагается, что он специфичен для этого конкретного файла, поэтому теперь давайте изменим исходный текстовый файл, переставив некоторые слова.

Изображение выше ясно показывает

Изображение выше ясно показывает, что это все тот же текст и, следовательно, те же данные технически, но последовательность битов теперь другая. Контрольная сумма на этот раз такова:

22698AA81AFF43B48ADA1BCC7E26D641F0077C0AA24B5B19C8C801147A41B30D

Обратите внимание, что это одинаковая длина — это ключевой аспект процесса получения кода, но это совершенно другая контрольная сумма. Те же данные, другой порядок, совершенно новая контрольная сумма.

Но, возможно, этого следовало ожидать; в конце концов, изменения в файле были не совсем тривиальными. Итак, давайте посмотрим, что произойдет, когда мы изменим только одну букву во всем: посмотрим, сможете ли вы определить, какую из них!

Наблюдайте за барабанной дробью на заднем плане

Наблюдайте за барабанной дробью на заднем плане, пока мы смотрим на контрольную сумму этого почти не измененного файла.

790DD6BF0733981E4EBF9BA116970D943D91C2CDD3531CF877E30F3E92F29453

Это изменение всего одной буквы снова дало нам еще один уникальный код. Когда дело доходит до контрольных сумм, в этом вся суть системы: любые изменения в исходном источнике данных, какими бы маленькими они ни были, должны приводить к полностью новой контрольной сумме, что позволяет очень легко увидеть, было ли что-то изменено.

Разобравшись с этим, давайте посмотрим, как все это работает!

Технология

В основе контрольной суммы лежит программный алгоритм, который используется для создания кодов, которые мы видели. В случае наших примеров мы использовали очень распространенный алгоритм, известный как SHA-256 ( алгоритм безопасного хеширования — 256 бит ). Этот алгоритм представляет собой тип криптографической хэш — функции (CHF), с исходными данными, меченных в качестве сообщения, а выход которого называют значение хеш — функции или просто хэш (контрольная сумма, в данном случае).

SHA-256, разработанный АНБ и выпущенный почти 20 лет назад, относится к классу CHF, широко используемых во всем мире. Их популярность сводится к тому, что они работают быстро и устойчивы к попыткам «взломать» код, хотя в наши дни доступны гораздо лучшие варианты.

У каждого алгоритма свой способ работы

У каждого алгоритма свой способ работы, но мы сосредоточимся только на том, что делает SHA-256. Процесс всегда дает хэш фиксированной длины (в данном случае 256 бит), независимо от размера сообщения, хотя технически это фактически 8 значений, каждое размером 32 бита.

Таким образом, контрольная сумма для нашего файла test1 на самом деле 798B3808 4999FA50 E7D1861E 07E45F4E 3AA39668 DC6A12A8 4A058CAA A32DE0EB. Это было записано в шестнадцатеричном формате — записать его как строку из 256 единиц и нулей было бы очень утомительно!

Первым шагом в последовательности алгоритма является обработка сообщения, так что это набор блоков, каждый размером 512 бит. Для файлов, которые не являются целым числом, кратные 512, или если файл меньше этого размера, трюк называется обивка используется. Здесь после завершения битов сообщения добавляется целый стек нулей, чтобы сделать его раунд 512.

Например, предположим, что мы пытаемся найти

Например, предположим, что мы пытаемся найти контрольную сумму файла, общий размер которого составляет 10145 бит. Это будет разделено на 19 целых блоков, оставив 417 бит для заполнения. Чтобы указать, где заканчиваются данные и начинается заполнение, к концу строки битов, составляющей источник, добавляется 1. Итак, здесь заполнение добавит 352 нуля.

Погодите, а почему это не 416? Самая последняя часть последнего блока — это особое 64-битное число: длина исходного файла. Это означает, что в нашем примере 20-й блок должен заканчиваться двоичным значением 10145, в результате чего сообщение требует для заполнения только 402 бита пустого пространства.

Как только это будет сделано, алгоритм берет самый первый 512-битный блок и разбивает его на 16 частей, каждая из которых имеет длину 32 бита; каждое из этих значений будет использоваться в процессе вычисления хэша.

До этого момента это самая простая часть: остальная часть процесса включает в себя много математики.

Производители микросхем, такие как Intel,

Производители микросхем, такие как Intel, предлагают архитектурные решения для устройств FPGA для расчета хэш-значений SHA-256.

Все это выходит далеко за рамки этой статьи, но если вам интересно вникнуть в это более подробно, вы можете прочитать об этом здесь. Но чтобы дать вам краткий обзор, сначала нужно создать начальный хеш с использованием первых 8 простых чисел. Они проходят через уравнение, чтобы получить значение длиной 256 бит, которое затем изменяется снова и снова, поскольку остальная часть алгоритма проходит через все части в каждом блоке из обработанных исходных данных.

Звучит ужасно сложно, да? Однако для современного процессора это совсем несложно.

Для генерации хэша требуется не более дюжины или около того циклов процессора для каждого байта исходных данных.

Так что же делать с контрольной суммой (Checksum)?

Контрольная сумма позволяет легко проверить целостность данных, составляющих файл.

Представьте себе такой сценарий: вам нужно загрузить важный файл, который имеет решающее значение для работы компьютера. Действительно критично, настолько, что вы не хотите, чтобы в нем были какие-либо ошибки или сбои. У вас также медленное и нестабильное интернет-соединение, и вы беспокоитесь, что это может повлиять на скачивание файла.

Хост файла знает все это, поэтому он запускает алгоритм контрольной суммы для файла и помещает ответ на веб-страницу загрузки. Получив его, вы можете запустить тот же процесс и сравнить значения — если они совпадают, вы будете знать, что с файлом, который вы скачали, все в порядке.

И это основное использование контрольной суммы

И это основное использование контрольной суммы: проверка целостности данных, составляющих файл. Это можно сделать вручную, как мы вскоре увидим, или это может быть часть автоматизированной операции. Valve использует контрольные суммы на платформе Steam как часть процесса проверки файлов.

Выполните свою контрольную сумму

Все основные операционные системы также имеют встроенный инструмент контрольной суммы.

Windows

Чтобы запустить контрольную сумму в Windows, проще всего использовать PowerShell: щелкните правой кнопкой мыши кнопку меню «Пуск» или нажмите Win + X. Если вы используете более старую версию Windows, вы можете скачать PowerShell отсюда.

Введите команду get-filehash, а затем укажите местоположение файла. Либо введите команду, а затем перетащите файл в окно PowerShell. Вот как был создан наш первый тестовый файл.

По умолчанию PowerShell использует

По умолчанию PowerShell использует SHA-256 для получения контрольной суммы, но вы можете использовать другие, например SHA-512 или MD5. Все они создадут другой хэш, но он все равно будет уникальным для этого файла. Чтобы использовать другую функцию, добавьте команду -algorithm, а затем ее код.

Для контрольных сумм использование другой хеш-функции не приносит каких-либо значительных преимуществ, хотя было показано, что некоторые из более старых (например, MD5, SHA-1) создают одинаковый хеш для разных файлов — проблема, известная как коллизия.. Новые алгоритмы более устойчивы к конфликтам, поэтому PowerShell по умолчанию использует SHA-256.

Основная причина необходимости переключения на другую функцию

Основная причина необходимости переключения на другую функцию заключается в том, что хост файла решил использовать что-то другое, кроме SHA-256, поэтому вам нужно переключиться на это, чтобы сравнить файлы.

Сравнивать две длинные строки цифр и букв может быть немного сложно, но с небольшим программированием вы можете заставить PowerShell вычислять контрольные суммы за вас. Давайте возьмем приведенный выше код MD5 в качестве примера и представим, что хеш исходного файла на самом деле заканчивается цифрой 8.

На изображении ниже показаны строки кода, которые необходимо ввести, используя Shift + Enter после каждой.

Видите, как написано

Видите, как написано «Ложь»? Это говорит вам, что файл не тот. Если вы уверены, что у вас есть правильный хеш для нужного файла, то все подозрения ложатся на данные.

Обратите внимание, что контрольная сумма не может сказать вам, как файлы различны — это очень двоичный тест, если вы простите за каламбур. Но это полезный инструмент, и в нем есть некоторые очень специфические функции контрольной суммы (например, контрольная цифра и контрольный бит ), которые используются все время для поиска ошибок в данных.

Microsoft сделала PowerShell доступным для macOS 10.13 или новее, а также для Linux, но если мысль об использовании чего-то, созданного с помощью Windows, вызывает у вас неприятные ощущения, знайте, что вы можете сделать то же самое в любой ОС.

macOS

Пользователям Mac необходимо запустить приложение «Терминал», которое находится в папке «Служебные программы» приложения. Введите команду shasum -a 256, за которой следует адрес файла, который вы хотите проверить (или просто перетащите в окно терминала).

Инструкция shasum эквивалентна Get-FileHash

Инструкция shasum эквивалентна Get-FileHash в PowerShell, а часть «-a 256» указывает, какой алгоритм использовать: 1 для SHA-1, 256 для SHA-256 и 512 для SHA-512.

Обратите внимание, как мы получили ту же контрольную сумму для тестового файла, что и при использовании PowerShell в Windows? В этом его реальная сила: независимо от того, какой компьютер или файловую систему вы используете, при одинаковом алгоритме вы всегда будете получать хеш-значения, которые можно напрямую сравнивать.

Linux

Если вам нравятся прелести Linux, вам будет приятно узнать, что это тот же процесс, что и выше — запустите Терминал и введите sha1sum, sha256sum или sha512sum, а затем адрес файла, чтобы сгенерировать требуемый хэш.

И снова вы можете видеть, что у нас такая же контрольная сумма

И снова вы можете видеть, что у нас такая же контрольная сумма для нашего текстового файла. Все прогоны производят одну и ту же математику для создания хэша, так что ничто из этого не должно было стать сюрпризом, но приятно знать, что контрольные суммы могут быть выполнены на любом вычислительном устройстве.

Заключение

Хотя подобные Steam обрабатывают этот процесс автоматически, мы полагаемся на файловые хосты, обеспечивающие точные контрольные суммы для данных, которые они предоставляют. В случае загрузок TechSpot, например, мы явно не предоставляем контрольную сумму, но инструменты, которые мы используем для подтверждения того, что загрузки являются чистыми, такие как VirusTotal, используют контрольную сумму для проверки целостности файлов и агрегирования данных, когда несколько сторон сканируют файлы. тот же файл с течением времени.

Некоторые веб-сайты предоставляют контрольные суммы для каждого файла, тогда как другие делают это только для важных или очень больших элементов (например, Microsoft в своих разделах безопасной загрузки), но это становится все более редким явлением. Для этого есть различные возможные причины, например, люди, просто не подозревающие о них.

Но если хосты предлагают это, то, по крайней мере, теперь вы знаете, как использовать хеш — любая дополнительная вещь, которая дает вам немного больше уверенности, всегда хорошо.

В этом разделе мы собрали наиболее часто возникающие вопросы от пользователей.

Если у вас возникли какие-то проблемы при работе с сервисом, пожалуйста, ознакомьтесь с содержанием этого раздела: возможно, ваша проблема уже описана.

Статус «Ошибка при загрузке» появляется, если файл оформлен не в соответствии с нашими рекомендациями. Пожалуйста, внимательно проверьте, правильно ли оформлен файл, который вы загружаете.

Читайте, как правильно оформить текст книги в Word в блоге Издательских сервисов Литрес

Частые причины, которые приводят к ошибке при загрузке:

  • В файле остались разрывы страниц, колонтитулы, содержание книги, сделанное с помощью встроенной функции в MS Word, или нумерация страниц. Удалите из файла все эти элементы и загрузите файл еще раз.
  • Стиль «Заголовок N» присвоен пустой строке или целому абзацу. Проверить наличие таких заголовков можно, если перейти в вид документа «Структура» (Главное меню — Вид — Структура). Заголовки будут отмечены знаком «+» слева от текста. Убедитесь, что такими значками отмечены только названия глав или отдельных произведений в книге. Если стиль заголовка присвоен пустой строке, удалите эту строку, если абзацу — присвойте тексту стиль «Обычный текст».

Если все правила подготовки файла соблюдены, но ошибка все равно появляется

В этом случае попробуйте сбросить форматирование документа:

  • Сделайте копию исходного файла — на всякий случай.
  • Выделите весь текст (ctrl+a или с помощью функции Меню — Правка — Выделить все), далее выберите в стилях (на «Главной» вкладке MS Word) пункт «Очистить формат».

После этого из файла пропадет все форматирование. Это означает, что заголовки глав и т.п. необходимо разметить заново. Однако после этого файл с большей степенью вероятности удастся загрузить в нашу систему.

Если же и это не помогло, пора переходить к радикальным мерам:

  1. Откройте блокнот.
  2. Создайте новый пустой файл DOCX и тоже откройте его.
  3. В своем исходном файле выделите весь текст (ctrl+a), далее скопируйте его в буфер обмена (ctrl+c).
  4. Затем откройте пустой файл блокнота и вставьте туда скопированный текст (ctrl+v).
  5. Оставаясь в блокноте, выделите в нем весь текст (ctrl+a) и скопируйте его в буфер обмена (ctrl+c).
  6. Перейдите в пустой файл DOCX, который вы недавно создали, и вставьте в него скопированный текст (ctrl+v).
  7. Следуя рекомендациям по разметке и форматированию текста, подготовьте заново файл в формате docx и загрузите его в нашу систему.

Если сброс форматирования не помог, отправьте файл с текстом книги на support@selfpub.ru с темой письма «Ошибка при загрузке».

  • В разделе «Мои книги» найдите нужное произведение в списке книг и нажмите «Редактировать».

  • В мастере публикации нажмите кнопку «Выбрать другой файл». В открывшемся окне выберите обновленный файл со своего компьютера.

  • Дождитесь, пока новый файл сконвертируется.

Если при загрузке книги вы увидели предупреждение «Данный тип файла не поддерживается», значит, вы пытаетесь загрузить файл, который не соответствует нашим требованиям. Мы принимаем файлы в форматах DOCX и FB2.

Чаще всего проблема возникает с форматом DOC, которые легко перепутать с DOCX.

Чтобы пересохранить файл формата DOC в формат DOCX, необходимо в текстовом редакторе выбрать Файл — Сохранить как… и в раскрывающемся списке «Формат файла» выбрать «Документ Word (.docx)».

После пересохранения откройте новую версию файла и проверьте, сохранилось ли форматирование заголовков.

Чтобы удалить книгу из нашего каталога, нажмите три точки в правом верхнем углу карточки книги. Появится всплывающее меню. Нажмите «Удалить».

При этом вы увидите предупреждение, уверены ли вы в том, что хотите удалить книгу. С чем это связано?

Согласно правилам Литрес, создание дублей (нескольких карточек для одной и той же книги) — недопустимо. В этом случае при отправке на модерацию новой карточки книги система выдаст ошибку и ваша книга не будет опубликована. Возможно, вашу проблему можно решить без удаления карточки книги.

Когда не надо удалять карточку книги?

  • Если произошла «Ошибка при загрузке». В этом случае воспользуйтесь нашими рекомендациями по устранению ошибок и замене файла в той же карточке книги.
  • Если вы хотите заменить файл с текстом книги или внести изменения в сведения о книге. В этом случае вам нужно снять книгу с публикации, зайти в Мастер публикации и внести изменения там, а не создавать новую карточку.

В каких случаях можно удалить книгу навсегда?

Вы можете удалить книгу, если уверены, что больше не будете публиковать ее через Литрес: Самиздат.

Напишите письмо в техническую поддержку support@selfpub.ru и укажите:

  • ваш адрес электронной почты;
  • причину удаления.

Обратите внимание, что после удаления учетной записи вы не сможете восстановить доступ или вновь зарегистрироваться на Литрес: Самиздат под той же почтой.

Со сбоями программного обеспечения и оборудования сталкиваются все пользователи, рано или поздно владельцам компьютеров встречается и ошибка «Cmos checksum error defaults loaded». Она возникает при старте системы, останавливая процесс, продолжить запуск вы можете путём нажатия клавиши F1 или F2, но при следующей загрузке ситуация повторится.

Ошибка cmos checksum error defaults loaded

Ошибка не является критической, но если нет желания регулярно приветствовать её, включая компьютер, то следует избавиться от этого «неудобства», тем более что сделать это совсем несложно.

«Cmos checksum error defaults loaded» – что это значит

Сбой при запуске предстаёт в разных личинах, но суть её остаётся та же. Текст уведомления «Cmos checksum error defaults loaded» переводится с английского как «Ошибка контрольной суммы CMOS, загружены параметры по умолчанию», при этом содержание сообщения может и отличаться.

Надпись cmos checksum error defaults loaded

Уведомление об ошибке Cmos checksum error defaults loaded

Например, в некоторых случаях на экране также пишет «Cmos checksum Failure» или «Cmos checksum Bad» и тому подобное, большого значения не имеет, в какой конкретно вариации предстал перед вами текст, связано это с производителем материнки.

Рассматривая, что представляет собой данная ошибка, сначала разберём, чем же собственно является CMOS. Аббревиатуру расшифровывают как «Complementary Metal-Oxid-Semiconductor», что значит «Комплементарный метало-оксидный полупроводник».

Помимо программного обеспечения, записанного на жёстком диске компьютера, софт, который хранится непосредственно на «железе» обеспечивает выполнение настройки аппаратных компонентов, организуя их работу, и позволяет производить другие изменения ещё до запуска операционки. Конкретно микросхема CMOS хранит определённые параметры BIOS, которые в том числе отвечают за пуск и функционирование ОС. Кроме того, на ней же хранятся и некоторые параметры компьютера. Аппаратно прошитый софт отличается высоким уровнем надёжности, но и здесь, хоть и редко, но всё же возможны неполадки.

Стабильное функционирование микросхемы поддерживает небольшая батарейка, находящаяся рядом с ней на материнской плате, в основном, это элемент CR2032. Его функция заключается в поставке микросхеме динамической памяти питания постоянным током низкого напряжения, что обеспечивает корректное выполнение задач микросхемой КМОП. Срок жизни этой батарейки в среднем составляет 5-7 лет, то есть спустя несколько лет эксплуатации элемент требует замены.

Каждый запуск компьютера сопровождается процедурой сравнения показателя текущей суммы данных в CMOS с контрольным показателем системы, эти значения должны совпадать, чтобы ОС корректно загрузилась. Возникающая ошибка означает, что они не сходятся, в результате чего мы получаем соответствующее сообщение вместо обычной загрузки Windows, намекающее на имеющуюся неполадку, которую нужно устранить. Проблема также «приправлена» сбросом актуального времени на дефолтовое (когда микросхему поставили на материнку). В этом чаще всего повинен литиевый элемент, отслуживший свой срок. В некоторых случаях дисфункция спровоцирована воздействием вирусного ПО.

Поведение компьютера может отличаться при появлении ошибки. Иногда пользователь будет проинформирован сообщением, после чего запуск ОС продолжится, что обусловлено использованием данных из CMOS. В других случаях выводится сообщение об ошибке, но для старта операционной системы будут применены заводские настройки, имеющиеся в BIOS (они сбросятся в память CMOS).

Причины ошибки

Как мы выяснили, ошибка «Cmos checksum error defaults loaded», возникающая при загрузке операционной системы связана с микросхемой на материнской плате, хранящей данные о запуске ОС, и сообщение будет возникать всякий раз при старте ПК, поскольку параметры каждой загрузки не совпадают с сохранёнными в CMOS. Так, причиной тому могут быть следующие факторы:

  • Выработка ресурса батарейки, питающей микросхему КМОП.

    Строение материнской платы

    Батарейка, которую нужно заменить

  • Обновление БИОС пользователем или вредоносным софтом.
  • Некорректное последнее выключение компьютера (например, прекращение подачи электропитания).

Как исправить «Cmos checksum error defaults loaded»

Не стоит преждевременно разводить панику, поскольку здесь можно обойтись малой кровью и ваш бюджет не пострадает от затрат на замену «железа», а максимум, на что придётся потратиться, так это на новую батарейку. Мы рассмотрим, как исправить проблему, но если вам требуется просто запустить систему, для этого достаточно нажатия клавиши F1 или F2 на клавиатуре. Случайный сбой также самоустраняется после перезагрузки устройства.

И так, что делать для исправления ошибки «Cmos checksum error defaults loaded»:

  • Идём в BIOS и выполняем настройки по умолчанию – выбираем Load optimized defaults, сохраняем изменения, выбрав Save & Exit, перезагружаемся.

    Командная строка BIOS

    Командная строка BIOS настроек

  • Если ошибка «Cmos checksum error defaults loaded» появляется при следующих загрузках, чтобы её устранить, следует заменить элемент CR2032, поскольку причиной сбоя является исчерпание ресурса батарейки. Для выполнения замены выключаем устройство и снимаем боковую крышку системного блока. Находим на материнке и аккуратно, не затрагивая другие детали, извлекаем батарейку, затем приобретаем в магазине электроники такую же и устанавливаем на место извлечённого элемента. Теперь идём в БИОС, где выполняем необходимые настройки, в том числе выставляем актуальные дату и время, сохраняем изменения и перезагружаемся.
  • Проверяем компьютер на наличие вирусов, используя как установленный антивирус, так и сторонний софт, например эффективна в борьбе с вирусами утилита Dr.Web CureIt и ей подобные, использующие наиболее свежие антивирусные базы.
  • Всегда выключайте компьютер по стандартной схеме через «Пуск», избегая некорректного отключения от электросети. Это позволит избежать системных сбоев различного характера в дальнейшем.

Выполнить замену элемента несложно, сделать это сможет даже малоопытный пользователь. Конечно, можно постоянно жать F1, чтобы Windows стартовала, но это скорее временное решение. Небольшие затраты на покупку элемента и минимум вашего времени вернут комфортную загрузку системы.

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and
privacy statement. We’ll occasionally send you account related emails.

Already on GitHub?
Sign in
to your account


Closed

thekadenh opened this issue

Feb 8, 2020

· 7 comments


Closed

MD5 checksum error

#485

thekadenh opened this issue

Feb 8, 2020

· 7 comments

Assignees

@MattMoradi

Comments

@thekadenh

I’m trying to install synthesis on Ubuntu 18.04. I’ve tried downloading the .run file from your website multiple times on different networks and each gives the following error:

./SynthesisLinux4.3.3.run

Verifying archive integrity… 100% Error in MD5 checksums: 9ad4b1713f8037af0e19d82daac9301d is different from 6ebc204e0021d72674c6bfb35e7451a6

@MattMoradi

Hi @thekadenh

Sorry you’re having difficulties with the download.
Try downloading it from here and let me know if you experience the same issue.

@thekadenh

Hello,

It still gives me the same MD5 checksum error when I download it from there. Do you have any other solutions? Thank you!

@MattMoradi

Sorry for the delay in response. This is the first time I’ve encountered this particular issue regarding the checksum. I’ll need to do further investigating on this for the time being. My apologies for the inconvenience. I’ll let you know if a fix is derived.

@motivator

FYI. the problem here is the gzip data in the installer is corrupt, I didn’t try creating it myself but that’s definitely the issue. might be as simple as trying a rebuild of the installer.

v4.3.2

$ bash ./SynthesisLinux4.3.2.run --check
Verifying archive integrity... ./SynthesisLinux4.3.2.run does not contain an embedded SHA256 checksum.
  100%   MD5 checksums are OK. All good.


$ tail -n +588 ./SynthesisLinux4.3.2.run | gunzip -c -t -v
 OK

v4.3.3

$ bash ./SynthesisLinux4.3.3.run --check
Verifying archive integrity... ./SynthesisLinux4.3.3.run does not contain an embedded SHA256 checksum.
  100%  Error in MD5 checksums: b4c253dcf200a440c0cba67fa5e82e34 is different from 6ebc204e0021d72674c6bfb35e7451a6


$ tail -n +588 ./SynthesisLinux4.3.3.run | gunzip -c -t -v

gzip: stdin: invalid compressed data--format violated

@wackbyte

I’m having the same issue on Arch Linux.

@wackbyte

I tried the installer in the releases page, and it worked!
However, the installation failed because I didn’t have rsync installed.

Edit: It worked.

@MattMoradi

@motivator Thanks for the input. I’ve updated the latest release to resolve the checksum error.

@jakbyte Interesting note about rsync. Glad you got that to work on Arch. As of right now we’ve currently only tested Ubuntu. I’d be interested to hear about your success with Arch.

@thekadenh Let me know if this resolves your issue. Sorry for the delay.

Возможные ошибки и способы их исправления

В этом разделе мы собрали наиболее часто возникающие вопросы от пользователей.

Если у вас возникли какие-то проблемы при работе с сервисом, пожалуйста, ознакомьтесь с содержанием этого раздела: возможно, ваша проблема уже описана.

«Ошибка при загрузке»

Статус «Ошибка при загрузке» появляется, если файл оформлен не в соответствии с нашими рекомендациями. Пожалуйста, внимательно проверьте, правильно ли оформлен файл, который вы загружаете.

Читайте, как правильно оформить текст книги в Word в блоге Издательских сервисов Литрес

Частые причины, которые приводят к ошибке при загрузке:

  • В файле остались разрывы страниц, колонтитулы, содержание книги, сделанное с помощью встроенной функции в MS Word, или нумерация страниц. Удалите из файла все эти элементы и загрузите файл еще раз.
  • Стиль «Заголовок N» присвоен пустой строке или целому абзацу. Проверить наличие таких заголовков можно, если перейти в вид документа «Структура» (Главное меню — Вид — Структура). Заголовки будут отмечены знаком «+» слева от текста. Убедитесь, что такими значками отмечены только названия глав или отдельных произведений в книге. Если стиль заголовка присвоен пустой строке, удалите эту строку, если абзацу — присвойте тексту стиль «Обычный текст».

Если все правила подготовки файла соблюдены, но ошибка все равно появляется

В этом случае попробуйте сбросить форматирование документа:

  • Сделайте копию исходного файла — на всякий случай.
  • Выделите весь текст (ctrl+a или с помощью функции Меню — Правка — Выделить все), далее выберите в стилях (на «Главной» вкладке MS Word) пункт «Очистить формат».

После этого из файла пропадет все форматирование. Это означает, что заголовки глав и т.п. необходимо разметить заново. Однако после этого файл с большей степенью вероятности удастся загрузить в нашу систему.

Если же и это не помогло, пора переходить к радикальным мерам:

  1. Откройте блокнот.
  2. Создайте новый пустой файл DOCX и тоже откройте его.
  3. В своем исходном файле выделите весь текст (ctrl+a), далее скопируйте его в буфер обмена (ctrl+c).
  4. Затем откройте пустой файл блокнота и вставьте туда скопированный текст (ctrl+v).
  5. Оставаясь в блокноте, выделите в нем весь текст (ctrl+a) и скопируйте его в буфер обмена (ctrl+c).
  6. Перейдите в пустой файл DOCX, который вы недавно создали, и вставьте в него скопированный текст (ctrl+v).
  7. Следуя рекомендациям по разметке и форматированию текста, подготовьте заново файл в формате docx и загрузите его в нашу систему.

Если сброс форматирования не помог, отправьте файл с текстом книги на support@selfpub.ru с темой письма «Ошибка при загрузке».

Как заменить файл с текстом книги?

  • В разделе «Мои книги» найдите нужное произведение в списке книг и нажмите «Редактировать».

  • В мастере публикации нажмите кнопку «Выбрать другой файл». В открывшемся окне выберите обновленный файл со своего компьютера.

  • Дождитесь, пока новый файл сконвертируется.

«Данный тип файл не поддерживается»

Если при загрузке книги вы увидели предупреждение «Данный тип файла не поддерживается», значит, вы пытаетесь загрузить файл, который не соответствует нашим требованиям. Мы принимаем файлы в форматах DOCX и FB2.

Чаще всего проблема возникает с форматом DOC, которые легко перепутать с DOCX.

Чтобы пересохранить файл формата DOC в формат DOCX, необходимо в текстовом редакторе выбрать Файл — Сохранить как… и в раскрывающемся списке «Формат файла» выбрать «Документ Word (.docx)».

После пересохранения откройте новую версию файла и проверьте, сохранилось ли форматирование заголовков.

Как удалить книгу?

Чтобы удалить книгу из нашего каталога, нажмите три точки в правом верхнем углу карточки книги. Появится всплывающее меню. Нажмите «Удалить».

При этом вы увидите предупреждение, уверены ли вы в том, что хотите удалить книгу. С чем это связано?

Согласно правилам Литрес, создание дублей (нескольких карточек для одной и той же книги) — недопустимо. В этом случае при отправке на модерацию новой карточки книги система выдаст ошибку и ваша книга не будет опубликована. Возможно, вашу проблему можно решить без удаления карточки книги.

Когда не надо удалять карточку книги?

  • Если произошла «Ошибка при загрузке». В этом случае воспользуйтесь нашими рекомендациями по устранению ошибок и замене файла в той же карточке книги.
  • Если вы хотите заменить файл с текстом книги или внести изменения в сведения о книге. В этом случае вам нужно снять книгу с публикации, зайти в Мастер публикации и внести изменения там, а не создавать новую карточку.

В каких случаях можно удалить книгу навсегда?

Вы можете удалить книгу, если уверены, что больше не будете публиковать ее через Литрес: Самиздат.

Как удалить учетную запись?

Напишите письмо в техническую поддержку support@selfpub.ru и укажите:

  • ваш адрес электронной почты;
  • причину удаления.

Обратите внимание, что после удаления учетной записи вы не сможете восстановить доступ или вновь зарегистрироваться на Литрес: Самиздат под той же почтой.

Источник

Ошибка CMOS checksum error, решение проблемы

Существуют несколько вариаций ошибок CMOS checksum error, которые возникают редко, но, как правило, в самый неподходящий момент.

Рассмотрим решение этой проблемы на ошибке «CMOS checksum error Defaults loaded warning! Now System is in safe mode. Pleas re setting CPU frequency in the CMOS setup«.

В переводе на русский язык это выглядит так «CMOS по умолчанию ошибка контрольной суммы загружалась предупреждение! Теперь система находится в безопасном режиме. Просьбы повторно установив частоту процессора в настройках CMOS».

Не будет углубляться во все тонкости и премудрости данной ошибки, так как многим пользователям ПК это просто не нужно, вопрос стоит только в одном, как решить проблему с ошибкой «CMOS checksum error».

Решение проблемы

Мы расскажем, как была решена данная проблема в нашем случае, у кого есть другие варианты, оставляйте их в комментариях.

Итак, часть ответа уже заложена в самом сообщении. Обратите внимание на вот эту часть предложения «Просьбы повторно установив частоту процессора в настройках CMOS». То есть, нам необходимо добраться до настроек CMOS, а по-простому зайти в BIOS.

Как это сделать система уже подсказывает.

Обнуляем BIOS

Но перед тем, как зайти в Биос, как вариант, можно попробовать сбросить выставленные в нем настройки, так как они, наверное, были частично выставлены не правильные.

Для этого необходимо вынуть батарейку памяти CMOS на 1 – 2 минуты. Как это деть показано на фото.

Заходим в BIOS

Обратите внимание на сообщение «Del to enter Setup». То есть нужно, на начальном этапе загрузки компьютера нажать кнопку Del, и вы попадете в настройки BIOS.

Сообщение может быть и другим, к примеру, «F2 to enter Setup» и т.д., поэтому кнопка DEL, это не панацея, все зависит от модели компьютера, ноутбука и версии самой BIOS.

Также от многого зависит, какая перед вами возникнет картинка. Но что она должна быть с синим фоном, это 100%.

Как вариант вы можете наблюдать ниже.

Чтобы не заморачиваться и искать в этих дебрях решение своей проблемы, можно использовать горячие клавиши F5 – Previous Values (предыдущие значения), F7 – Optimized Defaults (значения по умолчанию), F6 – Fail-safe Defaults (загрузка безопасных значений по умолчанию).

Обратите внимание, что в разных BIOS значение клавиш может быть разным, поэтому правильно переводите текст.

В нашем случает помогла клавиша F5 – предыдущие значения. Вы можете попробовать и другие клавиши.

После нажатия клавиши F5, появится окно – Подтвердить выбор Y – да, N – нет. Нажимаете клавишу Y.

Чтобы сохранить все изменения и сразу выйти нажмите клавишу F10 и так же подтвердите свой выбор нажав клавишу Y.

Компьютер начнет перезагружаться и ошибки «CMOS checksum error» уже не должно возникнуть.

Если все же проблема осталась, то обратитесь к специалисту, так как эта статья предназначена для начинающего пользователя ПК, а также среднего уровня подготовки.

Но в любом случае мы надеемся, что вам помогли. Удачи.

Источник

CMOS Checksum Error Defaults Loaded при загрузке — как исправить

Иногда при загрузке компьютера или ноутбука вы можете столкнуться с ошибкой: CMOS checksum error — defaults loaded и другими вариантами этой же ошибки, в зависимости от производителя материнской платы: System CMOS checksum bad, CMOS checksum is invalid, CMOS checksum failed, Setup settings error CMOS checksum error or CMOS battery loss occurs — во всех случаях речь идёт об ошибке контрольной суммы данных микросхемы CMOS.

В этой инструкции подробно о том, что может вызвать ошибки CMOS checksum при загрузке ПК или ноутбука и как исправить проблему. Отмечу, что ошибка не зависит от установленной системы — это может быть Windows 11, Windows 10 или даже Linux.

Способы исправить ошибки CMOS Checksum

Причина рассматриваемой ошибки — несовпадение сохранённой контрольной суммы для данных, хранящихся в микросхеме CMOS (память BIOS для хранения параметров конфигурации компьютера) и фактической контрольной суммы этих данных на момент проверки при загрузке. Происходить это может по разным причинам — проблемы с питанием, сбои при записи параметров БИОС или обновлении, в редких случаях — какие-либо аппаратные неисправности.

Для того, чтобы исправить ошибку CMOS checksum error — defaults loaded и аналогичные, можно использовать следующие подходы:

  1. При однократном появлении ошибки, например, после замены комплектующих, и нормальной загрузке операционной системы после этого, попробуйте выполнить простую перезагрузку ОС — возможно ошибка больше не проявит себя.
  2. Если вход в БИОС/UEFI при ошибке возможен, сбросить параметры БИОС на настройки по умолчанию (Load Defaults, Restore Defaults или Load Optimized Defaults, как правило на вкладке Exit). Учитывайте, что при сбросе могут сброситься и важные параметры загрузки (режим UEFI и Legacy, Secure Boot и их необходимо будет вернуть в прежнее состояние для исправной загрузки системы). Иногда описанный метод срабатывает однократно, но затем ошибка появляется вновь.
  3. Замена элемента питания CR2032 на материнской плате (замена «батарейки БИОС»). На настольном компьютере это — очень простая процедура, а вот на ноутбуке добраться до батарейки бывает сложно (впрочем, на ноутбуках рассматриваемая проблема менее распространена), при этом сама батарейка обычно не просто «вставляется», а подключается проводом, как на втором изображении ниже. После замены элемента питания не забудьте установить правильные настройки БИОС, включая дату и время.
  4. Если вход в БИОС невозможен, попробуйте выполнить сброс параметров либо отключив батарейку из предыдущего шага на несколько минут (компьютер при этом должен быть обесточен) либо с помощью кнопки (обычно её требуется удерживать для сброса CMOS) или контактов на материнской плате: у разных производителей эти контакты могут располагаться в разных местах, но обычно подписаны как CLEAR CMOS, CLR_CMOS, CLRTC и аналогичным образом: это либо два контакта, которые нужно замкнуть, либо три — в этом случае джампер (перемычку) необходимо переставить с одного расположения в другое — проделываем это на выключенном компьютере, а уже после установки перемычки включаем питание.
  5. Попробуйте обновить БИОС с официального сайта производителя материнской платы компьютера (именно для вашей модели МП), либо с официального сайта производителя ноутбука.
  6. Если ошибка, наоборот, стала появляться после обновления БИОС, проверьте: существует ли возможность установки предыдущей версии или же дождитесь очередного обновления (возможно, в установленном содержались ошибки).
  7. В случае, если батарейка БИОС заменена, а ошибки CMOS Checksum продолжают появляться, проверьте: существуют ли какие-то закономерности её появления, например: ошибки нет при использовании пункта «Перезагрузка» в меню Пуск Windows, но она появляется после использования пункта «Завершение работы» по прошествии некоторого времени (в этом случае можно попробовать отключить функцию Быстрый запуск).
  8. В некоторых БИОС можно просто отключить сообщение об ошибке (если она не мешает работе). Как правило пункт называется» Halt on (другие варианты: POST Errors, Error Halt) со значением «All Errors» (означает остановку при любых ошибках POST). Если выставить «No errors», то при обнаружении ошибок остановка происходить не будет.

В завершение ещё одна возможная причина ошибки — какие-либо аппаратные проблемы: неисправность компонентов материнской платы, проблемы с электропитанием — замыкания, статические разряды, утечки тока.

Источник

3 простых шага по исправлению ошибок MD5CHECKSUM.EXE

Подробности файле с именем md5checksum.exe

Очистите мусорные файлы, чтобы исправить md5checksum.exe, которое перестало работать из-за ошибки.

  • Запустите приложение Asmwsoft Pc Optimizer.
  • Потом из главного окна выберите пункт «Clean Junk Files».
  • Когда появится новое окно, нажмите на кнопку «start» и дождитесь окончания поиска.
  • потом нажмите на кнопку «Select All».
  • нажмите на кнопку «start cleaning».

Очистите реестр, чтобы исправить md5checksum.exe, которое перестало работать из-за ошибки

Как удалить заблокированный файл

  • В главном окне Asmwsoft Pc Optimizer выберите инструмент «Force deleter»
  • Потом в «force deleter» нажмите «Выбрать файл», перейдите к файлу md5checksum.exe и потом нажмите на «открыть».
  • Теперь нажмите на кнопку «unlock and delete», и когда появится подтверждающее сообщение, нажмите «да». Вот и все.

Настройка Windows для исправления критических ошибок md5checksum.exe:

  • Нажмите правой кнопкой мыши на «Мой компьютер» на рабочем столе и выберите пункт «Свойства».
  • В меню слева выберите » Advanced system settings».
  • В разделе «Быстродействие» нажмите на кнопку «Параметры».
  • Нажмите на вкладку «data Execution prevention».
  • Выберите опцию » Turn on DEP for all programs and services . » .
  • Нажмите на кнопку «add» и выберите файл md5checksum.exe, а затем нажмите на кнопку «open».
  • Нажмите на кнопку «ok» и перезагрузите свой компьютер.

Как другие пользователи поступают с этим файлом?

Всего голосов ( 202 ), 133 говорят, что не будут удалять, а 69 говорят, что удалят его с компьютера.

Как вы поступите с файлом md5checksum.exe?

Некоторые сообщения об ошибках, которые вы можете получить в связи с md5checksum.exe файлом

  • (md5checksum.exe) столкнулся с проблемой и должен быть закрыт. Просим прощения за неудобство.
  • (md5checksum.exe) перестал работать.
  • md5checksum.exe. Эта программа не отвечает.
  • (md5checksum.exe) — Ошибка приложения: the instruction at 0xXXXXXX referenced memory error, the memory could not be read. Нажмитие OK, чтобы завершить программу.
  • (md5checksum.exe) не является ошибкой действительного windows-приложения.
  • (md5checksum.exe) отсутствует или не обнаружен.

MD5CHECKSUM.EXE

Проверьте процессы, запущенные на вашем ПК, используя базу данных онлайн-безопасности. Можно использовать любой тип сканирования для проверки вашего ПК на вирусы, трояны, шпионские и другие вредоносные программы.

Источник

Ошибка «CMOS checksum error — Defaults Loaded» и ей родственные «CMOS checksum Bad», «CMOS checksum Failure» (точный текст ошибки зависит от производителя материнской платы) дословно переводится как «ошибка контрольной суммы CMOS, загружены параметры по умолчанию». Она означает, что текущем включении компьютера показатель суммы данных, хранящихся в CMOS-памяти, не совпадает с тем, что был зафиксирован при прошлом старте ПК. Сравнение этих данных нужно для корректного запуска операционной системы, но не всегда их расхождение свидетельствует о неустранимой проблеме.

CMOS checksum error defaults loaded что это значит

В переводе с английского языка текст данного сообщения звучит как «Ошибка контрольной суммы CMOS, загружены настройки по умолчанию».

Для тех, кто не знаком с термином «CMOS» поясню, что данный термин являет собой аббревиатуру от слов «Complementary Metal-Oxide-Semiconductor», или, по-русски, «Комплементарный Металлооксидный Полупроводник». В нашем случае CMOS представляет собой небольшую микросхему, в которой хранится ряд настроек БИОС, ответственных, в частности, за загрузку и работу нашей операционной системы.

Батарея на материнской плате

Для обеспечения бесперебойной работы указанной микросхемы рядом с ней на материнской плате обычно расположена батарейка (обычно элемент CR2032), питающая CMOS постоянным током низкого напряжения. Продолжительности работы данного элемента обычно составляет 5-7 лет, что вполне достаточно для среднего цикла работы стандартного ПК.

Как настроить?

В один прекрасный день, включив свой компьютер, Вы можете заметить, что он, вместо того, чтобы нормально загрузиться и работать — выдал сообщение «CMOS checksum error — defaults loaded» а ниже варианты действий — «Press F1 to continue, Del to enter setup» на черном экране. На различных моделях текст ошибки может незначительно отличаться: CMOS checksum invalid, bad или failure. В переводе на русский это означает, что произошла ошибка контрольной суммы настроек BIOS, в результате чего загружены заводские значения.

Это звучит очень грозно и оттого часто пугает неопытных пользователей, которые скорее торопятся вызвать компьютерного мастера. А зря. На самом деле, в 99% случаев это проблема не критична и исправляется быстро и просто.

Дело в том, что на материнской плате компьютера или ноутбука есть специальная батарейка на 3 Вольта стандарта CR 2032. Вот она:

Отвечает она за сохранение настроек системы BIOS, на которой основана работа всего устройства , так как стыкует все его компоненты в один единый отлаженный механизм.

Но вот эта батарейка на материнской плате не вечна. Её обычно хватает на 3,ну максимум на 4 года, после чего она окончательно сдыхает. Из-за этого параметры BIOS каждый раз сбрасываются, а компьютер пишет ошибку при загрузке CMOS checksum error — defaults loaded. Как Вы уже могли догадаться, лечится все банальной заменой элемента питания CR2032 на новый. Для этого надо снять крышку системного блока и найти на главной системной плате (материнке) гнездо с батарейкой. Обычно оно расположено в правом нижнем углу платы, либо между PCI-слотами.

Как Вы можете заметить, на креплении есть замочек. Чтобы его разблокировать, надо потянуть лапку в сторону, после чего «таблетка» выпрыгнет из крепления и её можно будет заменить на новую. После этого компьютер будет стартовать без ошибки, но всё же желательно будет зайти в BIOS и проверить все настройки. Возможно что-то придётся дополнительно оптимизировать.

Особенности ошибки CMOS checksum error defaults loaded

Разберёмся теперь поподробнее, что являет собой упомянутая в сообщении об ошибке «контрольная сумма». По сути, это специальный показатель, призванный защитить расположенные в CMOS настройки БИОС от потери. Каждый раз, когда компьютер включается и начинает грузиться, происходит сравнение показателя, хранящегося в памяти CMOS, с контрольным показателем системы. Если эти показатели совпадают, тогда происходит обычная загрузка операционной системы. Если же показатели отличаются, это автоматически приводит к появлению сообщения «CMOS Checksum error».

Каждый компьютер по-разному реагирует на появление «CMOS Checksum Error». Некоторые компьютеры предупреждают пользователя о проблеме, а затем продолжают загрузку, используя имеющиеся данные в CMOS. Другие ПК также оповещают пользователя о проблеме, но для дальнейшей загрузки используют находящиеся в БИОС заводские настройки, которые при этом сбрасываются в CMOS-память. Обязательным же при этом является появление на экране ПК текста упомянутого мной сообщения об ошибке.

Коды ошибок BIOS и инструкции по их исправлению

Ошибка cmos при загрузке

Наверняка, каждый пользователь компьютера слышал один или несколько звуковых сигналов, издающихся спикером материнской платы сразу после включения ПК. Если компьютер исправно функционирует, при его включении обычно издается всего один или (реже) два коротких сигнала. Но если их становится больше, и ПК или Windows при этом перестают включаться или загружаться, налицо первые признаки неисправности устройства или системы. Что делать в этой ситуации? Рассмотрим данный вопрос.

Откуда берутся звуковые сигналы?

Любая современная материнская плата оборудована микропрограммой BIOS, о функциях которой можно почитать в этой статье. Именно она отвечает за последовательное включение электронных компонентов системной платы, что в конечном итоге приводит к полноценному запуску компьютера в целом.

Если с одним из встроенных или внешне подключаемых к материнской плате происходит сбой, BIOS сигнализирует об этом, издавая звуковые сигналы. То же самое относится и к ситуациям, когда причина сбоя загрузки компьютера заключается в программных неисправностях самой микропрограммы BIOS.

По количеству, характеру (длинный/короткий) и последовательности издаваемых сигналов можно определить, какое из устройств ПК дает сбой. Причем один и тот же вид неисправности на разных моделях (версиях) BIOS может кодироваться по-своему. Рассмотрим звуковые коды ошибок самых распространенных моделей BIOS.

Определяем версию BIOS

В случае с операционными системами семейства Windows для определения версии BIOS нужно проделать следующее:

  • Найдите в меню «Пуск» элемент «Выполнить» и кликните по нему либо нажмите сочетание клавиш «Win+R».
  • Откроется небольшое окошко. Впишите в него команду «msinfo32» и нажмите «ОК».
  • Откроется программа «Сведения о системе».
  • В центральной части будет приведена таблица, найдите в ней элемент «Версия BIOS».
  • В столбце «Значение» напротив данного элемента будет приведена версия BIOS, как показано на изображении ниже.

В данном конкретном случае версия BIOS — «American Megatrends Inc. P2.70, 10.09.2012» или «AMI BIOS». Далее рассмотрим ошибки AMI BIOS, а также еще двух популярных версий данных микропрограмм — Award и Phoenix BIOS.

Ошибки AMI BIOS

При возникновении ошибок BIOS производства «American Megatrends Inc.» пользователь может услышать несколько коротких или длинных сигналов либо их чередование.

Сигнал Описание ошибки Возможное решение проблемы
1 короткий Ошибок нет Не требуется.
2 коротких Ошибка четности ОЗУ, в настройках BIOS установлено слишком малое значение задержки чтения данных из ОЗУ В первом случае может помочь перестановка планки ОЗУ в другой слот либо их очистка их контактов от загрязнений. При неправильно выставленных значениях задержки помогает сброс настроек BIOS. Если не помогает, ОЗУ придется заменить.
3 коротких Ошибка чтения данных из первых 64 КБ ОЗУ Решение, как и в предыдущем случае.
4 коротких Неисправность системного таймера: возможно, что проблема связана с питанием микросхемы CMOS, неисправностями блока питания или материнской платы Если села батарейка, поддерживающая питание CMOS — ее нужно заменить. В остальных случаях может потребоваться профилактика/ремонт/замена блока питания или материнской платы.
5 коротких Неисправность центрального процессора Извлечь процессор, очистить путем продувания контактную площадку, установить обратно. Если не помогает — заменить ЦПУ.
7 коротких Неисправности материнской платы Провести полную профилактику компьютера. Если не помогает — заменить материнскую плату.
8 коротких Неисправности ОЗУ видеоадаптера (память RAM) Извлечь видеоадаптер, очистить от пыли его и слот материнской платы, в который устанавливается видеокарта. Заменить видеоадаптер, если не мероприятия не помогут.
9 коротких Ошибка в данных микросхемы BIOS (контрольная сумма неверна) Произвести аппаратный сброс настроек BIOS. Если не помогает, микросхему придется заменить, что можно сделать только в сервисном центре.
10 коротких Ошибка при попытке BIOS записать данные в память CMOS Решение, как и в предыдущем случае.
11 коротких Ошибка кэш-памяти материнской платы Скорее всего, материнскую плату придется заменить.
1 длинный и 1 короткий Ошибка блока питания Снять блок питания и выполнить профилактику. Если не помогает, ПБ придется ремонтировать или заменить.
1 длинный, 2 или 3 коротких Неисправность видеокарты Профилактика видеокарты или ее замена.
1 длинный и 4 коротких карта не подключена Извлечь видеокарту, очистить контакты от грязи, очистить слот материнской карты. Если не помогает — заменить видеокарту.
1 длинный, 8 коротких Неисправность видеоадаптера либо не подключен монитор Выполнить профилактику видеокарты. Проверить кабель монитора. Возможно, его придется заменить.
Сигнал отсутствует, монитор не включается Аппаратная неисправность центрального процессора Выполнить профилактику процессора. Заменить ЦПУ, если не помогает.
Непрерывный звуковой сигнал Аппаратная неисправность блока питания либо перегрев системной платы Выполнить профилактику компьютера в целом. Заменить блок питания.

Причины ошибки

Что же до конкретных причин появления ошибки, то они могут быть следующими:

  • Батарейка, питающая микросхему CMOS, исчерпала свой ресурс (или не работает корректно);
  • Аналогичная ошибка Verifying DMI Pool Data;
  • Пользователь или вирусная программа обновили БИОС;
  • Компьютер не был правильно выключен (как довольно часто бывает, пользователь просто вытянул шнур ПК из розетки вместо стандартной процедуры отключения компьютера).

Видео

При рассмотрении вопроса значения Cmos checksum error defaults loaded, стоит, прежде всего, сделать вывод, что появление сообщения «Cmos checksum error» часто означает разрядку питающего микросхему CMOS элемента CR2032. Для решения описанной проблемы будет достаточно выполнить замену указанного элемента (цена его составляет несущественную сумму), и продолжить далее наслаждаться стабильной работой вашего ПК.

Когда мы включаем компьютер, может появляться сообщение «CMOS checksum error – Defaults loaded…». Оно говорит нам о том, обнаружена фатальная ошибка в контрольной сумме CMOS, поэтому, система будет загружать настройки по умолчанию, а системное время сбросится на тот момент времени, когда BIOS был установлен на материнскую плату.

Виной этому является элемент памяти – батарейка CR2032. Данную вещь можно приобрести в любом магазине электроники или компьютерном магазине. Элемент очень широко распространен установить вы его также сможете сами, ничего сложного там нет. Правда перед установкой убедитесь, что компьютер выключен и на материнскую плату не поступает питание, то есть полностью обесточьте ПК.

Теперь попробуем разобраться с тем, что делать во время появление CMOS checksum error Defaults.

>1 Способ

Можно попробовать загрузиться без элемента CMOS. Для этого включаете компьютер и нажимаете клавишу F1 или F2.

Как исправить CMOS checksum error defaults loaded

Рекомендую выполнить для исправления ошибки CMOS checksum error — Defaults loaded следующее:

  • Перейдите в БИОС и загрузите настройки по умолчанию (Load optimized defaults). Сохраните их (Save & Exit Setup), затем перезагрузите систему. Если ошибка повторяется – переходите к следующему пункту.

    Загружаем биос по умолчанию

  • Если рассматриваемая ошибка раз за разом появляется после перезагрузки, то это обычно означает, что батарейка (обычно это элемент CR2032) исчерпала свой ресурс, и требуется её замена. Откройте крышку корпуса ПК, найдите на материнской плате указанную батарейку и изымите её. Приобретите аналогичную замену в компьютерном магазине (или на рынке), и установите новый элемент на место старого (делайте это аккуратно, не прикасаясь к другим элементам материнской платы, дабы избежать воздействия на них статического электричества). После замены элемента перейдите в БИОС, внесите нужные настройки CMOS (включая правильные дату и время), сохраните их и перезагрузите ваш ПК;

    Замена батарейки

  • Проверьте вашу систему на наличие вирусных программ (одна из них могла стать инициатором обновления вашего БИОСа), для чего используйте такие антивирусные инструменты как Dr.Web CureIt!, Malwarebytes Anti-Malware, Trojan Remover и ряд других;
  • Выполняйте корректное отключение вашего ПК, используя стандартное меню кнопки «Пуск», это позволит предотвратить появление ошибки CMOS checksum error в будущем.

    Не правильное выключение компьютера

Заходим в BIOS

Обратите внимание на сообщение «Del to enter Setup». То есть нужно, на начальном этапе загрузки компьютера нажать кнопку Del, и вы попадете в настройки BIOS.

Сообщение может быть и другим, к примеру, «F2 to enter Setup» и т.д., поэтому кнопка DEL, это не панацея, все зависит от модели компьютера, ноутбука и версии самой BIOS.

Также от многого зависит, какая перед вами возникнет картинка. Но что она должна быть с синим фоном, это 100%.

Как вариант вы можете наблюдать ниже.

Чтобы не заморачиваться и искать в этих дебрях решение своей проблемы, можно использовать горячие клавиши F5 – Previous Values (предыдущие значения), F7 – Optimized Defaults (значения по умолчанию), F6 – Fail-safe Defaults (загрузка безопасных значений по умолчанию).

Обратите внимание, что в разных BIOS значение клавиш может быть разным, поэтому правильно переводите текст.

В нашем случает помогла клавиша F5 – предыдущие значения. Вы можете попробовать и другие клавиши.

После нажатия клавиши F5, появится окно – Подтвердить выбор Y – да, N – нет. Нажимаете клавишу Y.

Чтобы сохранить все изменения и сразу выйти нажмите клавишу F10 и так же подтвердите свой выбор нажав клавишу Y.

Компьютер начнет перезагружаться и ошибки «CMOS checksum error» уже не должно возникнуть.

Если все же проблема осталась, то обратитесь к специалисту, так как эта статья предназначена для начинающего пользователя ПК, а также среднего уровня подготовки.

Но в любом случае мы надеемся, что вам помогли. Удачи.

Adobe
Adobe Support Community

search

  • Global community

    • Language:
      • Deutsch

      • English

      • Español

      • Français

      • Português

  • 日本語コミュニティ

  • 한국 커뮤니티

    • Home

    • Download & Install

    • Discussions

  • Re: invalid checksum error

correct answers
1 Correct answer

Gautham_K

Dec 15, 2011
Dec 15, 2011

Hi,

If you are running Snow Leopard or Lion OSX, navigate to Disk utility->Preferences. Uncheck «verify checksums». Then try installing the content from the other 3 discs.

If they install successfully, please go back to the Disk utility-> Preferences option and reselect «verify checksums».

Hope this helps.

replies
4
Replies
4

Понравилась статья? Поделить с друзьями:
  • Invalid text representation 7 error invalid input syntax for type integer
  • Invalid text representation 7 error invalid input syntax for type bigint
  • Invalid system disk replace the disk and then press any key как исправить
  • Invalid syntax python ошибка как исправить
  • Invalid syntax python ошибка else