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->название книги
)
трудности могли настигнуть уже в этот момент из-за того, что стрелочка "Назад" в левом верхнем углу белая на белом. Тем не менее, она там есть. И помогает возвращаться назад до корневой папки. Также работает жест слева направо из-за экрана.
- Сразу за чёрным названием папки следует кнопка
"Выбрать"
(её немного видно, если файлов в папке много и чуть-чуть проскроллить) и за ней крайняя правая"Отменить"
. - Благодаря этому мы переходим в выбор многих файлов или папок (можно воспользоваться кнопкой
"Выбрать все"
в левом верхнем углу, она тоже пока белым по белому) "Открыть"
(на месте кнопки"Выбрать"
сразу за словом"Выбор"
).- Аудиокнига добавлена, можно наслаждаться.