Wird ArcGIS for Desktop nach Abschluss des Modells über den Lautsprecher wiedergegeben?

16

Ich möchte in ArcGIS for Desktop einen Großteil der Nacht schlafen können, während Models ausgeführt werden.

Ich möchte, dass ArcGIS for Desktop nach Abschluss einen Sound wiedergibt, um mich zu wecken.

Ist das möglich?

Aaron
quelle
3
Ich möchte, dass es mir eine E-Mail sendet, daher könnte die Antwort möglicherweise beides enthalten (ein Bier einschenken wäre auch nett). Großartige
Frage
1
Chr (7) BEL spielt einen Lautsprechersound ... aber wenn Sie sich nur für eine kleine Python interessieren, könnte ich Ihnen helfen. Kann nicht mit dem Bier helfen.
Michael Stimson
Ah! Eine E-Mail würde funktionieren, ich kann mein E-Mail-Programm ausschalten.
Aaron
5
Ich stelle mir eine Rube Goldberg (sp?) Ähnliche Lösung vor, die am besten geeignet wäre. Sobald das Modell fertig ist, schlägt ein mechanischer Computerarm gegen eine Falltür, durch die ein Ball freigesetzt wird, der schließlich ein nasses Handtuch auf Ihr Gesicht oder ähnliches fallen lässt.
Wenn Sie nicht wissen, nur GIS

Antworten:

18

Ich mag Aarons Antwort wirklich, aber etwas einfacheres und lokaleres:

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

Wenn Sie das Unterprozessmodul verwenden, wird mit Windows Media Player eine Datei geöffnet.

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

Natürlich werden Sie durch die Beispielmusik eher in den Schlaf versetzt, sodass ein Ton wie mein Wecker möglicherweise besser geeignet ist.

Aber natürlich , dass das so einfach , dass man konnte beides tun, nur tack , dass auf das Ende des Aarons' Code.

Michael Stimson
quelle
1
Exzellente Idee! Dies könnte auch leicht als Skriptwerkzeug eingebaut werden.
Aaron
2
Lieben Sie diese Indexidee. Ich würde ein mp3 wie die vorschlagen , National Geographic Titelmusik oder Wo in der Welt ist Carmen Sandiego , aber das ist vielleicht ein wenig zu geeky von mir ...
Erica
Jeder Musikgeschmack ist anders. Ich habe ein Lied gewählt, das laut und nervig ist, da es eher Aufmerksamkeit erregt. Flight of the Valkyries wäre eine ausgezeichnete Wahl, wenn Sie wahrscheinlich nicht schlafen würden. Wenn Sie wirklich daran interessiert wären, könnten Sie einen Parameter für die abzuspielende Datei eingeben und diese an kritischen Stellen mit kurzen Tönen als Lebensbeweis
zurückmelden lassen
und wieder habe ich Ihre Antwort mit einem 1998 AML vorangestellt , das einen ärgerlichen Piepton macht;)
Stephen Lead
Ha ha @StephenLead, in ArcInfo gab fast alles einen nervigen Piepton von sich. Sie könnten weggehen und einen Kaffee kochen und wissen, dass Ihr Prozess immer noch nur durch die Kette von Signaltönen verläuft. Dies setzt natürlich voraus, dass Ihr Systemlautsprecher installiert ist.
Michael Stimson
16

Wie wäre es, wenn Sie sich eine E-Mail schicken, wenn das Modell fertig ist? Stellen Sie sicher, dass Ihr Telefon einen Signalton ausgibt, wenn Sie die über das angehängte Python-Skript gesendete E-Mail erhalten. Dies soll als Skript-Tool in ModelBuilder ausgeführt werden. Wenn Sie nicht mit Skriptwerkzeugen vertraut sind, befolgen Sie diese Anweisungen . Bitte beachten Sie, dass dies für die Verwendung mit Google Mail konfiguriert ist. Das Tool soll wie folgt funktionieren (beachten Sie die Vorbedingung, die die Variable bufferedPoints und das Skript-Tool sendEmail anfügt):

Bildbeschreibung hier eingeben


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)

Anweisungen zum Erstellen des Skriptwerkzeugs:

Erstellen Sie das Skript

  1. Öffnen Sie IDLE > File> New Window
  2. Kopieren Sie das Skript für diesen Beitrag und fügen Sie es in das neue Fenster ein
  3. Speichern unter> "SendEmail.py"

Erstellen Sie das Skript-Tool

  1. Klicken Sie mit der rechten Maustaste auf einen Ordner> Neu> Toolbox (hier befindet sich das Skript-Tool)
  2. Klicken Sie mit der rechten Maustaste auf die Toolbox> Hinzufügen> Skript ...
  3. Geben Sie den Namen, die Bezeichnung und die Beschreibung ein und markieren Sie "Relativen Pfad speichern ...".
  4. Klicken Sie auf Weiter
  5. Fügen Sie das Skript hinzu, das Sie "SendEmail.py" erstellt haben
  6. Klicken Sie auf Weiter
  7. Füllen Sie die Parameter genau wie in der beigefügten Abbildung aus.
  8. Klicken Sie auf Fertig stellen
  9. Suchen Sie das neue Werkzeug im Werkzeugkasten und verwenden Sie es wie jedes andere Werkzeug in ModelBuilder

Bildbeschreibung hier eingeben

Aaron
quelle
1
@ Michael Miles-Stimson Lustiger Zufall, es sind nicht mehr zu viele Aarons. Dieses Skript-Tool arbeitet direkt über den E-Mail-Dienst und ist unabhängig von Outlook. Wenn Outlook jedoch Ihre E-Mails lesen kann und Ihr Telefon Sie benachrichtigt, wenn Sie eine E-Mail über Outlook erhalten, sollte dies problemlos funktionieren.
Aaron
1
Ich arbeite mit einem Aaron, er ist auch cool. Ich bezog mich auf ausgehende E-Mails , im Wesentlichen würde ich mir selbst eine E-Mail senden . Eine Nachricht von mir an mich wurde vom Arbeitscomputer gesendet und auf dem Heimcomputer über VPN gelesen / benachrichtigt. Outlook kann so konfiguriert werden, dass beim Eingang einer E-Mail ein Sound abgespielt wird.
Michael Stimson,
1
IN ORDNUNG. Das ist sehr vielversprechend! Ich verstehe nicht genau, wo ich meine tatsächliche E-Mail-Adresse angeben soll. Ersetze ich den Ausdruck "gmail_user"? oder ist das die Variable? Was sind die "sys.argv [#]" Dinge? Habe ich dort meine Informationen abgelegt?
Aaron
1
@Aaron sys.argv ist die Liste mit den Argumenten, die über die Befehlszeile an das Python-Skript übergeben werden. Dies entspricht der Verwendung von arcpy.GetParameterAsText ( i )
om_henners am
3
Wenn es jemandem hilft, habe ich ein Beispiel zusammengestellt , das zeigt, wie @Aarons Antwort als Wrapper verwendet wird, um über Erfolg oder Misserfolg eines Skripts zu benachrichtigen.
Om_henners