Это пост выходного дня про то как сделать command line версию Хабра.
Если ты поклонник минимализма и командной строки, то добро пожаловать под кат.
Идея для создания command line версии Хабра была навеяна комментариями к статье об оптимизации статей с большим количеством комментариев.
И что может быть минимальнее чем командная строка? Так родился скрипт для превращения десктопной версии Хабра в некое подобие терминала с управлением командами.
DISCLAIMER: Хочу сразу предупредить что я не js-ninja и джаваскрипт не мой основной язык разработки, так что не судите строго из-за неоптимального использования конструкций языка.
Также, этот проект создавался как MVP, PoC, JfF и etc. и не ставилось цели реализовать весь возможный спектр функциональности предоставляемый Хабром.
В качестве терминального контрола была использована open-source библиотека JqueryTerminal от Jakub T. Jankiewicz поставляемая по лицензии MIT.
Эта библиотека реализует очень широкий спектр возможностей и если в вашем проекте будет необходимость в подобной функции, я рекомендую обратить пристальное внимание на этот проект, скорее всего все ваши потребности уже реализованы и не потребуется расчехлять кувалду и напильник.
Скрипт предоставляет минимальный набор команд:
ls – просмотр списка статей.
Например:
cd – изменение текущей директории
Список поддерживаемых директорий:
pwd – вывод пути текущей директории
whoami – имя текущего пользователя
more – вывод текстовой версии статьи
Например:
open – открыть статью в новом окне браузера
К сожалению (или к счастью), в силу ограничений накладываемых браузером для обеспечения безопасности пользователя, невозможно сделать демонстрацию без предварительных шагов со стороны пользователя.
Для того чтобы самому испробовать скрипт в действии надо:
1. Открыть исходный код скрипта и скопировать его в буфер обмена (Ctrl-a/Ctrl-c)
2. Открыть Хабр (еще раз повторюсь что этот скрипт работает только для десктоп версии сайта)
3. Находясь на странице Хабра, открыть инструменты разработчика (Ctrl-Shift-I для Хрома) и вставить скрипт из буфера обмена в командную строку консоли и нажать Enter. Скрипт автоматически подгрузит необходимые библиотеки и начнёт исполнение.
Если всё сделано правильно, в том окне где у вас был открыт Хабр, вы увидите нечто подобное:
Есть еще вариант сконфигурировать подгрузку из GreaseMonkey, но этим расширением пользуется достаточно ограниченное количество пользователей и если понадобится, то они вполне смогут разобраться самостоятельно.
Из энтомологического интереса исходный код можно посмотреть в репозитории.
Enjoy.
Если ты поклонник минимализма и командной строки, то добро пожаловать под кат.
Идея для создания command line версии Хабра была навеяна комментариями к статье об оптимизации статей с большим количеством комментариев.
И что может быть минимальнее чем командная строка? Так родился скрипт для превращения десктопной версии Хабра в некое подобие терминала с управлением командами.
DISCLAIMER: Хочу сразу предупредить что я не js-ninja и джаваскрипт не мой основной язык разработки, так что не судите строго из-за неоптимального использования конструкций языка.
Также, этот проект создавался как MVP, PoC, JfF и etc. и не ставилось цели реализовать весь возможный спектр функциональности предоставляемый Хабром.
В качестве терминального контрола была использована open-source библиотека JqueryTerminal от Jakub T. Jankiewicz поставляемая по лицензии MIT.
Эта библиотека реализует очень широкий спектр возможностей и если в вашем проекте будет необходимость в подобной функции, я рекомендую обратить пристальное внимание на этот проект, скорее всего все ваши потребности уже реализованы и не потребуется расчехлять кувалду и напильник.
Скрипт предоставляет минимальный набор команд:
ls – просмотр списка статей.
Например:
cd – изменение текущей директории
Список поддерживаемых директорий:
pwd – вывод пути текущей директории
whoami – имя текущего пользователя
more – вывод текстовой версии статьи
Например:
open – открыть статью в новом окне браузера
К сожалению (или к счастью), в силу ограничений накладываемых браузером для обеспечения безопасности пользователя, невозможно сделать демонстрацию без предварительных шагов со стороны пользователя.
Для того чтобы самому испробовать скрипт в действии надо:
1. Открыть исходный код скрипта и скопировать его в буфер обмена (Ctrl-a/Ctrl-c)
2. Открыть Хабр (еще раз повторюсь что этот скрипт работает только для десктоп версии сайта)
3. Находясь на странице Хабра, открыть инструменты разработчика (Ctrl-Shift-I для Хрома) и вставить скрипт из буфера обмена в командную строку консоли и нажать Enter. Скрипт автоматически подгрузит необходимые библиотеки и начнёт исполнение.
Если всё сделано правильно, в том окне где у вас был открыт Хабр, вы увидите нечто подобное:
Есть еще вариант сконфигурировать подгрузку из GreaseMonkey, но этим расширением пользуется достаточно ограниченное количество пользователей и если понадобится, то они вполне смогут разобраться самостоятельно.
Из энтомологического интереса исходный код можно посмотреть в репозитории.
Enjoy.
mepihin
Интересно было бы увидеть реализацию парсинга текста статьи и отображение ее в консоле
DmitryLTL Автор
Можно увидеть детали в исходниках
В результате массив txt содержит строки для вывода на консоль. Сам вывод реализуется библиотекой, нам остаётся только вызвать term.echo(string_value)
victoriously
del
ris58h
Можно немного облегчить способ запуска скрипта через bookmarklet.
sinc
Надо еще картинки в ASCII-арт переводить, а то скучно без картинок
Cerberuser
Firefox 76 ругнулся на строку
t = t.replace(/(^\s+|\s+$)/gs, '');
— некорректный флаг регулярки. Это мне надо обновиться, или скрипт только для Хрома?DmitryLTL Автор
Можно заменить на t = t.replace(/(^\s+|\s+$)/g, ''); где-то прочитал что флаг s поддерживается в основных браузерах с 2018-ого, а перепроверять не стал.
Cerberuser
Это мне надо обновиться, понял — Firefox его поддерживает только начиная с 78 версии (т.е. с июня текущего года).
eXcNightRider
Не хватает открытия статьи по айдишнику, но это, вероятно, не сложно сделать.
Спасибо за исходник!
osipyanarsen
Интересно)
Кстати, неплохо бы было, если бы сам Хабр такое внедрил.
Если планируете дорабатывать, тогда предлагаю:
— сделать нумерацию статей или переход по ID (показывается, например, в консоли перед названием статьи в скобках)
— зачеркнутый текст выводить с пометкой или что-то другое придумать к ниму (он никак не выделяется в консоли)
DmitryLTL Автор
Оно не представляет ценности и никто не будет в реальной жизни подобного использовать.
Только в качестве развлечения и как дань прошлому, когда из консоли линксом бродил по просторам.
А так конечно идей можно много придумать. Например автодополнение уже фактически из коробки есть, надо только докрутить.
v1000
Lynx
DmitryLTL Автор
Точно, только здесь (для смеха) концепция файловой системы.
Было бы интересно добавить драйвер файловой системы, чтобы можно было подмонтировать /dev/hbr1 на /var/habr и бродить по ней. Почти что дропбокс получается.
algotrader2013
Хабр плохо на концепцию файловой системы ложится. Популярные ФС предполагают единую иерархию, и единый путь к каждому файлу, а хабр, где к одной и той же статье можно перейти через автора, хаб, топ, ключевые слова, и ещё хз как, плохо сюда выкладывается.
Но! Вот sql парсер зашёл бы очень неплохо)
DmitryLTL Автор
Вполне себе укладывается. Если не забывать о существовании hard и symbolic links на файловой системе.
Мне кажется гораздо больше пользы было бы если сделать хорошую категоризацию статей. Даже без AI, если будет инструмент, сообщество сможет за вменяемое время справится с задачей.Это пользователи ленивы что-бы правильно организовавывать множественные иерархии.
Хотя некоторое время назад читал о новых типах, когда организация идёт по тэгам, в том числе автоматическим. Например на фотографии определяются категории объектов и/или имена участников и к одной и той же фотографии можно добраться несколькими путями.
Геймефикацию подтянуть, типа за статью плюс в карму, а если при проверки выявилось что схалтурил — пять в минус. Статью в неделю на человека, через полгода все будут проинвентаризованны, если человек пятьсот подключаться. Потом можно уже будет и по результатам тренинга и автоматом обрабатывать.
Существенно повысился бы уровень поиска и советов по подобным статьям.
pecmapm
Картинки еще в ASCII-графикой отрисовывать :)
Serneu
Такое извращение только на Gentoo ставить.