Fazendo o ArcGIS for Desktop reproduzir som no alto-falante quando o modelo é concluído?

16

Gostaria de poder dormir enquanto os Modelos estão sendo executados a maior parte da noite no ArcGIS for Desktop.

Eu gostaria que o ArcGIS for Desktop tocasse um som quando terminasse, para me despertar.

Isso é possível?

Aaron
fonte
3
Gostaria que me enviasse um e-mail, para que talvez a resposta possa incluir os dois (servir uma cerveja seria bom também). Ótimo P.
Se você não sabe, apenas GIS
1
Chr (7) BEL toca um som de alto-falante ... no entanto, se você estiver interessado em apenas um pouco de python, eu poderia ajudar. Não posso ajudar com a cerveja embora.
Michael Stimson
Ah! Um e-mail funcionaria, posso fazer o meu programa de e-mail parecer desativado.
Aaron
5
Eu imagino que uma solução como Rube Goldberg (sp?) Seria a mais apropriada. À medida que o modelo é concluído, um braço de computador mecânico bate no alçapão que libera uma bola que eventualmente deixa cair uma toalha molhada em seu rosto ou similar.
Se você não sabe- apenas GIS

Respostas:

18

Eu realmente gosto da resposta de Aarons, mas algo mais simples e local:

subprocess.Popen([r"C:\Program Files (x86)\Windows Media Player\wmplayer.exe",r"C:\Users\Public\Music\Sample Music\Maid with the Flaxen Hair.mp3"])

o uso do módulo subprocesso faz com que o Windows Media Player abra um arquivo.

import subprocess

wmPlay = r"C:\Program Files (x86)\Windows Media Player\wmplayer.exe"
PlayFile= r"C:\Users\Public\Music\Sample Music\Maid with the Flaxen Hair.mp3"
subprocess.Popen([wmPlay,PlayFile])

Claro que é mais provável que a amostra de música faça você dormir, então algo mais parecido com o meu tom do despertador pode ser mais adequado.

Mas é claro que é tão simples que você pode fazer as duas coisas, basta colocar isso no final do código de Aarons.

Michael Stimson
fonte
1
Excelente ideia! Isso também pode ser facilmente incorporado como uma ferramenta de script.
Aaron
2
Adoro essa ideia de script. Eu sugiro um mp3 como o National Geographic tema da música, ou Onde no mundo está Carmen Sandiego , mas que pode ser um pouco demasiado geeky de mim ...
Erica
O gosto musical de todo mundo é diferente. Eu escolhi uma música que era alta e irritante, pois era mais provável que chamasse atenção. O vôo das Valquírias seria uma excelente opção se você não dormisse nele. Se você estivesse realmente interessado, você pode colocar em um parâmetro do arquivo para ser jogado e obtê-lo relatar de volta com tons curtos em pontos críticos como prova de vida
Michael Stimson
e novamente, eu antecipou sua resposta com um AML 1998 que faz um beep chato;)
Stephen Chumbo
Ha ha @StephenLead, no ArcInfo quase tudo deu um bip irritante. Você poderia ir embora, fazer um café e saber que seu processo ainda estava passando pela cadeia de bipes. Obviamente, isso pressupõe que o alto-falante do sistema esteja instalado.
Michael Stimson
16

Que tal enviar um e-mail a si mesmo quando o modelo terminar? Certifique-se de definir o telefone para emitir um tom ao receber o email enviado pelo script Python anexado. Isso foi projetado para ser executado como uma ferramenta de script no ModelBuilder. Se você não estiver familiarizado com as ferramentas de script, siga estas instruções . Por favor, não que isso esteja configurado para funcionar com o gmail. A ferramenta foi projetada para funcionar da seguinte maneira (observe a pré-condição que anexa a variável bufferedPoints e a ferramenta de script sendEmail):

insira a descrição da imagem aqui


import smtplib, os, arcpy
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email import Encoders

# Fill in the necessary blanks here
gmail_user = sys.argv[1]
gmail_pwd = sys.argv[2]

# The parameters
to = sys.argv[3]
subject = sys.argv[4]
text = sys.argv[5]

def mail(to, subject, text):
    msg = MIMEMultipart()

    msg['From'] = gmail_user
    msg['To'] = to
    msg['Subject'] = subject

    # Attaches a text message to the e-mail
    msg.attach(MIMEText(text))

    mailServer =smtplib.SMTP("smtp.gmail.com", 587)
    mailServer.ehlo()
    mailServer.starttls()
    mailServer.ehlo()
    mailServer.login(gmail_user, gmail_pwd)
    mailServer.sendmail(gmail_user, to, msg.as_string())
    mailServer.close()

mail(to, subject, text)

Instruções para criar a ferramenta de script:

Crie o script

  1. Abra IDLE > Arquivo> Nova Janela
  2. Copie e cole o script nesta postagem para a nova janela
  3. Salvar como> "SendEmail.py"

Crie a ferramenta de script

  1. Clique com o botão direito do mouse em uma pasta> Novo> Caixa de Ferramentas (Aqui é onde a ferramenta de script estará localizada)
  2. Clique com o botão direito do mouse na caixa de ferramentas> Adicionar> Script ...
  3. Preencha Nome, Etiqueta, Descrição e marque "Armazenar caminho relativo ...."
  4. Hit Next
  5. Adicione o script que você criou "SendEmail.py"
  6. Hit Next
  7. Preencha os parâmetros exatamente como na figura em anexo.
  8. Hit Finish
  9. Localize a nova ferramenta na caixa de ferramentas e use-a como faria com qualquer outra ferramenta no ModelBuilder

insira a descrição da imagem aqui

Aaron
fonte
1
@ Michael Miles-Stimson Engraçado coincidência, não há mais muitos de Aaron. Essa ferramenta de script funciona diretamente através do serviço de email e é independente do outlook. No entanto, se o Outlook puder ler seu e-mail e o telefone notificá-lo quando você receber um e-mail via Outlook, ele deverá funcionar perfeitamente.
Aaron
1
Eu trabalho com um Aaron, ele é legal também. Eu estava me referindo a e-mails enviados , essencialmente, eu estaria enviando-me .. mensagem de mim para me enviado do computador de trabalho e leia / notificar no computador de casa em VPN. Outlook pode ser configurado para reproduzir um som quando um e-mail entra.
Michael Stimson
1
ESTÁ BEM. Isso é muito promissor! Eu não entendo muito bem onde colocar meu endereço de e-mail real. Substituo pela frase "gmail_user"? ou essa é a variável? Quais são as coisas "sys.argv [#]"? É aí que eu coloco minhas informações?
Aaron
1
@Aaron sys.argv é a lista que contém os argumentos passados ​​para o script Python na linha de comando. É o equivalente de usar arcpy.GetParameterAsText ( i )
om_henners
3
Se ajudar alguém, eu coloquei até um exemplo essência que mostra como usar a resposta de @ Aaron como um wrapper para notificar sobre o sucesso ou fracasso de um script.
om_henners