asciinema - запись консоли для screencast
Иногда надо записать действия с терминала в Linux. Можно использовать OBStudio, но это слишком громоздко. Ставим asciinema и наслаждаемся жизнью. позже опубликую
Asciinema сохраняет вывод PTY в памяти вместе с метками времени, включая весь текст и невидимые escape/control последовательности в исходном виде. По окончании записи сохраняется файл в формате asciicast. Он же по умолчанию публикуется в открытом доступе на сайте asciinema.org. Там скринкасты доступны по стандартному URL типа asciinema.org/a/20055. Конечно, дефолтные настройки можно изменить.
Для просмотра используется интегрированный плеер asciinema-player. Во время просмотра такой скринкаст можно поставить на паузу, скопипастить текст, а затем запустить дальше.
Установка и использование Asciinema максимально просты. Установка:
brew install asciinema
Если планируете отправлять скринкасты на сервер, нужно пройти аутентификацию:
asciinema auth
Open the following URL in a browser to register your API token and assign any recorded asciicasts to your profile:
https://asciinema.org/connect/1d80abbc-22fc-19a0-b1a1-a3b69cfa0d0a
Старт записи:
asciinema rec --stdin
После этого записываются все наши действия в консоли, а также дополнительно все нажатия клавиш на клавиатуре (опция --stdin). По окончании записи набираем exit или жмём Ctrl-D.
По умолчанию скринкаст заливается на сервер, прописанный в настройках (например, asciinema.org). Чтобы этого избежать, нужно запускать запись с указанием файла:
asciinema rec [filename]
Впоследствии запись можно залить на сервер вручную:
asciinema upload asciicast.json
Недостаток собственного формата в том, что его не выложишь в открытый доступ, как гифку, а для просмотра требуется отдельный плеер.
Но зато плеер очень маленький, так что asciinema player легко интегрировать в любое приложение как модуль из пакета npm. Ну или интегрировать на сайт, как это сделано на бесплатном хостинге скринкастов asciinema.org.
Просто берём плеер asciinema-player.min.js и загружаем в него записанный скринкаст. В нашем случае это 20055.json:
<head>
<link rel="stylesheet" type="text/css" href="asciinema-player.css" />
</head>
<body>
<div id="player"></div>
<script src="asciinema-player.min.js"></script>
<script>
AsciinemaPlayer.create(
'20055.json',
document.getElementById('player'),
{ cols: 80, rows: 24 }
);
</script>
С точки зрения посетителя, интегрированный плеер выглядит так: