Скрипт AuthorTodayExtractor
Скрипт позволяет выгружать книги в формате FB2 с сайта Author.Today вне зависимости от того, разрешил автор выгрузку книги или нет. Скрипт был написан для личных целей, чтобы получить возможность читать понравившуюся книгу в любимой читалке а не в навязанной сайтом.
Внимание! Скрипт позволяет выгружать только доступные пользователю главы.
Возможности скрипта
- Регистрация на сайте не обязательна, главное чтобы главы были доступны
- Выгружает обложку, если она есть
- Выгружает аннотацию, если она есть с примечаниями или без примечаний автора (опционально)
- Определяет жанры по меткам на сайте, если это возможно
- Определяет серию, номер серии, ключевые слова
- Есть возможность выбрать главы для выгрузки
- Выгружает картинки внутри глав, если они есть (опционально)
- Выгружает дополнительные материалы, если они есть (опционально)
- Некоторые элементы разметки выгружает более корректно, чем это делает официальный алгоритм
- Не нужно подписываться на автора, чтобы выгрузить книгу
- Удаляет пустые элементы разметки, "схлопывает" ненужные двойные
- В отличии от официального алгоритма, скрипт способен выгружать книги большого размера (>30Мб)
Использование
- Установите скрипт.
- После обновления страницы с оглавлением книги, в блоке слева появится кнопка "Загрузить FB2", почти полностью повторяющая стиль сайта. После ее нажатия, появится диалоговое окно с выбором глав и несколькими опциями. Нажмите кнопку "Продолжить" и наблюдайте за процессом выгрузки. Прогресс отображается в том же диалоговом окне.
- По завершению выгрузки название кнопки сменится на "Сохранить в файл".
Особенности
Скрипт выгружает главы последовательно, делая запросы к серверу один за другим, чтобы не напрягать сервер. Так что нужно будет немного подождать.
Анализ разметки реализован в "строгом режиме". Это означает, что при наличии неизвестной ошибки скрипт выдаст ошибку и остановит выгрузку. Это сделано для того, чтобы найти все варианты разметки на сайте и по возможности корректно реализовать их в формате FB2. Поскольку скрипт писался для своих нужд, у меня не было возможности проверить и протестировать все случаи, так что ошибки наверняка есть. Если вы наткнетесь на ошибку, сообщите мне, пожалуйста, ссылку на книгу и текст ошибки в диалоговом окне и консоли (желательно).