Siri Shortcut for downloading books from audioknigi.club and akniga.org into iCloud.
Link to actual iOS 13 version in version.json
Итак, Apple анонсировала крутую фичу Команды для автоматизации рутины на iPhone и iPad. А я издавна мучаюсь от неудобства быстро и бесплатно скачать аудиокниги на iPhone/iPad без использования компьютера. Теперь есть решение: AudioKnigi.Club shortcut (Команда) для iOS 12!
Собственно, можно скачать .shortcut-файл из этого репозитория и, следуя инструкции, получится скачивать аудиокниги прямо на iPhone/iPad (с сайта audioknigi.club или его зеркала akniga.org).
Важно: нужно перед загрузкой нажать "Показать оглавление", иначе ничего не скачается.
Если книга закрыта правообладателем, скачать её не получится (будет ошибка "Истекло время ожидания JavaScript").
Перед использованием возникнет такое уведомление о потенциальной зловредности JavaScript-кода
Бояться его не стоит - код я старался оставить там тривиальный. Он НЕ лезет в ваши персональные данные, НЕ крадёт пароли, cookies и т.п.
Код выглядит примерно так:
var gotPlayer = document.getElementsByClassName("plyr")[0]; // нашли на странице плеер
var playlistItems = document.getElementsByClassName("chapter__default"); // нашли на странице список треков
var bookTitle = document.title; // взяли название страницы для того, чтобы использовать в качестве названия книги
bookTitle = bookTitle.replace(". Слушать аудиокнигу онлайн", ""); // в конце названия может быть вот такой лишний текст
var items = []; // здесь будем накапливать данные глав (название файла и url для загрузки)
var min = 0; // можно указать значение больше 0 для пропуска первых min глав
var i = 0;
var max = 1000; // можно указать другое значение для пропуска глав после max
for (let item of playlistItems)
{
i++;
if (item.clientHeight == 0){continue;} // пропускаем первую половину списка
if (i < min){continue;}
if (i > max){continue;}
item.click(); // нажали на трек, чтобы его название и url появился в плеере
var audio = gotPlayer.getElementsByTagName("audio")[0]; // в этом элементе есть название трека и url для загрузки
items.push({"title": audio.title, "url":audio.src});
}
var result = {"bookTitle": bookTitle, "items": items}; // собрали в структуру название книги и данные глав
var json = JSON.stringify(result);
var playerBottom = document.getElementsByClassName("book--bottom")[0]; // взяли элемент под списком воспроизведения
playerBottom.innerHTML = ""; // убрали из него прежние данные (в том числе переключатель "По главам")
var el = document.createElement('textarea'); // создали элемент, из которого можно копировать длинный текст
el.value = json;
el.contentEditable = true;
el.readOnly = true;
playerBottom.appendChild(el); // добавили его под список треков
var button = document.createElement("input");
button.type = "button";
button.value = "Копировать";
button.onclick = function()
{
// Я не javscript-нинзя, но так можно скопировать текст в буфер обмена
var range = document.createRange();
range.selectNodeContents(el);
// select the range
var selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(range);
el.setSelectionRange(0, 999999);
// Собственно, само копирование
document.execCommand('copy');
alert("Скопировано в буфер обмена. Запустите эту команду из списка приложения Команды (а не из Safari)");
};
playerBottom.appendChild(button); // добавили и кнопку под список треков
document.getElementsByClassName("button__player button__player--play")[0].click(); // нажали на кнопку "Пауза", чтобы звук последней галвы не сердил во время загрузки
// Call completion to finish
completion(json);Его прекрасно видно в plist-файле в репозитории. И в самой команде перед запуском.
- В Safari зайти на страницу конкретной книги и нажать
"Показать оглавление". - Нажать поделиться, и выбрать
Команды->AudioBooks.Club - Команда запросит доступ к
bit.ly(для проверки наличия обновлений) и к данным сайта для загрузки файлов книги - не пугаемся и разрешаем доступ - Профит (не сворачивайте Safari до завершения загрузки - иначе работа Команды прервётся и нужно будет начинать с начала)
- "Истекло время ожидания JavaScript"
Возможно, скрипт не успел выполнить все действия click() - хотя почти всю полезную работу успел сделать.
Это можно увидеть по изменившемуся блоку под списком треков. Если там появился текст "{bookTitle:..." - значит, повезло. Смело долго жмём на него и копируем в буфер обмена. Запускаем шорткат ещё раз - но уже из программы Команды. Она считает результат из буфера обмена и сможет скачать аудиокниги даже при свёрнутом Safari (не закрывайте приложение Команды смахиванием, свернуть его можно).
Если блок под списком воспроизведения мешает - его можно легко убрать обновлением страницы.
-
Папки в iCloud/Dropbox создаются - но сами файлы не скачиваются. Возможно, в настройках Safari отключен Javascript (
Настройки->Safari->Дополнения->JavaScript) или Cookies (Настройки->Safari->"Блокировка всех cookie"). Эти технологии необходимы для корректной работы сайта, без них не удастся получить список файлов для загрузки - и, следовательно, загрузить аудиокнигу. Если на сайте не работает воспроизведение книги (и не появляется название главы в строке плеера), возможно, это ваш случай. -
Воспроизведение из iCloud: стандартный плеер не переключается сам между главами и приходится переключать вручную. Решение: использовать Readdle Documents или VLC для воспроизведения аудиокниг из iCloud. Или сохранять через iCloud в Dropbox (можно изменить это в настройках Команды - строка
"Служба") и воспроизводить через плеер, поддерживающий Dropbox.
Начиная с версии 3.1.4 VLC умеет добавлять файлы из iCloud всей папкой.
- Для добавления аудиокниги жмём значёк VLC в верхнем левом углу
Облачные службыОблачные службы(да-да, второй раз)- Имеет смысл выбрать вкладку
"Обзор"внизу - только так доступен выбор все папки - Ищем интересующую нас папку (
Shortcuts->AudioBooks->название книги)
трудности могли настигнуть уже в этот момент из-за того, что стрелочка "Назад" в левом верхнем углу белая на белом. Тем не менее, она там есть. И помогает возвращаться назад до корневой папки. Также работает жест слева направо из-за экрана.
- Сразу за чёрным названием папки следует кнопка
"Выбрать"(её немного видно, если файлов в папке много и чуть-чуть проскроллить) и за ней крайняя правая"Отменить". - Благодаря этому мы переходим в выбор многих файлов или папок (можно воспользоваться кнопкой
"Выбрать все"в левом верхнем углу, она тоже пока белым по белому) "Открыть"(на месте кнопки"Выбрать"сразу за словом"Выбор").- Аудиокнига добавлена, можно наслаждаться.


