Где скачать Краснотал Жернакова, или как программирование помогает в обычной жизни


Я люблю читать и я программист. Мне нечасто удается совместить работу (пусть даже и любимую) и направить её на удовлетворение других потребностей, но в этот раз так получилось. Мне захотелось перечитать давно прочитанную книгу Николая Жернакова «Краснотал». Для этого пришлось написать скрипт на PHP + немного поработать с ABBYY FineReader. Но все получилось, ниже, как я это сделал.

Отказ от ответственности. Инструкция, которую я выкладываю ниже, приведена только в образовательных целях, для демонстрации прикладного программирования полезного в жизни.

Поиск

Итак, когда то в детстве, я читал книгу Николая Жернакова «Краснотал». Читал в бумажном варианте, захотелось перечитать и, к сожалению, нигде в виде fb2 (да и вообще в любом) сразу не нашел, хотя и перешерстил немало интернет-магазинов и электронных библиотек.

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



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

Если посмотреть какие запросы отправляет хром при перелистывании страницы (это можно сделать, например, через Chrome DevTools набор инструментов веб-разработчика, встроенных непосредственно в браузер Google Chrome), то мы увидим, что он запрашивает обычную картинку в формате jpg.



Скачивание

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

copy("домен/kr/2020/20kp003/files/assets/common/page-html5-substrates/page".$page."_3.jpg?uni=4c03b534988c42053a98bf9259dac68b","pages/0012.jpg");
успешно скачала изображение в папку pages на моем сервере. Почему я задействовал php? Ну наверно потому, что это сделать проще всего, к тому же у меня на всех рабочих машинах есть php и xampp (эмулятор сервера для локальной разработки). Теперь остается только найти последнюю страницу (по ответу донора севера – будет 404) – эт о646 и набросать простой цикл для скачивания всех страниц книги Жернакова на наш локальный компьютер или сервер:

ini_set('max_execution_time', 600);

for ($i=1; $i<646; $i++){
	$page = str_pad($i, 4, '0', STR_PAD_LEFT);
	echo $page."<br>";
	copy("домен/irbisdoc/kr/2020/20kp003/files/assets/common/page-html5-substrates/page".$page."_3.jpg?uni=4c03b534988c42053a98bf9259dac68b","pages/".$i.".jpg");	
}
echo "ok";
Ничего сложного в скрипте нет – задаем таймаут (на всякий случай, все же страниц много), добавляем нули если надо перед началом страницы и качаем себе.

Распознавание

Так, теперь у нас ест набор картинок, но опять же неудобно их читать будет. Так как скрины с книги нормального качества то пробуем распознать их через ABBYY FineReader (FineReaderOCR) – и все получается, выдается отличный текст, неотличимый от оригинала (огрехов совсем мало – в основном путается е и с, а также иногда добавляется ненужный апостроф – что совсем некритично).



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



Никаких дополнительных настроек не надо; мой древний планшет с COOl READER на борту сразу подхватил книгу fb2. Вот так просто я нашел книгу Краснотал Жернакова для личного чтения.



Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегизаметки, php, книги, поиск, личное




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Урок 6. Исключения и параллельные циклы C#
План парсинга одного сайта
Овсяное печенье