Asciinema: Quantification du temps

Créé le 20 mai 2016  ·  7Commentaires  ·  Source: asciinema/asciinema

Sur la base du #156 qui a été récemment fusionné, je souhaite proposer la fonctionnalité suivante : l'option --max-wait pourrait prendre une séquence de limites d'attente maximales (ou il pourrait y avoir une autre option pour cela). Par exemple:

asciinema rec -w 0.4 0.8 1 3

(le format est discutable, probablement quelque chose avec un séparateur sans espace est meilleur/plus facile à analyser : 0.4,0.8,1,3 )

Cela voudrait dire que

  • les retards entre 400ms et 800ms sont réduits à 400ms
  • les délais entre 800ms et 1s sont réduits à 800ms
  • les temporisations entre 1s et 3s sont réduites à 1s
  • les délais de plus de 3s sont réduits à 3s (comme avec le max-wait valeur unique)

Cela permettrait de faire quelques ajustements supplémentaires au flux temporel de l'enregistrement, comme minimiser les retards de frappe (le rendant plus fluide), tout en étant capable de faire des pauses courtes et longues (pour signaler quelque chose).

Que pensez-vous de cette fonctionnalité ? Je pense que ce n'est pas difficile à faire et je pourrais le mettre en œuvre.

idea

Commentaire le plus utile

Salut @laughedelic ,

J'avais à peu près les mêmes exigences que les vôtres, j'ai donc fini par créer ce https://github.com/cirocosta/asciinema-edit

Il prend un casting asciinema (v2), puis mute le flux d'événements en fonction de vos besoins.

Je viens de finir d'ajouter la quantification de la manière que vous avez décrite, d'ailleurs

J'espère que cela vous sera utile !

THX!

Tous les 7 commentaires

@sickill une opinion à ce sujet?

C'est une idée intéressante. J'ai le sentiment que cela serait utilisé par un très petit nombre d'utilisateurs. -w tel qu'il est aujourd'hui est déjà très utile mais d'après ce que je sais, peu de gens l'utilisent - les gens n'utilisent que les valeurs par défaut.

Je suis sur la clôture ici... D'un côté j'aime beaucoup l'idée, de l'autre je sais que cela ajouterait pas mal de code, du code qui devra être maintenu pour probablement 1% des utilisateurs (prouvez-moi le contraire quant aux devis ici ;))

Et ça:

J'ai eu cette idée pendant un certain temps de créer un ensemble séparé d'outils pour le traitement des asciicasts. Des trucs comme l'accélérer 2x, appliquer l'algorithme -w au fichier asciicast déjà enregistré, localiser + effacer du texte arbitraire (mots de passe visibles).

Nous pourrions avoir un mécanisme pour ajouter des commandes supplémentaires à asciinema , fait de la même manière que dans git - lorsque vous exécutez asciinema foo il vérifie si foo est son commande interne, sinon elle recherche le binaire asciinema-foo dans $PATH et l'exécute à la place. Vous pouvez écrire des commandes supplémentaires dans n'importe quelle langue.

Ayant ci-dessus, nous pourrions créer asciinema-quantize , ou plus général asciinema-process , qui pourrait prendre en charge divers commutateurs (comme amélioré -w , peut-être -s pour changer la vitesse du enregistrement complet). Il lirait le json d'entrée, le traiterait en fonction des options et écrirait le json de sortie. S'il s'agissait d'une commande populaire, elle pourrait être promue en commande interne (ou être expédiée dans des packages asciinema sous forme de binaires asciinema-* ).

Je suis ouvert à d'autres suggestions !

En fait, je pensais à la même chose : le faire en externe, en traitant simplement le fichier d'enregistrement json. L'autre chose est que je n'ai pas beaucoup de temps en ce moment pour apprendre Go, mais si cette intégration de commandes externes fonctionnait avec n'importe quel exécutable nommé par la convention, cela pourrait rendre l'extension d'asciinema beaucoup plus facile.

Au fait, je suppose que vous connaissez asciinema2gif qui est très utile et fonctionne. J'ai vu des discussions ici sur la conversion gif et que ce n'est pas dans les plans, et je le comprends parfaitement, mais comme les utilisateurs peuvent avoir des besoins différents, une telle extensibilité pourrait être un très bon moyen de permettre aux utilisateurs de répondre eux-mêmes à leurs besoins spécifiques.

Heureux d'entendre une opinion similaire. Connaissez-vous mieux Python ? Dans quel langage implémenteriez-vous cela ?

@sickill bien, en fait, j'utilisais jq avec des filtres primitifs jusqu'à présent. Par exemple:

jq '.stdout |= map(.[0] *= 0.5)' record.json > record.twice-faster.json

Produira un json qui sera joué par asciinema play deux fois plus vite. Ou

jq '.stdout |= map(.[0] |= ([., 1.234] | min))' record.json > record.cut.json

revient à régler max-wait time sur 1.234 . Je ne suis pas un jq-gourou, donc cela peut probablement être fait plus facilement, mais c'est assez simple (si l'on est familier avec jq en général) et cela fonctionne. L'implémentation de la fonctionnalité de quantification temporelle proposée de cette manière est un peu plus complexe, mais aussi triviale.

Cela peut être, bien sûr, encapsulé dans n'importe quel type de script shell avec des options spécifiées. Mais si vous souhaitez plus d'intégration, cela peut également être fait d'une manière _très similaire_ en utilisant JMESPath , qui a diverses implémentations, notamment Python et Go.

Salut @laughedelic ,

J'avais à peu près les mêmes exigences que les vôtres, j'ai donc fini par créer ce https://github.com/cirocosta/asciinema-edit

Il prend un casting asciinema (v2), puis mute le flux d'événements en fonction de vos besoins.

Je viens de finir d'ajouter la quantification de la manière que vous avez décrite, d'ailleurs

J'espère que cela vous sera utile !

THX!

Salut @cirocosta ! Merci de m'avoir cinglé ! C'est génial que vous en ayez fait un outil et qu'il fonctionne avec le format v2. J'essaierai la prochaine fois que j'enregistrerai un casting asciinema.

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

ThomasWaldmann picture ThomasWaldmann  ·  3Commentaires

pfalcon picture pfalcon  ·  4Commentaires

maphew picture maphew  ·  12Commentaires

omaraboumrad picture omaraboumrad  ·  10Commentaires

lebinh picture lebinh  ·  3Commentaires