Zenno в ухе: качаем аудиокниги на GET-запросах.

Ingvar

Client
Регистрация
28.11.2019
Сообщения
34
Благодарностей
23
Баллы
8
128660


0.Вместо введения
Дисклеймер:Все совпадения случайны,скачанные в прикреплённом видео произведения не отрражают вкусовые предпочтения автора за исключением маниакальной любви к хорошему печатному слову а шаблон предоставлен исключительно в познавательных целях.автор не такое унылое г а просто записывал видео из закрепа в 4утра).

Дорогие форумчане,
мое участие в конкурсе это проба пера чтобы почувствовать формат так-сказать и желание поделиться с сообществом чем-то полезным в ответ на тот объем знаний который оно даёт.Пропущу с вашего позволения историю ставшую тут былинной о том как Зенка лежала у меня на печи тридцать лет и три года и потом воспряла на подвиги богатырские,собственно так оно и было.

С возрастом и увеличением очковых диоптрий я стал очень избирателен к тому на что потратить оставшийся глазной ресурс и в мою жизнь плотно вошли аудиокниги.Разумно рассудив что глаза Гомера не так часто сочетаются с ушами Бетховена я начал яростно эксплуатировать ушной ресурс потребляя печатное слово в звуке,после недолгих усилий нашел для себя сайт "книга в ухе" удовлетворяющий потребности в контенте онлайн.Но как обычно не бывает без но.По роду деятельности путешествуя по необъятной -автомобилем,поездом самолётом,столкнулся с тем что мобильный интернет зачастую очень дискретная штука что сказывается на качестве прослушивания и крадёт очарование повествования,плюс есть грех- я рыболов и оч приятно в глуши посидеть с удой под хорошую книжечку и апперетив, ну а там-то уж без связи.Поэтому Зенка и в ухе и в ухЕ так сказать и было решено книги качать.Для чего написан шаблон который меня выручает ,его я и представляю.

1.Функционал шаблона

Этот шаблон выполнен на основе GET-запросов и позволяет скачивать последовательно любое количество аудиокниг, ссылки на которые вы поместите в файл donor txt , с сайта: https://knigavuhe.org Скачанные книги будут размещены в директориях с английским названием и снабжены файлом с кратким содержанием произведения.
2.Список переменных
Сам шаблон состоит из следующих переменных:
Переменная get, это переменная в которую парсится содержимое страницы,
Переменная link-переменная в которую кладется ссылка на скачивание.
Переменная result - это Переменная в которую кладется скачиваемый файл
Пременная count -это переменная счетчик, в книгах которые мы скачиваем в может быть больше одной части и соответственно книга может быть разбита на несколько файлов.
Переменная directoryname — это переменная, в которую впоследствии складывается аудиокнига.
Переменная text — это переменная, в которой будет лежать аннотация книги в текстовом файле.
Переменная— filename — это название книги и ее автора на русском языке.
Переменная startlink — это переменная, с которой собственно стартует шаблон, эта переменная берется из списка.
Переменная bookbuy- это переменная проверки на содержание платного контента на странице, потому что на этом сайте не все книги бесплатные.
128691



3.Логика действий шаблона
Так как шаблон выполнен на GET-запросах, в настройках проекта изначально включена :галочка «Не использовать браузер»
128688


Пройдемся по кубикам шаблона:
Кубик «Получить строку» содержит список input, в которые попадают ссылки на скачивание из файла, который находится в директории проекта, который называется Donor.txt.
128686

Соответствующий список будет находиться в списках шаблона. Данные из списка Input попадают в переменную StartLink.
Паузы в проекте несут технический характер и с ними можно экспериментировать, удалять их или наоборот увеличивать в зависимости от необходимости. Далее мы переходим на гет-запрос.
GET-запрос мы можем собрать с помощью фидлера, либо информацию о запросе получить непосредственно в Зеннопостере вот в таком виде она представлена
128687

.
Додополнительные вкладки в кубике запроса не используются, proxy тоже, далее после того как мы как спарсили запросом содержимое страницы, мы делаем проверку регулярным выражением на платный контент, соответственно составив определенную регулярку с помощью тестера регулярных выражений.
128689


Если мы возьмем это регулярное выражение, поставим в тестер, а содержимое страницы скопируем и загрузим, мы можем проверить наличие или отсутствие информации, удовлетворяющей тексту данного регулярного выражения.
128690


В данном случае мы парсили со страницы, на которой нет платного контента, таким образом, следующим действием мы переходим на логический оператор, который проверяет наличие текста:"Слушать полностью"
128675

Если такой текст отсутствует, то шаблон идёт дальше работать по кубикам. Если такой текст присутствует, то мы получаем оповещение влог о наличии платного контента и завершаем шаблон переходя на скачивание следующей страницы.
128692


Если следующей страницы нет, то шаблон отрабатывает оповещение кончились доноры для скачивания и заканчивает работу..Дальше пройдемся по регулярным выражением, которые помогут нам собрать информацию со страницы.
В первой регулярке мы парсим имя директории для загрузки. Регулярное выражение включает в себя название книги на английском языке.
128676

Впоследствии по этому регулярному выражению будет создана директория загрузки. В данном случае это directoryname героя невидимого фронта. После этого мы парсим со страницы все ссылки на скачивание, опять же создав регулярное выражение с с помощью тестера регулярных выражений.
128677

Мы парсим все ссылки и кладем в переменную линк, из которой ссылки впоследствии будут браться в цикл, если их больше одной, и удаляться. Дальше мы парсим текст аннотации книги, то есть шаблон подразумевает, что в каждой директории с mp3 файлом.будет лежать информация о книге, чтобы можно было ее прочитать и принять решение слушать ее или нет.
128678


Продолжаем. После парсинга аннотации книги Мы берем регуляркой название книги и автора на русском языке и кладем в переменную filename.
После этого ее содержимое станет именем файла, в котором содержится аннотация.
128681

Затем мы получаем количество ссылок для скачивания и кладем в переменную count, для того чтобы позднее инициировать счетчик.
128682

После этого создаём поддиректорию проекта с именем из переменной directoryname в которую будет скачана аудиокнига.
Далее мы получаем строку для загрузки файла и кладём её в переменную link.
128683

Регулярным выражением мы убираем бэкслэши, так как изначально строка содержит в своём тексте ряд бэкслэшей, которые препятствуют скачиванию. Поэтому, с помощью регулярного выражения, точнее, с помощью функции замена, мы убираем бэкслэши по всему тексту строки и кладём обратно в link
128674


Дальше, происходит скачивание с помощью get-запроса. Хочу обратить внимание, что-необходимо будет выбрать во вкладке опцию грузить как файл и кладем полученное в переменную result
128673


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


После этого мы записываем текст в файл, используя для этого директорию проекта и в качестве поддиректории, используя то название книги, которая мы скачали ранее, то бишь переменную директорию name.
128671


Соответственно названием файла будет тот текст на русском, который лег в переменную файл name.
После чего выводим в лог оповещение о успешном скачивании книги.
128669


Далее проект отрабатывает обратно в переменную -получить строку.Если строка в переменной есть, цикл повторяется. Если строка отсутствует, то проект закрывается, выдавая сообщение оповещением-окончились доноры для скачивания. В финальном виде готовые файлы выглядят так.
128668


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

4.Вместо послесловия
Благодарю читателей за то что осилили мой опус,извините за ошибки и помарки так как я редачил его с планшета в околоспартанских условиях, а команде Зеннолаба спасибо за возможность участия и достойный продукт.Надеюсь мой шаблон поможет сэкономить ваше время и принесёт пользу,всем стопроцентного зрения!!!
 

Вложения

heks

Client
Регистрация
01.10.2013
Сообщения
1 222
Благодарностей
328
Баллы
83
думал что то будет сверх естественное))) ни куков ни токенов ни каких нет.
 

Вложения

  • Спасибо
Реакции: Ingvar

Ingvar

Client
Регистрация
28.11.2019
Сообщения
34
Благодарностей
23
Баллы
8
думал что то будет сверх естественное))) ни куков ни токенов ни каких нет.
С удовольствием посмотрю Ваш вариант как вернусь в цивилизацию ,мой отрабатывает без Кук и без токена авторизации.но всегда можно улучшить,
 

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
773
Благодарностей
517
Баллы
93
думал что то будет сверх естественное))) ни куков ни токенов ни каких нет.
Задача шаблона получить книгу, если он с ней справляется без кук и токенов это больше плюс чем минус.
 
  • Спасибо
Реакции: Ingvar

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)