The script adds a button to the site for downloading books to an FB2 file
Дико извиняюсь за поздний ответ - загремел в больницу. Только что проверил - работает. Какой браузер и какую ОС вы используете?
А еще укажите версию браузера, чтобы я мог протестировать.
У меня, Firefox, 91.6.0esr (64 бита), Linux:
Здравствуйте!
Аналогичная ситуация, которая у ТС. Зависает напрочь.
Вин7, 32 бита, хромиумы Опера, Яндекс, Вивальди, последние версии их и Тамперманки.
Проверил ваш скриншот (Распопов) - то же самое зависание.
Сейчас буду ставить на Файрфокс Тамперманки, потом скрипи, смотреть дальше, но это время. На хромиумах точно не работает.
И на Распопове (ваш скриншот), и, например, https://author.today/work/182105
Поставил на ФФ последней версии.
К сожалению, то же самое.
Что еще из информационного. Адблок отключал. Но вот "перезапустить начисто без расширений" не получается - Тамперманки же тоже расширение, т.е. так проверить невозможно.
Пробовал залогиненным и параллельно незалогиненным.
Пробовал на тех книгах, где скачки нет - и на всякий случай тех, где есть.
Оставлял выделенными галки на все главы у книг - и только 2-3 главы, остальные снимал.
В общем, ну никак.
Дико жалко, очень, очень хочется вот так скачивать разом в один файл, даже пусть не fb2, а html. Конечно, нет проблем открыть Easy Read`ом, и сохранять поглавно, но это все-таки не то. Совсем.
Надеюсь, что подкрутите скрипт!
Спасибо за отзыв. Обязательно подкручу, надо только выяснить что за ошибка там возникает. Можете посмотреть какая ошибка выскакивает в консоли браузера? Чтобы попасть в консоль нужно нажать F12 (для Firefox) и выбрать вкладку Консоль.
Вам нужно всё или только после нажатия кнопки?
На всякий случай копирую всё под спойлер. Это с включенным адблоком, на сайте не залогинен.
https://author.today/work/182105
Ресурс на «https://www.gstatic.com/firebasejs/6.3.4/firebase-app.js» был заблокирован, так как включена блокировка содержимого. 3
Ресурс на «https://www.gstatic.com/firebasejs/6.3.4/firebase-app.js» был заблокирован, так как включена блокировка содержимого.
182105
Ресурс на «https://www.gstatic.com/firebasejs/6.3.4/firebase-messaging.js» был заблокирован, так как включена блокировка содержимого.
182105
Ресурс на «https://www.gstatic.com/firebasejs/6.3.4/firebase-messaging.js» был заблокирован, так как включена блокировка содержимого.
182105
Google Analytics and Tag Manager is being shimmed by Firefox. See https://bugzilla.mozilla.org/show_bug.cgi?id=1713687 for details. sandbox eval code:1:9
Жанры: popadanec 182105:13:1037
Запрос из постороннего источника заблокирован: Политика одного источника запрещает чтение удаленного ресурса на https://cm.author.today/content/2022/03/23/864311309ac341d8ba9d5f48adc2cea0.jpg?width=265&height=400&mode=max. (Причина: отсутствует заголовок CORS «Access-Control-Allow-Origin»). Код состояния: 200.
Uncaught (in promise) TypeError: NetworkError when attempting to fetch resource.
У предпоследней строчки Код состояния: 200 есть "подробнее" - ссылается сюда: https://developer.mozilla.org/ru/docs/Web/HTTP/CORS/Errors/CORSMissingAllowOrigin
Спасибо за лог, я наконец разобрался в чем проблема. Это особенность Tampermonkey - учитывать CORS для собственных скриптов вкупе с защитой самого AuthorToday для своих поддоменов. Я в основном тестировал на Greasemonkey и не подумал, что на Tampermonkey запросы обрабатываются иначе. В ближайшее время я напишу обходное решение, а пока можно попробовать использовать Greasemonkey или воспользоваться таким трюком:
- Кликнуть правой кнопкой мыши по картинке с обложкой книги
- Выбрать пункт меню "Посмотреть код"
- В открывшемся инспекторе DOM удалить элемент с картинкой (тег img, он должен быть выбран автоматически) путем выбора пункта "Удалить элемент/Delete element" в контекстном меню этого элемента.
- Нажать кнопку "Скачать FB2"
В этом случае обложка книги не будет выгружена в исходный FB2 файл, но книга выгрузится нормально. Я проверял на прагматичном флегматике.
Сорри за это недоразумение.
О как. Попробовал пока трюк, а Гризманки поставлю и потестирую попозже.
Что получилось сейчас и с Тамперманки:
1. Если у книги внутри вообще нет иллюстраций, то скрипт замечательно и быстро работает, получается нормальная fb2-шка с оглавлением и дескрипшеном!
2. А если есть (https://author.today/work/162582) - то точно так же задумывается. Значит, засада именно что в картинках, причем в целом, а не только обложке.
Гризманки проверю, но вообще, конечно, жду допиливания под привычную Тамперманки.
Сам факт, что работает в целом и можно взять одним файлом сразу, если автор скотина, на пустом месте убивающая удобство читателям - просто офигенно насколько круто.
Огромное спасибо!
З.Ы. Называет скачанный файл "book_ID.fb2". Может, из дескрипшена брать, пусть даже и на кириллице? Типа "Автор - Название.fb2"?
З.З.Ы. Есть книги, которые вообще невозможно скачать с АТ - потому что размер больше 30 Мб, ну то есть реально много картинок (или автор ненормальный и вложил три штуки, но по 8000 пискселов). Случайно не пробовали в Гризманки на таких?
- Насчет засады в картинках - я это предполагал. На самом деле такая проблема будет не со всеми картинками в книге, а только с теми, что размещены на доменах Author.today, где зачем-то есть такие ограничения.
- Что касается имени файла - я подумаю. Сначала хотел так сделать, но наткнулся на сложности: многие авторы именуют книги довольно небрежно. Я подумал, что скачивающему будет не сложно самостоятельно указать имя файла при сохранении.
- Что касается больших файлов, больше 30Мб - я не знал про такую проблему. Но, думаю, что у моего скрипта проблем быть не должно, т.к. он практически имитирует быстрое последовательное чтение книги. Я могу попробовать, если дадите ссылку на такую книгу. А вообще, я скрипт тестировал на больших книгах тоже, но не по размеру, а по количеству глав.
Рад, что мой скрипт вам понравился.
- Внутри книг, насколько я понимаю, как раз все иллюстрации должны быть размещены у них же на АТ. Может, есть какие-то особенности с "Дополнительными материалами", но они-то внутри книг не прописываются, так что...
Кстати, можно ли и их как-то скачивать? Или отдельно в папку загрузки, или в книгу в самом конце? По ссылке ниже у книги есть таких 5 штук, это карты, ссылки вида https://cm.author.today/content/2022/02/18/w/80efdcb05c2a4f259c5e861befd33361.jpg?width=250&height=420&mode=max
- Тогда и не надо. Главное - чтобы основной функционал работал, ну и ID оставалась. Пусть так и остаётся, как сейчас, всё нормально.
- Их мало. Но есть. Я пару раз видел, ссылки, понятно, не сохранил. Но вот у приведенного выше по ветке https://author.today/work/162582 сейчас 22 Мб, т.е. еще глав 5, и перейдет через рубеж. Ну и если наткнусь на что-то, обязательно сообщу отдельным топиком сюда.
Итак.
Гризманки работает идеально - файл один, структура fb2 в порядке, картинки на своем месте, скриптами обрабатывается. В общем, всё супер.
Огромное, огромное спасибо!Рад, что мой скрипт вам понравился.
Ха! Да кому ж он не понравится!!!
Конечно, хотелось бы и рабочий вариант под Тамперманки получить, все-таки хромиумы у меня основные, а Гризманки только (без танцев с бубном, поставил кликом расширение - и всё) только под Файрфокс.
Хотя еще такой вопрос на удачу, а вдруг вам случайно известно. Раньше в старой Опере было родное "открыть в другом браузере" в контекстном меню, т.е. жмешь, а оно тебе само открывает Файрфокс с этой страницей. В Опере-хромоклоне нету, пользуюсь расширением "Open with", но оно стало у меня подглючивать, да и требует установки дополнительных вещей. Вам что-то известно по этому поводу? Просто и легко открыть из одного браузера любую страницу во всех других браузерах, установленных в системе?
Ну а так, в общем, и всё. Ещё раз спасибо!
Внутри книг, насколько я понимаю, как раз все иллюстрации должны быть размещены у них же на АТ.
Так я и не спорю. Речь была про отдельный поддомен, с которым проблемы (cm.author.today). Я натыкался на иллюстрации, которые были размещены на основном домене. То есть что-то типа https://author.today/content/blablabla. Возможно такое было только в ранних версиях AT, в старых произведениях а потом сделали поддоменом. Ссылок не помню, но я нашел пример. Иллюстрация в этой главе на основном домене, она должна выгрузиться без проблем, если убрать обложку: https://author.today/reader/1113/3086
Кстати, можно ли и их как-то скачивать? Или отдельно в папку загрузки, или в книгу в самом конце?
Я не вижу проблем с их скачиванием и без скрипта. Или речь про удобство? Что касается в конец книги - тут я бы не стал так делать, т.к. там могут быть любые размеры и форматы, в том числе не поддерживаемые читалками. К примеру одна из картинок из вашего примера имеет такие размеры: 2 864×4 288 (12.3MP). С другой стороны это можно сделать опционально.
Конечно, хотелось бы и рабочий вариант под Тамперманки получить
Постараюсь расковырять это в ближайшие дни.
Раньше в старой Опере было родное "открыть в другом браузере" в контекстном меню, т.е. жмешь, а оно тебе само открывает Файрфокс с этой страницей.
Не, не знаю. Я оперой почти не пользовался. Полагаю, что это была фича старого движка Оперы - Presto. А задавать скриптами такое поведение не позволяется ради безопасности.
1. Насчет картинок теперь понял, в чем там нюансы. Единственное, что хочу уточнить - если произойдет какой-то сбой, то можно обеспечить место под такую картинку в конечном файле? Пока не знаю, только начинаю пользоваться, но теоретически боюсь, что если скрипт не тормознётся, а прокачает всё, кроме сбойной картинки, даже одной, то потом в тексте этого просто не поймешь.
Т.е. надо, когда в читалке смотришь книгу, чтобы было заметно, что вот конкретно тут ДОЛЖНА быть картинка. Посмотреть можно легко: сохранить книгу (да хоть статью-страницу сайта какого-нибудь) в html, т.е. будет файл книга.html, а к ней папочка книга_files, последнюю переименовать и удалить, т.е. чтоб они разъединились, а потом снова открыть книгу. В читалках на месте картинок отображаются такие пустые квадратики с крестиком. Очень наглядно и сразу понятно.
Или мои опасения УЖЕ неактуальны, потому что все нормально? Или с картинками, или скрипт именно что 100%-но остановится, как вы написали в шапке?
2. По файлу понятно, действительно, лучше не надо. Только со скачиванием проблемы-то есть - картинок в Доп.материалах может быть и под сотню, сам видел. А кнопочки "скачать архивом" у них же нет. По одной только...
Вот если бы скрипт простейшим образом формировал, как сейчас, один файл - и к нему в дополнение в папку загрузки скачивались бы все эти допы...
В общем, если реализуете, будет просто замечательно. Если нет, то и не страшно. И, кстати, там не только иллюстрации бывают, а еще docx-файлы сам видел, pdf еще зачем-то.
3. Очень жду допиливание под Тамперманки, все-таки она реально основная. Главное, чтобы проблем несовместимости не было!
З.Ы. Также забыл вчера спросить насчет выделения. Сейчас в окошке галками автоматически отмечены все главы. Сделаете кнопку "отметить/снять все"? Например, если сотня глав, и кто-то хочет скачать не всю книгу, а последние 10, которые еще не читал, должен будет вручную отмечать. Чего конечно делать никто не будет. А так отметил себе нужные несколько штук, как правило, в конце, ну и скачал только их - нагрузки на сервер меньше и всё такое, а там ведь вытекающие вообще страшные могут быть вплоть до введения Cloudfare не так, как сейчас для зарубежных IP иногда, а вообще всегда и для всех. Fanfiction.net вон больше года назад ввел, страданий со скачкой до сих пор просто дофига...
Пока не знаю, только начинаю пользоваться, но теоретически боюсь, что если скрипт не тормознётся, а прокачает всё, кроме сбойной картинки, даже одной, то потом в тексте этого просто не поймешь.
Если любая картинка книги не скачается, то скрипт просто остановится с ошибкой, то есть конечного файла вы не получите. По идее скрипт должен сообщить на чем он споткнулся, но как оказалось, я не все предусмотрел. Это правило касается и обложки: если обложка есть, но не будет скачана в результате ошибки, то скрипт остановится. Тот трюк с удалением заставляет скрипт думать, что обложки нет, и скрипт даже не пытается ее скачивать, о чем он и пишет в своем логе.
Вот если бы скрипт простейшим образом формировал, как сейчас, один файл - и к нему в дополнение в папку загрузки скачивались бы все эти допы...
Я понял вашу идею и поддерживаю, это было бы довольно удобно. Только вот у браузера все довольно строго и скрипт не может создавать никакие папочки. Строго говоря, скрипт вообще не имеет доступа к файловой системе, даже файл не сам сохраняет, поручает это браузеру. Как вариант - упаковывать материалы в архив и сохранять их одним файлом zip. Но я не уверен, что смогу создать архив прямо в скрипте, хотя и погуглю.
Сделаете кнопку "отметить/снять все"?
Обязательно сделаю. Это даже может показаться смешным, но сразу я не реализовал это лишь по причине того, что с ходу не придумал, куда эти кнопки сунуть так, чтобы получилось не очень убого :)
По идее скрипт должен сообщить на чем он споткнулся, но как оказалось, я не все предусмотрел.
Я имел ввиду что что скрипт в любом случае остановится, но как оказалось, не обязательно сообщит в чем проблема.
Проблема исправлена в версии 0.3. Обновитесь.
Накатил.
Отлично!
Спасибо огромнейшее!
Совершенно случайно, с этим сайтом не получится ли подобное? https://readli.net
Онлайн-читалка у них есть, только не по целым главам, текст разбивают по каким-то критериям, видимо, по объему.
Вот еще оттуда бы если одним файлом забирать можно было, пусть даже и html...
На всякий пожарный спрашиваю, вдруг там работы сделать свой скрипт минут на 10.
Рад, что скрипт работает не только у меня :)
Совершенно случайно, с этим сайтом не получится ли подобное? https://readli.net
Так с этим сайтом у читателя проблем вообще не должно быть. Он же вообще никак не защищен и ничему не препятствует. А этот скрипт там не подойдет, так как у сайта совсем другой способ общения с сервером. Разве что половину если не треть кода можно приспособить, где конвертация из html в fb2. Т.е. совершенно случайно не получится, а совершенно специально - да. Но для этого время нужно, с чем у меня пока не очень.
Да, всё нормально. Еще осталось только кнопку "отметить/снять все" главы - и вообще идеально будет.
Я в том смысле, что а вдруг это реализуется "на коленке" - собрать в один html сотню-две страниц &pg=1 - &pg=100/200.
Проблема-то как раз есть. EasyRead`ом или просто Ctrl+S - сохранять очень долго и поштучно. Если на АТ книга 30 глав, то 30 раз открыть, 30 раз сохранить, 30 файлов получить. А на readli.net на эти 30 глав - 100 страниц/100 раз/100 файлов, и это прям оптимистично, могут и меньшие отрезки делать.
У них ссылки же довольно стандартные вида:
https://readli.net/chitat-online/?b=1165027&pg=1
https://readli.net/chitat-online/?b=1165027&pg=2
https://readli.net/chitat-online/?b=1165027&pg=11
Все отличия в ID книги, скрипту не надо что-то выискивать, переходить на следующую именно из предыдущей и т.п.: уникальный только номер книги, а потом забирай последовательно &pg=1, &pg=2, &pg=3 и т.д. И конвертировать в fb2 не надо - просто html на выходе, но одна штука.
Спросил на удачу, именно что если это легко и быстро сделать - вдруг вы на коленке соберете. А если там какие-то подводные камни и вообще не так просто, как мне, ни разу не программисту, представляется - тогда, конечно, не надо, вам уже за текущий скрипт по АТ памятник можно ставить, причем в 2 раза шырше стандартного, потому что сам АТ больше 30 Мб скачать банально не даёт, а у EasyRead`ов всегда проблемы/глюки с сохранением картинок.
В общем, всего вам хорошего, еще раз спасибо за скрипт.
Кнопку сделаю. Я в скрипте еще пару косячков нашел, так что обновление будет.
После обновления страницы с оглавлением книги, в блоке слева появится кнопка "Загрузить FB2", почти полностью повторяющая стиль сайта. После ее нажатия, появится диалоговое окно с подтверждением и выбором глав, нажмите и наблюдайте за процессом выгрузки.
Вот до этого момента всё нормально, а далее диалоговое окно зависает. Ждал по несколько минут на разных книгах (где есть подписка и где её нет) везде одно и тоже.