AuthorTodayExtractor

The script adds a button to the site for downloading books to an FB2 file

< Отзив за AuthorTodayExtractor

Отзив: Отлично - скриптът работи

Это не ошибка, но решил все-таки написать. Ox90, посмотрите, как время будет? Чисто чтоб понять, что там такое.
Скрипт скачивает как обычно.
Однако потом Fiction Book Editor одну книгу одного автора открывает, а следующую за ней в серии такую же - нет.
---
https://author.today/work/207426 - открывает.
https://author.today/work/258946 - нет.
---
https://author.today/work/191444 - открывает.
https://author.today/work/215912 - нет.
---
Просто не открывает, процесс в Диспетчере возникает и через 2 секунды пропадает. Такое уже было с обложками в формате webp, я писал в каком-то другом топике. Но сейчас тут нормальный jpg, Алридер обложки видит, файлы читалкой открываются - короче, всё нормально-штатно, только вот FBE почему-то потом не хочет сотрудничать. Избирательно.
Логичный вывод - несмотря на одного автора, одну серию, скачку последовательно в ту же минуту и т.п., файлы, хотя и не должны, но всё-таки чем-то отличаются.
Чем же?

Если надо именно мной скачанные 4 штуки - пишите, заберу и выложу на обменник.
А, и я еще пооткатывал версии на всякий случай, недавно скрипт обновлялся в плане тега I и т.п. - дошёл до 8 версий назад, всё то же самое.
Также другие текущие недавно начатые и законченные книги FBE открывает, это я проверил на тот случай, если там какие-то изменения на АТ, но касается только актуального, а старые книги типа не затронуло. Вероятность мизерная, но почему и не проверить?

Ox90Автор
§
Публикуван на: 28.06.2023

Хм. Сейчас у меня мыслей на этот счет нет. Ничего серьезного в самом ядре выгрузки я уже давно не менял, лишь точечные правки. По вашему описанию выглядит так, будто FBE ловит баг и отваливается по сегфолту. Обе книжки я выгрузил и проверил XML-валидатором - все ок. FBE у меня сейчас нету, потому как еще не сподобился его поставить на свой линукс, так что быстро проверить не смогу. Ясно дело, что FBE виноват - он должен хотя бы сообщить что ему не нравится, а не тихо отваливаться. Но вы можете попробовать локализовать проблему. Попробуйте выгрузить без доп.материалов или с отдельными главами и загрузить в FBE. Так будет проще вычислить место в книге. Если будет сбоить на всех главах - то дело скорее всего в заголовке, например аннотация или какой-нибудь тег. В общем я еще подумаю, что там может быть. Даже если и в сайте дело, скрипт этого не замечает и даже вроде бы все как положено выгружает.

p.s. Вот еще что - попробуйте выгрузить книгу без картинок вообще, в том числе в главах.

Ox90Автор
§
Публикуван на: 28.06.2023
Редактиран на: 28.06.2023

Кажется разобрался. Действительно АТ снова начал мудрить с webp. В первой книге - предпоследняя фотография в доп.материалах, а во второй - последняя фотография в главе "Глава 42. Карательный отряд против героя". Или авторы книг сами залили именно webp на сайт или сам сайт стал более активно пропихивать этот формат картинок. Кое-что я могу предпринять против этого. Но это не спасет в случае, когда автор указывает в своей книге ссылку на webp картинку на стороннем ресурсе.

Вон оно что...
Спасибо, что разобрались, да еще так быстро! Я-то вообще на удачу писал...
Ну что ж,

Кое-что я могу предпринять против этого.

Обязательно предпримите! Пожалуйста!
FBE уже никогда не апдейтнут; Алридер тоже не обновится, а webp всё равно не увидит. Других сравнимых программ-читалок нету до сих пор... А физическим Покетбукам и всяким Киндлам точно пофиг.

Но это не спасет

Эх. Конвертить их никак нельзя, да?
Ладно, теперь уж точно запомню, что такое поведение FBE - скорее всего этот webp внутри.

На будущее же. Так-то юзер сможет без проблем открыть файл Алридером, ну да, webp не увидит, но в остальном тут всё рабочее. Вот FBE точно работать не будет, однако же тот юзер, который это поймает, всегда будет иметь возможность (необходимость, блин) просто не качать картинки.
Возникает логичный вопрос - можно ли в скрипте форматы разграничить? В идеале отдельную галку "не качать только webp"?
Или, например, писать этот формат в логе - вместо "Загрузка изображения... ok" что-то вроде "Загрузка изображения JPG/PNG... ok" (всё зелёным) и "Загрузка изображения WebP... ok" (а это красным, как с обложкой было по-моему). Чтоб точно видеть, где конкретно он находится - проще же скачать всё без части глав, получив 100 %, а потом взять "проблемные" главы отдельно и положить файл рядом.
Самое важное - сразу увидеть, в какой главе/ах оно лежит. То есть, например, остальные форматы не писать, но ТОЛЬКО webp - всё-таки пометить.
Или, в конце концов, просто автоматом вырезать WebP скриптом, не скачивать - ведь всё равно их потом не увидеть даже в Алридере.
Вопросы, вопросы... Одно ясно, FBE теперь становится еще менее функциональным, мало-помалу, и надо все эти нюансы держать в голове...

Ox90Автор
§
Публикуван на: 28.06.2023

Эх. Конвертить их никак нельзя, да?

Да фиг его знает, скорее всего можно. Как вариант, можно использовать встроенный в браузеры canvas. Только за быстродействие я не уверен. Нужно покопать эту тему, все равно, похоже, придется как-то это прикручивать. Тут уже нарвались: https://greasyfork.org/ru/scripts/469106-rulatebookextractor/discussions/189538, а у рулейта такого параметра как у AT нет. Там без вариантов.

Что касается предупреждений о webp, я уже подумал в конце лога выводить количество картинок в разрезе форматов, как информацию. Но можно и при загрузке давать предупреждение, как при отсутствии аннотации. Что касается опции... хм, куда их пихать то? Чешет репу В общем, нужно подумать.

Обязательно предпримите! Пожалуйста!

Уже. Ближе к вечеру выложу обновление. Дело в том, что на одной из книг, что вы указали, я обнаружил, что забыл реализовать ограничение по количеству одновременно загружаемых картинок для доп.материалов. Надо сделать, пока помню. А то есть привередливые браузеры которые на это матерятся, ну вы помните.

Ox90Автор
§
Публикуван на: 28.06.2023

Готово. Сделал через изменение запроса к сайту AT. В случае явного указания на то, что картинка webp, скрипт добавляет к запросу специальный параметр с желаемым типом. Также попробовал манипулировать HTTP-заголовком Accept, но это не сработало. В коде оставил, вдруг сработает в других случаях.

Решение явно правильное - скачанную новой версией скрипта книгу https://author.today/work/215912 FBE открыл! Значит, нащупанный путь верен.
А вот с этой не получилось - https://author.today/work/258946
Вся целиком - не открывается.
Но если убрать скачку доп. материалов - открывается.
Внутри глав картинок нет.
Значит, проблема затерялась среди тех 24 картинок в Дополнительных. Какая-то из них там особенная, даже с учетом новейших исправлений...

Ox90Автор
§
Публикуван на: 28.06.2023

Странно. Я же ее проверял. Там не было webp картинок после апдейта. Проверил еще раз: только png и jpeg картинки. Вы в своем итоговом fb2-файле проверяли? Может вам сервер что-то не то отдал? Можно пробовать открыть файл любым текстовым редактором и поискать строчку image/webp. Я пошел еще дальше: поискал все, что отличается от image/png и image/jpeg. Тут одно из двух - или у вас затесался webp или проблема в чем-то еще. Конечно, возможно такое, что сервер отдал MIME-тип image/jpeg а в реальности подсунул webp. Но... зачем ему это?

Да, нету поиском image/webp. Я порылся и руками, перебрал строки вида

section p Чо'Галл /p image l:href="#image11.jpg" section

все 24 + 1 обложка картинки это image№хх либо jpg либо png
И перебрал тоже последовательно

content-type="image

опять везде /jpeg" и png
Значит, дело не в этом.
Что теперь-то FBE не нравится... Ведь если допы не качать - открывает! Ну логично же, что дело в картинках, так?
Это вот выше всё было в хромиумах. Сейчас также проверил на Лисе, как известно, между ними есть разница (и размер опять отличается - сейчас 2 Мб).
Аналогично...
Далее полез собственно на сайт. Понаводил мышкой на картинки, благо они в одном месте.
Есть падла - и хорошо, что с названием, сразу видно. Андуин Лотар, предпоследняя в списке Допов. https://cm.author.today/content/2023/06/23/b9ac5bd053a14e1989a36b4f06285a87.webp
Внутри fb2 она image23.jpg
То есть реально по факту, несмотря на формальное content-type="image/jpeg, она всё-таки почему-то webp?
Можно победить?

У меня в системе есть FastStone, он webp не понимает.
Если взять любой файл на компе и вручную тупо изменить ему расширение с jpg/png на webp - FastStone его откроет без проблем.
Сейчас скачал ту картинку, изменил расширение на jpg/png - FastStone не открыл (Ирфан, который понимает, открыл).
Далее взял файл. К сожалению, прямо выцепить картинку из него не могу - я это только FBE умею, а он и есть проблема-то. Однако вспомнил, что Яндекс.Браузер понимает fb2 и открывает их именно как книжки. Открыл, в конце эта картинка, кликнул на "сохранить как" - не вышло, он весь fb2 почему-то сохраняет. Зато получилось "открыть на новой вкладке".
Адрес: data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD - и дофига кода на десяток экранов. И вот эту-то он сохранил как загруженное.jpg, причем FastStone его открыл.
То есть эксперимент показал, что внутри файла таки jpeg...
Ну, у меня идеи кончились...

Ox90Автор
§
Публикуван на: 28.06.2023

Там внутри файлы закодированы обычным base64. Не нужно было пытаться конвертировать, если исключить тот вариант, что сервер врет. Если в fb2-файле нет строки image/webp, то webp картинок там скорее всего нет. В fb2-файле скрипт указывает типы картинок из ответов сервера. То есть скрипт меняет запрос, но не ответ. Если попросил jpeg, но получил webp, то запишет именно webp. Нужно думать. Будет время установлю FBE и погоняю на разных файлах. Сейчас немного никак.

Ox90Автор
§
Публикуван на: 29.06.2023

Накидал по быстрому скрипт, который выдрал картинки из готового FB2 файла, преобразовал и прогнал все 25 картинок через утилитку file. Вы не поверите! Проблема в последнем файле. У него расширение jpg, сервер отдает его как image/jpeg, но на самом деле - это webp. Полагаю, сам автор загрузил такой файл с неправильным расширением а сервер и не стал проверять, и mime тип отдает по оригинальному расширению. Даже не знаю кого в таком случае нужно расстреливать, пользователя (автора книги) или админов AT... У меня пока нет мыслей, что можно по этому поводу предпринять.

§
Публикуван на: 29.06.2023
Редактиран на: 29.06.2023

С предпоследним, значит, всё нормально? image23.jpg она же Андуин Лотар? На сайте-то WebP, то бишь потом внутрь скрипт переконвертил её как и задумано?
Ну, главное - диагноз поставлен! Правильный в смысле. Остальное - дело техники.
Как будет время, силы и настрой - уверен, что решите вопрос. Это ж даже не "проблема", а так, сопутствующая вещь, скрипт-то штатно отрабатывает.
PS. Ага, FastStone последнюю 24-ю картинку не открыл (4b68527ceab94d77b2df8f1ac4c2d61e.jpeg)....

Ox90Автор
§
Публикуван на: 29.06.2023

С предпоследним, значит, всё нормально? image23.jpg она же Андуин Лотар?

Да. Этот нормально конвертнулся. Не скрипт его переконвертил, а сайт по его указанию (пожеланию). Но в том случае скрипт точно знал, что это webp, потому и дал подобное указание.

§
Публикуван на: 15.09.2023

https://author.today/work/266479 — Неизвестный элемент DIV, если не ошибаюсь, файл сформировался.

Ox90Автор
§
Публикуван на: 16.09.2023

Спасибо за репорт!

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

Добавил явную обработку тега DIV в версию 1.0.2 и подсказку в конец лога для подобных случаев.

Ox90Автор
§
Публикуван на: 06.11.2023

Добавил конвертацию WebP --> JPEG в версии 1.1.0 при наличии таких изображений. Необходимо подтверждение пользователя. Вроде бы достаточно резво конвертирует, по крайней мере у меня :) Бонусом в логе выдается статистика по количеству картинок разных типов.

"Да ты чёртов гений!" (с).
Всё работает, огромное спасибо, Ox90, что поддерживаете и развиваете скрипт.
Скачал, проверил, и запросы всплывают, и реальная конвертация происходит - всё круто.
FBE открывает файлы.
Скрипт всё лучше и лучше, даже страшновато становится, тьфу-тьфу-тьфу.
!

Ox90Автор
§
Публикуван на: 06.11.2023

Да, я такой! А еще я скромный! Спасибо за терпение, отзыв и подтверждение того, что мой код гениальный работает не только у меня, а то всякое бывало в моей практике.

Ox90Автор
§
Публикуван на: 08.11.2023

Только что добавил похожую функциональность в скрипт для readli.net. Хороших нам книг!

Публикувайте отговор

Влезте, за да публикувате отговор.