Заставить ArcGIS for Desktop воспроизводить звук на динамике после завершения модели?

16

Я хотел бы иметь возможность спать, пока модели работают большую часть ночи в ArcGIS for Desktop.

Я хотел бы, чтобы ArcGIS for Desktop воспроизводил звук по окончании, чтобы разбудить меня.

Это возможно?

Аарон
источник
3
Я хотел бы, чтобы он написал мне по электронной почте, так что, возможно, ответ мог бы включать и то, и другое (налейте пиво, было бы также хорошо). Великий Q.
Если вы не знаете - просто ГИС
1
Chr (7) BEL воспроизводит звук динамика ... однако, если вы заинтересованы в небольшом питоне, я мог бы помочь. Не могу помочь с пивом, хотя.
Майкл Стимсон
Ах! Электронная почта будет работать, я могу отключить мою почтовую программу.
Аарон
5
Я предполагаю, что решение Rube Goldberg (sp?) Будет наиболее подходящим. Когда модель завершает работу, механическая компьютерная рука ударяется о люк, который выпускает шар, который в конечном итоге падает на мокрое полотенце на лице или чем-то подобном.
Если вы не знаете - просто ГИС

Ответы:

18

Мне очень нравится ответ Аарона, но что-то более простое и локальное:

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

использование модуля подпроцесса заставляет проигрыватель Windows Media открывать файл.

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

Конечно, сэмплированная музыка с большей вероятностью усыпляет вас, поэтому что-то более похожее на мой будильник может быть более подходящим.

Но, конечно, это так просто, что вы можете сделать и то и другое, просто прикрепите это к концу кода Аарона.

Майкл Стимсон
источник
1
Отличная идея! Это также может быть легко включено в качестве инструмента-скрипта.
Аарон
2
Люблю эту идею сценария. Я бы посоветовал mp3, как музыкальная тема National Geographic , или « Где в мире Кармен Сандиего» , но это может быть слишком отвратительно с моей стороны ...
Эрика
У всех музыкальный вкус разный. Я выбрал песню, которая была громкой и раздражающей, так как это, скорее всего, привлечет внимание. Бегство Валькирий было бы отличным выбором, если бы вы вряд ли спали. Если вы действительно заинтересованы, вы можете указать параметр файла, который будет воспроизводиться, и отчитаться о нем короткими звуками в критических точках в качестве доказательства жизни
Майкл Стимсон,
и снова я упреждающий ответ с 1998 AML , что делает раздражающий звуковой сигнал;)
Стивен Свинец
Ха-ха, @StephenLead, в ArcInfo почти все издавали раздражающий звуковой сигнал. Вы могли бы уйти и сделать кофе и знать, что ваш процесс все еще идет только по цепи звуковых сигналов. Это, конечно, предполагает, что ваш системный динамик установлен.
Майкл Стимсон
16

Как насчет электронной почты, когда модель будет готова? Убедитесь, что ваш телефон выдает звуковой сигнал при получении электронной почты, отправленной с помощью прилагаемого скрипта Python. Это предназначено для запуска в качестве инструмента-скрипта в ModelBuilder. Если вы не знакомы с инструментами сценариев, следуйте этим инструкциям . Пожалуйста, обратите внимание, что это настроено для работы с Gmail. Инструмент предназначен для работы следующим образом (обратите внимание на предварительное условие, связывающее переменную bufferedPoints и инструмент сценария sendEmail):

введите описание изображения здесь


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)

Инструкция по созданию скрипта инструмента:

Создать скрипт

  1. Откройте IDLE > Файл> Новое окно
  2. Скопируйте и вставьте скрипт в этот пост в новое окно
  3. Сохранить как> «SendEmail.py»

Создать инструмент-скрипт

  1. Щелкните правой кнопкой мыши папку> «Создать»> «Панель инструментов» (здесь будет находиться инструмент-скрипт).
  2. Щелкните правой кнопкой мыши панель инструментов> Добавить> Сценарий ...
  3. Введите имя, метку, описание и отметьте «Сохранить относительный путь ....»
  4. Хит Next
  5. Добавьте созданный вами скрипт «SendEmail.py»
  6. Хит Next
  7. Заполните параметры точно так, как показано на рисунке.
  8. Хит Готово
  9. Найдите новый инструмент в наборе инструментов и используйте как любой другой инструмент в ModelBuilder

введите описание изображения здесь

Аарон
источник
1
@ Майкл Майлз-Стимсон Забавное совпадение, Аарона больше не так много. Этот инструмент-скрипт работает напрямую через службу электронной почты и не зависит от внешнего вида. Однако, если Outlook может читать вашу электронную почту, а ваш телефон может уведомлять вас, когда вы получаете электронную почту через Outlook, она должна работать нормально.
Аарон
1
Я работаю с Аароном, он тоже классный. Я имел в виду исходящей электронной почты , по существу , я бы сам по электронной почте .. сообщение от меня , чтобы я послал с рабочего компьютера и прочитать / уведомит на домашнем компьютере на VPN. Outlook может быть настроен на воспроизведение звука при входящем письме.
Майкл Стимсон,
1
OK. Это очень перспективно! Я не совсем понимаю, где поставить свой фактический адрес электронной почты. Я заменяю это фразой "gmail_user"? или это переменная? Что такое "sys.argv [#]"? Это где я положил свою информацию?
Аарон
1
@Aaron sys.argv - список, содержащий аргументы, передаваемые скрипту Python из командной строки. Это эквивалентно использованию arcpy.GetParameterAsText ( i )
om_henners
3
Если это помогает любому, я мириться примером суть , что показывает , как использовать ответ @Aaron «s в качестве оболочки для уведомления об успехе или неудаче сценария.
om_henners