Хабрахабр

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

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

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

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

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

[цитата из книги Сью Таунсенд «The Secret Diary & Growing Pains of Adrian Mole Aged 13¾» / прим. перев.]
При этом я устроил всё так, что Kindle можно продолжать использовать как нормальную читалку. Просто если включить часы, она будет работать ещё и как литературная викторина. Часы показывают цитату без названия произведения и имени автора, поэтому о них можно лишь догадываться. А если вам нужно узнать точный ответ, то нажатие на кнопки перелистывания покажет эту информацию.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

CSV, скрипты, изображения

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Файл timelit.sh

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть