para mac instalar how descargar python macos osx-mavericks

mac - Notificación post osx de Python



python mac descargar (6)

Usando Python, quiero publicar un mensaje en el Centro de notificaciones de OSX. ¿Qué biblioteca necesito usar? ¿Debo escribir un programa en Object-C y luego llamar a ese programa desde Python?

actualizar

¿Cómo accedo a las características del centro de notificación para 10.9, como los botones y el campo de texto?


Aquí hay una forma (necesitas el módulo Foundation):

from Foundation import NSUserNotification from Foundation import NSUserNotificationCenter from Foundation import NSUserNotificationDefaultSoundName class Notification(): def notify(self, _title, _message, _sound = False): self._title = _title self._message = _message self._sound = _sound self.notification = NSUserNotification.alloc().init() self.notification.setTitle_(self._title) self.notification.setInformativeText_(self._message) if self._sound == True: self.notification.setSoundName_(NSUserNotificationDefaultSoundName) center = NSUserNotificationCenter.defaultUserNotificationCenter() center.deliverNotification_(self.notification) N = Notification() N.notify(_title="SOME", _message="Something", _sound=True)

Esto funciona solo para MAC. ¡Espero que lo disfrutes!


Para una implementación solo de Python, modifiqué el código que alguien publicó como parte de otra pregunta relacionada, y está funcionando bien para mí:

import mmap, os, re, sys from PyObjCTools import AppHelper import Foundation import objc import AppKit import time from threading import Timer from datetime import datetime, date # objc.setVerbose(1) class MountainLionNotification(Foundation.NSObject): # Based on http://.com/questions/12202983/working-with-mountain-lions-notification-center-using-pyobjc def init(self): self = super(MountainLionNotification, self).init() if self is None: return None # Get objc references to the classes we need. self.NSUserNotification = objc.lookUpClass(''NSUserNotification'') self.NSUserNotificationCenter = objc.lookUpClass(''NSUserNotificationCenter'') return self def clearNotifications(self): """Clear any displayed alerts we have posted. Requires Mavericks.""" NSUserNotificationCenter = objc.lookUpClass(''NSUserNotificationCenter'') NSUserNotificationCenter.defaultUserNotificationCenter().removeAllDeliveredNotifications() def notify(self, title, subtitle, text, url): """Create a user notification and display it.""" notification = self.NSUserNotification.alloc().init() notification.setTitle_(str(title)) notification.setSubtitle_(str(subtitle)) notification.setInformativeText_(str(text)) notification.setSoundName_("NSUserNotificationDefaultSoundName") notification.setHasActionButton_(True) notification.setActionButtonTitle_("View") notification.setUserInfo_({"action":"open_url", "value":url}) self.NSUserNotificationCenter.defaultUserNotificationCenter().setDelegate_(self) self.NSUserNotificationCenter.defaultUserNotificationCenter().scheduleNotification_(notification) # Note that the notification center saves a *copy* of our object. return notification # We''ll get this if the user clicked on the notification. def userNotificationCenter_didActivateNotification_(self, center, notification): """Handler a user clicking on one of our posted notifications.""" userInfo = notification.userInfo() if userInfo["action"] == "open_url": import subprocess # Open the log file with TextEdit. subprocess.Popen([''open'', "-e", userInfo["value"]])

Es probable que pueda limpiar las declaraciones de importación para eliminar algunas importaciones innecesarias.


Primero debe instalar terminal-notifier con Ruby, por ejemplo:

$ [sudo] gem install terminal-notifier

Y luego puedes usar este código:

import os # The notifier function def notify(title, subtitle, message): t = ''-title {!r}''.format(title) s = ''-subtitle {!r}''.format(subtitle) m = ''-message {!r}''.format(message) os.system(''terminal-notifier {}''.format('' ''.join([m, t, s]))) # Calling the function notify(title = ''A Real Notification'', subtitle = ''with python'', message = ''Hello, this is me, notifying you!'')

Y ahí tienes:


Pruebe ntfy si también desea que la secuencia de comandos pueda comunicarse con usted a través de otros dispositivos.

Instalación

[sudo] pip install ntfy

donde pip refiere al instalador del paquete de la versión Python objetivo

Para la instalación de Python3:

[sudo] pip3 install ntfy

Uso

Utilizo esta sencilla función para notificaciones sobre ejecuciones de comandos y finalizaciones de descargas:

def notification(title, message): """Notifies the logged in user about the download completion.""" import os cmd = ''ntfy -t {0} send {1}''.format(title, message) os.system(cmd) notification("Download Complete", "Mr.RobotS01E05.mkv saved at /path")

Ventajas de ntfy

  1. Esta herramienta es muy útil ya que registra todas las notificaciones directamente en el Centro de notificaciones en lugar de referirse a otra aplicación de terceros.

  2. Compatibilidad con múltiples backend: esta herramienta se puede conectar a usted a través de cualquier dispositivo a través de servicios como PushBullet, SimplePush, Slack, Telegram, etc. Consulte aquí la lista completa de servicios de back-end compatibles.


Todas las otras respuestas aquí requieren bibliotecas de terceros; este no requiere nada Solo usa una secuencia de comandos de apple para crear la notificación:

import os def notify(title, text): os.system(""" osascript -e ''display notification "{}" with title "{}"'' """.format(text, title)) notify("Title", "Heres an alert")

Tenga en cuenta que este ejemplo no escapa a comillas, comillas dobles u otros caracteres especiales, por lo que estos caracteres no funcionarán correctamente en el texto o título de la notificación.


copia desde: https://gist.github.com/baliw/4020619

siguientes trabajos para mí.

import Foundation import objc import AppKit import sys NSUserNotification = objc.lookUpClass(''NSUserNotification'') NSUserNotificationCenter = objc.lookUpClass(''NSUserNotificationCenter'') def notify(title, subtitle, info_text, delay=0, sound=False, userInfo={}): notification = NSUserNotification.alloc().init() notification.setTitle_(title) notification.setSubtitle_(subtitle) notification.setInformativeText_(info_text) notification.setUserInfo_(userInfo) if sound: notification.setSoundName_("NSUserNotificationDefaultSoundName") notification.setDeliveryDate_(Foundation.NSDate.dateWithTimeInterval_sinceDate_(delay, Foundation.NSDate.date())) NSUserNotificationCenter.defaultUserNotificationCenter().scheduleNotification_(notification) notify("Test message", "Subtitle", "This message should appear instantly, with a sound", sound=True) sys.stdout.write("Notification sent.../n")