- PVSM.RU - https://www.pvsm.ru -

Делаем литературные часы на основе электронной книги

Делаем литературные часы на основе электронной книги - 1

Моя девушка читает книги запоем. Она преподаёт и изучает английскую литературу, поэтому прочитывает в среднем по 80 книг в год.

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

Часы обновляются ежеминутно; например, в 9:23 на Kindle будет написано:

My father met me at the station, the dog jumped up to meet me, missed, and nearly fell in front of the 9.23pm Birmingham express.

[цитата из книги Сью Таунсенд «The Secret Diary & Growing Pains of Adrian Mole Aged 13¾» / прим. перев.]

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

Шаг 1: инструменты и материалы

Делаем литературные часы на основе электронной книги - 2

На самом деле, всё, что нужно – это сама электронная книга (и USB-кабель к ней). Kindle для этого проекта мне пожертвовал мой друг. Это Kindle 3 WiFi (кратко K3 или K3W). На eBay можно найти множество подобных устройств, бывших в употреблении.

Вам понадобится компьютер с любой ОС, с SSH-клиентом, например, vSSH, и клиентом для sFTP, например Filezilla. Поскольку Kindle работает под Linux, опыт работы с этой ОС не помешает.

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

Шаг 2: Джейлбрейк для Kindle

Делаем литературные часы на основе электронной книги - 3

Чтобы превратить Kindle в часы, нужно забраться в его системные файлы. Для этого его надо вскрыть через процесс, известный, как «джейлбрейк» [побег из тюрьмы] (процесс легален, если вы владеете Kindle). Описание и файлы для процесса можно найти на этом сайте [1]. Также оцените список доступного софта [2]. А на этой странице [3] можно узнать, какая у вас модель Kindle.

Для данного проекта потребуется установить только два хака — jailbreak и usbnet [2], без экранной заставки. USBNetwork даст вам удалённый консольный доступ к Kindle, либо по USB, либо по WiFi. Если вы захотите использовать клавиши клавиатуры, вам понадобится хак Launchpad [4].

Предупреждение: дальнейшие действия могут в принципе испортить ваш Kindle. Следуйте инструкциям. Всё, что вы делаете, вы делаете на свой страх и риск.

Когда вы подсоединяете Kindle к компьютеру, он виден вам, как USB-флешка.

Всё, что нужно сделать – поместить файл Update_jailbreak_0.13.N_***_install.bin (где вместо *** стоит версия вашего Kindle – у меня это k3w) в корневой каталог Kindle.

Как написано в файле README, нужно провести безопасное извлечение Kindle, зайти в главное меню читалки, затем в настройки, и там выбрать обновление. Всё должно пройти быстро.

То же самое необходимо проделать с файлами USBNet и Launchpad. После этого у вас должна появиться возможность заходить на устройство по SSH. Для этого нужно подключить Kindle к WiFi. Узнать IP адрес можно, зайдя в настройки WiFi-роутера. Имя пользователя будет root, а пароль вычисляется по модели в онлайн-калькуляторе [5].

Затем необходимо установить на Kindle Python, опять-таки при помощи файлов с прекрасного форума Mobileread.com.

Шаг 3: делаем изображения для каждой минуты дня

Делаем литературные часы на основе электронной книги - 4

В дне 1440 минут. Скомпоновать список цитат для каждой минуты, используя несколько литературных источников – предприятие серьёзное. К счастью, за нас это уже проделали другие.

В 2011 году газета The Guardian попросила читателей присылать им цитаты из книг с упоминанием времени. Им надо было сделать инсталляцию для фестиваля литературы. В результате они выложили две [6] версии [7] списка.

К сожалению, список не покрывал абсолютно все минуты дня. Я это обошёл, используя некоторые цитаты по нескольку раз – к примеру, если цитату можно использовать как до, так и после полуночи. Также можно использовать неточные отсылки ко времени – например, для времени 9:58 я использовал следующий отрывок из книги «Над пропастью во ржи»: «Я спал не слишком долго, потому что проснулся, как я думаю, где-то около десяти часов».

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

В большинстве программ для редактирования изображений весьма просто масштабировать прямоугольник с текстом вручную до нужного размера. Но на создание всех картинок вручную потребовалось бы слишком много работы. Однако и создание скрипта заняло у меня приличное количество времени. Я использовал для этого PHP, поскольку в нём есть удобные функции для работы с текстом), и написал рекурсивную функцию, ищущую наилучший вариант масштаба для каждой цитаты. Для каждой строки скрипт выдаёт два изображения формата PNG — с метаданными, и без них.

Я использовал шрифт Libertine [8] — он кажется мне стильным, в нём есть все необходимые символы, включая диакритические знаки, и потому что он распространяется свободно.

Второй момент, отнявший у меня много времени – распознавание упомянутого в цитатах времени, поскольку я хотел писать их жирным шрифтом. Так проще использовать часы, особенно, когда цитата длинная. Проблема в том, что в книгах используется огромное разнообразие описания времени. '6.00 p.m.', '18:11:00', '0600h', 'around six o'clock', 'at six', 'twenty-eight minutes past eleven', и так далее. Я написал скрипт, который пытается распознать практически все варианты, распознал вручную те, с которыми он не справился, и добавил их в CSV.

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

CSV [9], скрипты [10], изображения [11]

Шаг 4: запуск и остановка часов

Делаем литературные часы на основе электронной книги - 5

Мне хотелось, чтобы я мог запускать литературные часы нажатием клавиш Shift+C на клавиатуре читалки. Повторное нажатие останавливает часы и превращает устройство обратно в электронную книгу.

Сначала нужно создать папку /mnt/us/timelit, и разместить там искрипты.

Изображения идут в /mnt/us/timelit/images и /mnt/us/timelit/images/metadata/

После установки Launchpad появляется папка /mnt/us/launchpad. Создайте в ней новый файл startClock.ini и поместите там следующий текст:

[Actions]
C = !sh /mnt/us/timelit/startstopClock.sh &

Это создаст клавиатурную комбинацию для Shift+C. По нажатию клавиш запускается скрипт для bash, startstopClock.sh. Он останавливает платформу Kindle (нормальный интерфейс), запрещает книге уходить в режим экономии энергии, и создаёт небольшой файл (/mnt/us/timelit/clockisticking), обозначающий, что часы запущены.

При повторном нажатии Shift+C и наличии в системе файла clockisticking, скрипт startstopClock.sh удаляет его и перезапускает систему Kindle.

startstopClock.sh также запускает другой скрипт, showMetadata.sh, включающий комбинации клавиш, показывающие метаданные (командой /usr/bin/waitforkey). Если пользователь нажимает клавишу перелистывания сбоку на Kindle, скрипт проверяет, запущены ли часы, и если они работают, показывает то же изображение, что показано сейчас (а имя изображения хранится в файле clockisticking), но уже с приписанными названием книги и именем автора.

Изменение изображения с каждой минутой делается через добавление строчки к файлу /etc/crontab/root:

* * * * * sh /mnt/us/timelit/timelit.sh

После этого нужно перезапустить crontab: /etc/init.d/cron restart

Каждый раз при запуске timelit.sh проверяет наличие файла clockisticking. В случае наличия он выводит картинку для текущей минуты.

Вероятно, вам нужно будет сменить часовой пояс в файле timelit.sh – там, где стоит 'TZ=CEST'.

Файл timelit.sh [12]

Шаг 5: делаем подставку

Делаем литературные часы на основе электронной книги - 6

Делаем литературные часы на основе электронной книги - 7

Делаем литературные часы на основе электронной книги - 8

Делаем литературные часы на основе электронной книги - 9

Делаем литературные часы на основе электронной книги - 10

Делаем литературные часы на основе электронной книги - 11

Идею сделать подставку из цемента я почерпнул в другой статье [13] с Instructables. Можно было сделать её из дерева (или даже из книги [14]), но мне захотелось попробовать цемент, поскольку я с ним ещё не работал, и поскольку я решил, что серый цвет будет хорошо сочетаться с книгой.

Я вырезал кусочек пенопласта размером с книгу, и добавил место для USB-кабеля. Я обернул его в плёнку и скотч, чтобы цемент потом можно было легко снять. Я приклеил его на дно контейнера для еды двусторонней клейкой лентой.

Затем я замешал цемента достаточно, чтобы заполнить контейнер на 5 см. Возможно, я взял меньше воды, чем надо, поскольку цемент у меня получился гуще, чем я планировал. Надо будет в следующий раз пройти курс работы с цементом [15].

Я накидал цемент в контейнер садовой лопаткой, попримял его немного, и оставил сохнуть на два дня.

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

Шаг 6: дальнейшие идеи

Делаем литературные часы на основе электронной книги - 12

Литературные часы выглядят мило, и викторина работает. Моя девушка периодически проверяет, из какой книги цитата (обычно она угадывает правильно). Подставка получилась не совсем такой, как я хотел, но я уже хочу попробовать сделать другую, лучше.

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

Вместо отдельного подвода питания для лампы, её можно включить в один из слотов [16] для петель Kindle. Два слота нужны для чехлов со встроенной подсветкой. Для этого придётся вскрыть Kindle и заняться пайкой, или сделать собственные металлические зажимы – но результат должен быть красивым. Можно даже подсоединить датчик света [17], чтобы лампа загоралась только, когда темно.

Что я ещё хотел бы добавить:

  • Останавливать часы с 1 до 6 утра, чтобы экономить энергию.
  • Отключать WiFi, но включать его ежедневно на пару минут, чтобы синхронизировать часы.
  • Показывать проценты прошедшей минуты в виде маленьких прямоугольничков внизу – так, как Kindle показывает процент прочтения книги.
  • Показывать предупреждение, когда садится батарея.

Последние два пункта можно сделать, накладывая небольшие изображения поверх больших при помощи команды Kindle eips [18] – загляните в мои скрипты.

Другие возможные идеи:

  • Использовать кнопки Kindle для установки времени.
  • Показывать изображение по умолчанию при старте часов, или когда картинка не найдена.
  • Использовать клавиатурную комбинацию (допустим, shift-Q) для переключения режима викторины.
  • Запускать звук Биг-Бена [19] в начале часа (только днём), поскольку в моём Kindle есть динамик. Ещё можно добавить звук закрытия книги или даже чтения цитаты вслух.

Автор: SLY_G

Источник [20]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/gadzhety/289561

Ссылки в тексте:

[1] на этом сайте: https://wiki.mobileread.com/wiki/Kindle_Screen_Saver_Hack_for_all_2.x,_3.x_%26_4.x_Kindles

[2] список доступного софта: https://www.mobileread.com/forums/showthread.php?t=88004

[3] на этой странице: https://wiki.mobileread.com/wiki/Kindle_Serial_Numbers

[4] Launchpad: https://www.mobileread.com/forums/showthread.php?t=97636

[5] онлайн-калькуляторе: https://www.sven.de/kindle/?

[6] две: https://www.theguardian.com/books/table/2011/apr/21/literary-clock?CMP=twt_gu

[7] версии: https://www.guardian.co.uk/books/booksblog/2011/apr/15/christian-marclay-the-clock-literature

[8] Libertine: http://libertine-fonts.org/show-me/

[9] CSV: https://cdn.instructables.com/ORIG/FX9/QH14/JK4UJKLR/FX9QH14JK4UJKLR.csv

[10] скрипты: https://cdn.instructables.com/ORIG/FYR/7UYW/JK4UL3E8/FYR7UYWJK4UL3E8.zip

[11] изображения: https://cdn.instructables.com/ORIG/FC6/C8RE/JK4UL3EC/FC6C8REJK4UL3EC.zip

[12] Файл timelit.sh: https://cdn.instructables.com/ORIG/F5N/929L/JK4UL39J/F5N929LJK4UL39J.zip

[13] другой статье: https://www.instructables.com/id/DIY-CONCRETE-Concrete-iPad-Stand/

[14] из книги: https://www.instructables.com/id/Book-to-Tablet-Stand/

[15] курс работы с цементом: https://www.instructables.com/class/Concrete-Class/

[16] включить в один из слотов: https://www.instructables.com/id/Kindle-3-DIY-Light/

[17] датчик света: https://www.youtube.com/watch?v=Hz-aZBEX-JA

[18] eips: https://wiki.mobileread.com/wiki/Eips

[19] Биг-Бена: https://ru.wikipedia.org/wiki/%D0%91%D0%B8%D0%B3-%D0%91%D0%B5%D0%BD

[20] Источник: https://habr.com/post/420313/?utm_campaign=420313