0 votes

Automator : Décoder la sélection Decode64 et afficher la sortie dans une nouvelle fenêtre TextEdit

Je voudrais afficher un service dans un menu contextuel pour un texte sélectionné qui est une chaîne en base64. Le service doit le décoder en chaîne avec une base64 via le terminal script et afficher une sortie dans une nouvelle fenêtre TextEdit.

J'ai un service dans une application Automator qui a un shell script avec des entrées comme arguments et commande :

"$@" | base64 --decode

Il y a une action connectée "New TextEdit document" au shell script.

Cet écran affiche une fenêtre vide

Si je change la commande en pbpaste | base64 --decode et que je copie une chaîne base64 dans le presse-papiers, le service fonctionne correctement.

Comment canaliser l'argument d'entrée, qui est une chaîne sélectionnée en base64, vers la commande 'base64 --decode' ?

1voto

benwiggy Points 21125

Je sais que la question porte sur TextEdit, mais pour tous ceux qui préfèrent faire cela dans BBEdit, vous pouvez créer un TextFilter pour traiter le texte sélectionné.

#!/usr/bin/python

import sys

def decode64(myString):
    return myString.decode('base64')

input = sys.stdin.read()
print decode64(input)

Si vous voulez utiliser python3, c'est encore plus facile :

#!/usr/local/bin/python3

import sys, base64

input = sys.stdin.read()
print base64.b64decode(input)

Sauvegardez ceci à : ~/Library/Application Support/BBEdit/Text Filters Vous pouvez ensuite y accéder à partir du menu Filtres de texte.

0voto

user3439894 Points 52496

Si votre Automator Service/action rapide est réglé sur, par exemple Le service reçoit le texte sélectionné dans n'importe quelle application / Le flux de travail reçoit du texte dans n'importe quelle application puis dans le Exécuter le Shell script action con Passer les entrées : comme arguments la ligne suivante de code renverra le texte décrypté à un fichier de type e.g. Nouveau document TextEdit action :

Remarque : L'utilisation de conditions séparés par un / est d'indiquer la différence entre Automator avant MacOS Mojave et à partir de là.

base64 --decode <<< "$@"

Comme alternative à l'utilisation du Exécuter le Shell script action et le Nouveau document TextEdit action en utilisant simplement un Exécuter AppleScript action pour accomplir la tâche :

on run {input, parameters}

    set encodedString to input as string

    set decodedString to ¬
        (do shell script "base64 --decode <<<" & encodedString's quoted form)

    tell application "TextEdit" to ¬
        make new document with properties {text:decodedString}

end run

0voto

Ted Wrigley Points 725

Dans Automator, vous pouvez configurer un flux de travail comme suit :

enter image description here

Passez des données base64 à stdin, comme indiqué, et cela décodera les données et les écrira dans la fenêtre TextEdit avant (en ouvrant l'application et la fenêtre, si nécessaire). Cela va écraser le contenu de cette fenêtre ; vous pouvez le configurer pour ajouter à la place, ou ajouter une étape supplémentaire pour ouvrir une nouvelle fenêtre d'abord.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X