¿Hacer que ArcGIS for Desktop reproduzca sonido en el altavoz cuando se complete el modelo?

16

Me gustaría poder dormir mientras los modelos se están ejecutando durante gran parte de la noche en ArcGIS for Desktop.

Me gustaría que ArcGIS for Desktop reproduzca un sonido cuando termine, para despertarme.

es posible?

Aaron
fuente
3
Me gustaría que me enviara un correo electrónico, así que tal vez la respuesta podría incluir ambos (Verter una cerveza también sería bueno). Gran P.
Si no sabes- simplemente GIS
1
Chr (7) BEL reproduce un sonido de altavoz ... sin embargo, si está interesado en un pequeño pitón, podría ayudarlo. Sin embargo, no puedo ayudar con la cerveza.
Michael Stimson
Ah! Un correo electrónico funcionaría, puedo hacer que mi programa de correo electrónico suene apagado.
Aaron
55
Me imagino que una solución similar a Rube Goldberg (sp?) Sería la más adecuada. A medida que el modelo completa una computadora mecánica, el brazo de la computadora golpea la puerta trampa que libera una pelota que finalmente deja caer una toalla mojada en su cara o similar.
Si no sabe, solo GIS

Respuestas:

18

Realmente me gusta la respuesta de Aarons, pero algo más simple y 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"])

El uso del módulo de subproceso hace que Windows Media Player abra un archivo.

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])

Por supuesto, es más probable que la música de muestra te ponga a dormir, por lo que algo más parecido al tono de mi despertador podría ser más adecuado.

Pero, por supuesto, eso es tan simple que podrías hacer ambas cosas, solo agrega eso al final del código de Aarons.

Michael Stimson
fuente
1
¡Excelente idea! Esto también podría incorporarse fácilmente como una herramienta de script.
Aaron
2
Me encanta esta idea de guión. Sugeriría un mp3 como el tema musical de National Geographic , o Where in the World is Carmen Sandiego , pero eso podría ser demasiado geek de mi parte ...
Erica
El gusto musical de cada persona es diferente. Elegí una canción que era ruidosa y molesta, ya que es más probable que llame la atención. Flight of the Valkyries sería una excelente opción si es poco probable que duermas. Si estuviera realmente interesado, podría poner un parámetro del archivo que se reproducirá y volver a informarlo con tonos cortos en puntos críticos como prueba de vida
Michael Stimson
y de nuevo, me adelanté a su respuesta con una AML de 1998 que emite un pitido molesto;)
Stephen Lead el
Ja, ja @StephenLead, en ArcInfo casi todo hizo un pitido molesto. Podrías alejarte y prepararte un café y saber que tu proceso todavía se estaba ejecutando solo por la cadena de pitidos. Por supuesto, esto supone que el altavoz del sistema está instalado.
Michael Stimson
16

¿Qué te parece enviarte un correo electrónico cuando el modelo esté terminado? Asegúrese de configurar su teléfono para que le dé un tono cuando reciba el correo electrónico enviado a través del script de Python adjunto. Está diseñado para ejecutarse como una herramienta de script en ModelBuilder. Si no está familiarizado con las herramientas de script, siga estas instrucciones . Por favor, no esté configurado para funcionar con gmail. La herramienta está diseñada para funcionar de la siguiente manera (tenga en cuenta la condición previa que adjunta la variable bufferedPoints y la herramienta de script sendEmail):

ingrese la descripción de la imagen aquí


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)

Instrucciones para crear la herramienta de script:

Crea el guión

  1. Abra IDLE > Archivo> Nueva ventana
  2. Copie y pegue el script en esta publicación en la nueva ventana
  3. Guardar como> "SendEmail.py"

Crea la herramienta de script

  1. Haga clic derecho en una carpeta> Nuevo> Caja de herramientas (Aquí es donde se ubicará la herramienta de secuencia de comandos)
  2. Haga clic con el botón derecho en la caja de herramientas> Agregar> Script ...
  3. Rellene Nombre, Etiqueta, Descripción y marque "Guardar ruta relativa ..."
  4. Presiona Siguiente
  5. Agregue el script que creó "SendEmail.py"
  6. Presiona Siguiente
  7. Complete los parámetros exactamente como en la figura adjunta.
  8. Hit Finish
  9. Localice una nueva herramienta en la caja de herramientas y úsela como lo haría con cualquier otra herramienta en ModelBuilder

ingrese la descripción de la imagen aquí

Aaron
fuente
1
@ Michael Miles-Stimson Curiosa coincidencia, ya no hay demasiados Aaron's. Esta herramienta de script funciona directamente a través del servicio de correo electrónico y es independiente de Outlook. Sin embargo, si Outlook puede leer su correo electrónico y su teléfono puede notificarle cuando reciba un correo electrónico a través de Outlook, debería funcionar bien.
Aaron
1
Yo trabajo con un Aaron, él también es genial. Me refería a correo electrónico saliente , esencialmente estaría enviando un correo electrónico a mí mismo .. mensaje de que yo envié desde el ordenador del trabajo y leo / notificarle, en casa el equipo VPN. Outlook se puede configurar para reproducir un sonido cuando llega un correo electrónico.
Michael Stimson
1
OKAY. ¡Esto es muy prometedor! No entiendo bien dónde poner mi dirección de correo electrónico real. ¿Lo sustituyo por la frase "gmail_user"? o es esa la variable? ¿Qué son las cosas "sys.argv [#]"? ¿Es ahí donde pongo mi información?
Aaron
1
@Aaron sys.argv es la lista que contiene los argumentos pasados ​​al script Python desde la línea de comandos. Es el equivalente de usar arcpy.GetParameterAsText ( i )
om_henners
3
Si se ayuda a nadie, me he soportado un ejemplo GIST que muestra cómo utilizar la respuesta @Aaron 's como un contenedor para notificar sobre el éxito o el fracaso de un guión.
om_henners