The script adds a button to the site for downloading books to an FB2 file
< Отзив за RulateBookExtractor
Если это возможно, не могли бы вы добавить функцию "перезагрузить" изображения с ошибкой. Обычно, если изображение выдаёт ошибку, приходится запускать скрипт заново, было бы удобнее иметь кнопку "повторить попытку" или вроде того.
Я подумаю, что можно сделать. Под запуском скрипта заново вы имели ввиду закрытие и открытие диалога скачивания заново или что-то другое?
Кроме того, книги, скачанные вашим скриптом, выходят довольно объёмными. Не знаю, может это нормально, но возникает ощущение, что где-то скрипт лепит лишнее.
Я сильно сомневаюсь, что скрипт скачивает что-то лишнее. Думаю, дело в картинках. Скрипт скачивает их как есть, без модификации. Оригинальный алгоритм сайта, если я правильно помню, картинки в тексте вообще игнорирует, как и разметку. Так что размер будет точно различаться. С учетом того, что большинство авторов вставляют картинки как есть, без оптимизации по разрешению, то размер может ОЧЕНЬ сильно различаться.
Кстати, после переконвертации книг в epub проблема пропадает. Не знаю, с чем это связано, но возможно это поможет вам сделать скрипт лучше.
Epub - это по факту ZIP-архив, так что он точно будет меньше, особенно, если в книге используются несжатые или плохо сжатые картинки. Еще, возможно, конвертер еще и картинки оптимизирует. Тут нужно смотреть отдельно.
Я подумаю над тем, чтобы прикрутить к скрипту оптимизацию картинок. В любом случае, спасибо за отзыв и информацию.
Я имею ввиду, перезапуск этих ошибок. То есть, к примеру, в таком случае скрипт попытается загрузить проблемное изображение ещё 2 раза, и только потом выдаст ошибку и перейдёт к следующему. Или, по окончанию загрузки, добавить в диалоговое окно кнопку для повторной загрузки проблемных элементов.
Я подумаю над тем, чтобы прикрутить к скрипту оптимизацию картинок. В любом случае, спасибо за отзыв и информацию.
Это уже просто мои хотелки. Просто раньше, до того я нашёл ваш скрипт, мне приходилось скачивать штатной качалкой сайта по 10-20 глав, потом склеивать их вместе, вручную допихивать нескачанные изображения и править мелкие косяки в коде. Такие книги занимали до 30% меньше места, чем выгруженные скриптом и не выдают ошибку в читалках. Собственно, MoonReader любит выдавать "failed to allocate memory" на них, а с не давнего времени и CoolReader с FBReader тоже стали вылетать, вот я и подумал, может скрипт чего-то лишнего в код добавляет...
Просто раньше, до того я нашёл ваш скрипт, мне приходилось скачивать штатной качалкой сайта по 10-20 глав, потом склеивать их вместе, вручную допихивать нескачанные изображения и править мелкие косяки в коде. Такие книги занимали до 30% меньше места, чем выгруженные скриптом и не выдают ошибку в читалках.
Один из моих тестов итогового скрипта - проверка полученного файла валидатором. Так что случайного мусора там быть не должно. Да и глазами я файл тоже проверяю (не всегда). А разница в 30% - это довольно много для лишь текста, так что я подозреваю, что дело в картинках. Возможно ваши вставляемые картинки несколько меньше по разрешению/объему нежели картинки, которые получает скрипт. Кстати да, картинки отдаваемые сервером разным клиентам могут отличаться по объему. Сам на такое нарывался на автор.тудей. Даже тут, на сайте это обсуждали в комментариях к скрипту authortodayextractor. В любом случае, нужно сверять то, что вы получили старым способом с тем, что было получено новым. Хотя проще всего удалить блок binary в обоих версиях и сверить размеры файлов с только лишь текстом. Думаю, там не будет такой разницы. Я вижу два самых вероятных сценария: 1) Программа, которой вы вставляете картинки в итоговый fb2 файл, ужимает картинки перед вставкой. 2) В книге были картинки формата WebP и скрипт автоматически сконвертировал их в JPEG с меньшим сжатием чем в оригинале. 3) В base64 представлении картинок, которое формирует мой скрипт, попадает что-то лишнее.
Не могли бы вы куда-нибудь скинуть файлы, которые вы сформировали описанным вами способом, в месте с ссылкой на источник, чтобы я мог проверить в чем дело? Я сам сформирую файл скриптом и сверю с вашим.
Увы, скинуть не могу, живу в месте с крайне плохим (и дорогим) интернетом. Согласен, что дело и правда может быть в сжатии изображений, кроме того скриптом пользуюсь уже давно, на сайте могло что-то и поменяться так, что вручную бы у меня сейчас возможно вышло бы хуже.
Только странно мне, что одни читалки свободно открывают книги, а другие выдают ошибки, но я слишком плохо разбираюсь в технических деталях, от того и пишу ещё и вам. Отдельные энтузиасты, зачастую, куда как отзывчивее, чем разработчики (та же поддержка MoonReader так и ответила, мол нас не колышет, свои проблемы решайте сами)
А для работы я пользовался MergeFb2 и FictionBook Editor. Из последнего как раз вчера скачивал https://tl.rulate.ru/book/17430 (кстати, тут скрипт не смог скачать всё целиком, выдал пустой fb2 файл нулевого размера, пришлось качать блоками)
Только странно мне, что одни читалки свободно открывают книги, а другие выдают ошибки, но я слишком плохо разбираюсь в технических деталях, от того и пишу ещё и вам.
Тут вариантов может быть несколько. Например некоторые читалки не умеют читать формат WebP. Хорошо, если просто картинку не покажут, но ведь могут и книгу не открыть. Еще вариант, что читалка пытается загрузить в память не текущую страницу, а всю книгу целиком и ей просто не хватает памяти на мобильном устройстве. Обе проблемы связаны с реализацией конкретных читалок. В общем, буду думать.
Из последнего как раз вчера скачивал https://tl.rulate.ru/book/17430 (кстати, тут скрипт не смог скачать всё целиком, выдал пустой fb2 файл нулевого размера, пришлось качать блоками)
Странно. Проверил, скачалось нормально:
$ stat Leon\ Hart.\ Путём\ Демиурга\ \[RLT-17430\].fb2
Файл: Leon Hart. Путём Демиурга [RLT-17430].fb2
Размер: 19378976 Блоков: 37856 Блок В/В: 4096 regular file
...
И валидацию прошел.
Еще вариант, что читалка пытается загрузить в память не текущую страницу, а всю книгу целиком и ей просто не хватает памяти на мобильном устройстве
Возможно, хотя куда уж столько памяти уходит, не пойму. Что оперативной, что общей памяти навалом...
Странно. Проверил, скачалось нормально
Ну, может дело в моём интернете или в браузере, всё-таки часа 3 качалось...
Опять же, я не слишком силён в технических деталях, могу или неправильно понимать или неточно описывать проблему.
В любом случае, огромная благодарность за вашу работу!
Большое спасибо за скрипт! Раз уж администрация сайта не может у себя сделать адекватное скачивание, ваша работа просто спасение.
Если это возможно, не могли бы вы добавить функцию "перезагрузить" изображения с ошибкой. Обычно, если изображение выдаёт ошибку, приходится запускать скрипт заново, было бы удобнее иметь кнопку "повторить попытку" или вроде того. Как вариант, при неудачной попутке скачивания, можно добавить скрипту ещё 2-3 попытки и только потом переходить к следующему.
Кроме того, книги, скачанные вашим скриптом, выходят довольно объёмными. Не знаю, может это нормально, но возникает ощущение, что где-то скрипт лепит лишнее. Это не проблема само по себе, но некоторые мобильные читалки просто отказываются читать такие книги. Кстати, после переконвертации книг в epub проблема пропадает. Не знаю, с чем это связано, но возможно это поможет вам сделать скрипт лучше.
В остальном, всё отлично, благодарю за работу, успехов вам!