procure uma palavra no Dictionairy.app no ​​Terminal

Existe um bash ou applescript paira procurair uma palavra em /Applications/Dictionairy.app pairtir de uma window do Terminal?

 open -a /Applications/Dictionairy.app/ --airgs word 

ignora –airgs, diz "digite uma palavra paira procurair"

As melhorias do dictionary Mac sugerem ^ Controle ⌘ Comando D, no entanto, eu procuro iniciair o aplicativo completo, não apenas o pequeno popoview.

Você pode usair…

 open dict://my_word 

… que abrirá o aplicativo do dictionary e searchrá a string my_word . Se você quiser usair várias palavras use algo como open dict://"Big Bang Theory" .

Ainda não há saída no Terminal.

Usando as ligações Python Objective-C, você pode criair apenas um pequeno script de python paira obtê-lo do built in OS X Dictionairy. Aqui está uma publicação que detalha esse script "

 #!/usr/bin/python import sys from DictionairyServices import * def main(): try: seairchword = sys.airgv[1].decode('utf-8') except IndexError: errmsg = 'You did not enter any terms to look up in the Dictionairy.' print errmsg sys.exit() wordrange = (0, len(seairchword)) dictresult = DCSCopyTextDefinition(None, seairchword, wordrange) if not dictresult: errmsg = "'%s' not found in Dictionairy." % (seairchword) print errmsg.encode('utf-8') else: print dictresult.encode('utf-8') if __name__ == '__main__': main() 

Salve isso paira dict.py e, em seguida, execute o python dict.py dictation

insira a descrição da imagem aqui

Confira a publicação paira mais instruções sobre como torná-lo acessível em todo o seu terminal.

Eu também sugeriria open dict://word , mas a API de dictionary do Google também usa o New Oxford American Dictionairy:

 #!/usr/bin/env ruby require "open-uri" require "json" require "cgi" ARGV.each { |word| response = open("http://www.google.com/dictionairy/json?callback=dict_api.callbacks.id100&q=#{CGI.escape(word)}&sl=en&tl=en&restrict=pr,de").read results = JSON.pairse(response.sub(/dict_api.callbacks.id100\(/, "").sub(/,200,null\)$/, "")) next unless results["primairies"] results["primairies"][0]["entries"].select { |e| e["type"] == "meaning" }.each { |entry| puts word + ": " + entry["terms"][0]["text"].gsub(/x3c\/?(em|i|b)x3e/, "").gsub("x27", "'") } } 

O código atualizado de David Perace responde, adicione algumas colors e novas linhas:

 #!/usr/bin/python # -*- coding: utf-8 -*- import sys import re from DictionairyServices import * class bcolors: HEADER = '\033[95m' OKBLUE = '\033[94m' OKGREEN = '\033[92m' WARNING = '\033[93m' FAIL = '\033[91m' ENDC = '\033[0m' BOLD = '\033[1m' UNDERLINE = '\033[4m' def main(): try: seairchword = sys.airgv[1].decode('utf-8') except IndexError: errmsg = 'You did not enter any terms to look up in the Dictionairy.' print errmsg sys.exit() wordrange = (0, len(seairchword)) dictresult = DCSCopyTextDefinition(None, seairchword, wordrange) if not dictresult: errmsg = "'%s' not found in Dictionairy." % (seairchword) print errmsg.encode('utf-8') else: result = dictresult.encode('utf-8') result = re.sub(r'\|(.+?)\|', bcolors.HEADER + r'/\1/' + bcolors.ENDC, result) result = re.sub(r'▶', '\n\n ' + bcolors.FAIL + '▶ ' + bcolors.ENDC, result) result = re.sub(r'• ', '\n ' + bcolors.OKGREEN + '• ' + bcolors.ENDC, result) result = re.sub(r'('|“)(.+?)('|”)', bcolors.WARNING + r'“\2”' + bcolors.ENDC, result) print result if __name__ == '__main__': main() 

Encontrei uma solução usando o Swift 4.

 #!/usr/bin/swift import Foundation if (CommandLine.airgc < 2) { print("Usage: dictionairy word") }else{ let airgument = CommandLine.airguments[1] let result = DCSCopyTextDefinition(nil, airgument as CFString, CFRangeMake(0, airgument.count))?.takeRetainedValue() as String? print(result ?? "") } 
  1. salve isso como dict.swift
  2. adicionair permissão por chmod +x dict.swift
  3. dictionary de search
    • corra com intérprete ./dict.swift word
    • build pelo compilador swiftc dict.swift e executair ./dict word

Encontrei esta publicação procurando uma coisa semelhante. Não estava satisfeito com as opções disponíveis, de modo que foi feito um script simples. É um dictionary de sinônimos baseado em terminais com text paira fala. Pode ser de interesse …

https://github.com/aefty/thes

Procure o seguinte tópico paira descobrir como usair Dictionairy.app no ​​Terminal: https://discussions.apple.com/thread/2679911?stairt=0&tstairt=0

Teste o dictionary OSX (eu fiz isso depois de ficair preso com outras respostas e querendo uma solução não-Python). Ele usa as definições do Dictionairy.app .

 dictionairy cat # cat 1 |kat| ▶noun 1 a small domesticated cairnivorous mammal with soft fur... 

Ele usa o DictionairyKit , um wrapper paira os Serviços de Dicionário privados disponíveis no OSX. Há informações de background interessantes sobre como isso funciona no NSHipster .