{"id":13419467,"url":"https://github.com/liiight/notifiers","last_synced_at":"2025-12-12T00:54:04.857Z","repository":{"id":37426218,"uuid":"93045038","full_name":"liiight/notifiers","owner":"liiight","description":"The easy way to send notifications","archived":false,"fork":false,"pushed_at":"2025-05-12T17:18:13.000Z","size":1115,"stargazers_count":2703,"open_issues_count":38,"forks_count":105,"subscribers_count":30,"default_branch":"main","last_synced_at":"2025-05-12T18:30:35.701Z","etag":null,"topics":["notification-service","notifications","notifier","pypi","python","python3"],"latest_commit_sha":null,"homepage":"http://notifiers.readthedocs.io/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/liiight.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"custom":"https://paypal.me/notifiers"}},"created_at":"2017-06-01T10:20:18.000Z","updated_at":"2025-05-08T18:50:34.000Z","dependencies_parsed_at":"2024-01-15T03:58:08.470Z","dependency_job_id":"ce32421d-604b-44b7-ae30-d9419c9068c8","html_url":"https://github.com/liiight/notifiers","commit_stats":{"total_commits":489,"total_committers":21,"mean_commits":"23.285714285714285","dds":0.50920245398773,"last_synced_commit":"284ee16b9a07b836164973e5a9f02fd7e0eb3490"},"previous_names":[],"tags_count":27,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liiight%2Fnotifiers","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liiight%2Fnotifiers/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liiight%2Fnotifiers/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liiight%2Fnotifiers/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/liiight","download_url":"https://codeload.github.com/liiight/notifiers/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254043479,"owners_count":22004958,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["notification-service","notifications","notifier","pypi","python","python3"],"created_at":"2024-07-30T22:01:16.454Z","updated_at":"2025-12-12T00:54:04.785Z","avatar_url":"https://github.com/liiight.png","language":"Python","readme":"![Full logo](https://raw.githubusercontent.com/liiight/notifiers/main/assets/images/circle_full_logo.png)\n\n[![Build Status](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2Fnotifiers%2Fnotifiers%2Fbadge%3Fref%3Dmain\u0026style=flat-square)](https://actions-badge.atrox.dev/notifiers/notifiers/goto?ref=master) [![Codecov](https://img.shields.io/codecov/c/github/notifiers/notifiers/master.svg?style=flat-square) ](https://codecov.io/gh/notifiers/notifiers) [![image](https://img.shields.io/gitter/room/nwjs/nw.js.svg?style=flat-square) ](https://gitter.im/notifiers/notifiers) [![PyPi version](https://img.shields.io/pypi/v/notifiers.svg?style=flat-square) ](https://pypi.python.org/pypi/notifiers) [![Supported Python versions](https://img.shields.io/pypi/pyversions/notifiers.svg?style=flat-square) ](https://pypi.org/project/notifiers) [![License](https://img.shields.io/pypi/l/notifiers.svg?style=flat-square) ](https://choosealicense.com/licenses) [![Status](https://img.shields.io/pypi/status/notifiers.svg?style=flat-square) ](https://pypi.org/project/notifiers/) [![Docker build](https://img.shields.io/docker/cloud/build/liiight/notifiers?style=flat-square) ](https://hub.docker.com/r/liiight/notifiers/) [![RTD](https://img.shields.io/readthedocs/notifiers.svg?style=flat-square) ](https://readthedocs.org/projects/notifiers/badge/?version=latest) [![Paypal](https://img.shields.io/badge/Donate-PayPal-green.svg?style=flat-square) ](https://paypal.me/notifiers) [![Downloads](http://pepy.tech/badge/notifiers)](http://pepy.tech/count/notifiers)\n[![Twitter Follow](https://img.shields.io/twitter/follow/liiight.svg?style=flat-square\u0026logo=twitter\u0026label=Follow)](https://twitter.com/liiight) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black) [![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit\u0026logoColor=white)](https://github.com/pre-commit/pre-commit)\n\n\nSee [changelog](http://notifiers.readthedocs.io/en/latest/changelog.html) for recent changes\n\nGot an app or service, and you want to enable your users to use notifications with their provider of choice? Working on a script and you want to receive notification based on its output? You don't need to implement a solution yourself, or use individual provider libs. A one stop shop for all notification providers with a unified and simple interface.\n\n# Supported providers\n\n\n[Pushover](https://pushover.net/), [SimplePush](https://simplepush.io/), [Slack](https://api.slack.com/), [Gmail](https://www.google.com/gmail/about/), Email (SMTP), [Telegram](https://telegram.org/), [Gitter](https://gitter.im), [Pushbullet](https://www.pushbullet.com), [Join](https://joaoapps.com/join/), [Zulip](https://zulipchat.com/), [Twilio](https://www.twilio.com/), [Pagerduty](https://www.pagerduty.com), [Mailgun](https://www.mailgun.com/), [PopcornNotify](https://popcornnotify.com), [StatusPage.io](https://statuspage.io), [iCloud](https://www.icloud.com/mail), [VictorOps (Splunk)](https://www.splunk.com/en_us/investor-relations/acquisitions/splunk-on-call.html), [Notify](https://github.com/K0IN/Notify)\n\n# Advantages\n\n-   Spend your precious time on your own code base, instead of chasing down 3rd party provider APIs. That's what we're here for!\n-   With a minimal set of well known and stable dependencies ([requests](https://pypi.python.org/pypi/requests), [jsonschema](https://pypi.python.org/pypi/jsonschema/2.6.0) and [click](https://pypi.python.org/pypi/click/6.7)) you're better off than installing 3rd party SDKs.\n-   A unified interface means that you already support any new providers that will be added, no more work needed!\n-   Thorough testing means protection against any breaking API changes. We make sure your code your notifications will always get delivered!\n\n# Installation\n\nVia pip:\n```\n$ pip install notifiers\n```\nVia homebrew:\n```\n$ brew install notifiers\n```\nOr Dockerhub:\n```\n$ docker pull liiight/notifiers\n```\n# Basic Usage\n\n```python\n\u003e\u003e\u003e from notifiers import get_notifier\n\u003e\u003e\u003e p = get_notifier('pushover')\n\u003e\u003e\u003e p.required\n{'required': ['user', 'message', 'token']}\n\u003e\u003e\u003e p.notify(user='foo', token='bar', message='test')\n\u003cNotificationResponse,provider=Pushover,status=Success\u003e\n```\n\nOr:\n```python\n\u003e\u003e\u003e from notifiers import notify\n\u003e\u003e\u003e notify('pushover', user='foo', token='bar', message='test')\n\u003cNotificationResponse,provider=Pushover,status=Success\u003e\n```\n\n# From CLI\n\n```text\n$ notifiers pushover notify --user foo --token baz \"This is so easy!\"\n```\n\n# As a logger\n\nDirectly add to your existing stdlib logging:\n\n```python\n\u003e\u003e\u003e import logging\n\u003e\u003e\u003e from notifiers.logging import NotificationHandler\n\n\u003e\u003e\u003e log = logging.getLogger(__name__)\n\n\u003e\u003e\u003e defaults = {\n        'token': 'foo',\n        'user': 'bar'\n    }\n\u003e\u003e\u003e hdlr = NotificationHandler('pushover', defaults=defaults)\n\u003e\u003e\u003e hdlr.setLevel(logging.ERROR)\n\n\u003e\u003e\u003e log.addHandler(hdlr)\n\u003e\u003e\u003e log.error('And just like that, you get notified about all your errors!')\n```\n\n# Mentions\n\n- Mentioned in [Python Bytes](https://pythonbytes.fm/episodes/show/67/result-of-moving-python-to-github) podcast\n\n# Road map\n\n-   Many more providers!\n-   Low level providers (Amazon SNS, Google FCM, OS Toast messages) via `extra` dependencies\n\nSee [Docs](http://notifiers.readthedocs.io/) for more information\n\n# Donations\n\nIf you like this and want to buy me a cup of coffee, please click the donation button above or click this [link](https://paypal.me/notifiers) ☕\n\n# Code of Conduct\n\nEveryone interacting in the Notifiers project's codebases, issue trackers and chat rooms is expected to follow the [PyPA Code of Conduct.](https://www.pypa.io/en/latest/code-of-conduct/)\n","funding_links":["https://paypal.me/notifiers"],"categories":["Python","语言资源库","Install from Source","Logging"],"sub_categories":["python","Notifications"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fliiight%2Fnotifiers","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fliiight%2Fnotifiers","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fliiight%2Fnotifiers/lists"}