Skip to main content

A simple python client for pushbullet.com

Project description

https://img.shields.io/travis/randomchars/pushbullet.py.svg?style=flat-square https://img.shields.io/coveralls/randomchars/pushbullet.py.svg?style=flat-square https://img.shields.io/pypi/dm/pushbullet.py.svg?style=flat-square:targethttps://pypi.python.org/pypi?name=pushbullet.py&:action=display https://img.shields.io/pypi/v/pushbullet.py.svg?style=flat-square:targethttps://pypi.python.org/pypi?name=pushbullet.py&:action=display https://img.shields.io/pypi/l/pushbullet.py.svg

This is a python library for the wonderful Pushbullet service. It allows you to send push notifications to Android and iOS devices.

In order to use the API you need an API key that can be obtained here. This is user specific and is used instead of passwords.

Installation

The easiest way is to just open your favorite terminal and type

pip install pushbullet.py

Alternatively you can clone this repo and install it with

python setup.py install

Requirements

  • The wonderful requests library.

  • The magical python-magic library.

Usage

Authentication

from pushbullet import Pushbullet

pb = Pushbullet(api_key)

If your key is invalid (that is, the Pushbullet API returns a 401), an InvalidKeyError is raised.

Pushing things

Pushing a text note

push = pb.push_note("This is the title", "This is the body")

push is a dictionary containing the data returned by the Pushbullet API.

Pushing an address

address = " 25 E 85th St, 10028 New York, NY"
push = pb.push_address("home", address)

Pushing a list

to_buy = ["milk", "bread", "cider"]
push = pb.push_list("Shopping list", to_buy)

Pushing a file

Pushing files is a two part process. First you need to upload the file, and after that you can push it like you would anything else.

with open("my_cool_picture.jpg", "rb") as pic:
    file_data = pb.upload_file(pic, "picture.jpg")

push = pb.push_file(**file_data)

upload_file returns a dictionary containing file_type, file_url and file_name keys. These are the same parameters that push_file take.

The advantage of this is that if you already have a file uploaded somewhere, you can use that instead of uploading again. For example:

push = pb.push_file(file_url="https://i.imgur.com/IAYZ20i.jpg", file_name="cat.jpg", file_type="image/jpeg")

Working with pushes

You can also view all previous pushes:

pushes = pb.get_pushes()

Pushes is a list containing dictionaries that have push data. You can use this data to dismiss notifications or delete pushes.

latest = pushes[0]

# We already read it, so let's dismiss it
pb.dismiss_push(latest.get("iden"))

# Now delete it
pb.delete_push(latest.get("iden"))

Both of these raise PushbulletError if there’s an error.

You can also delete all of your pushes:

pushes = pb.delete_pushes()

Pushing to specific devices

So far all our pushes went to all connected devices, but there’s a way to limit that.

First we need to get hold of some devices.

# Get all devices that the current user has access to.
print(pb.devices)
# [Device('Motorola Moto G'), Device('N7'), Device('Chrome')]

# Select a device from the array using indexing
motog = pb.devices[0]

# Or retrieve a device by its name. Note that an InvalidKeyError is raised if the name does not exist
motog = pb.get_device('Motorola Moto G')

Now we can use the device objects like we did with pb:

push = motog.push_note("Hello world!", "We're using the api.")

Alternatively we can pass the device to push methods:

push = pb.push_note("Hello world!", "We're using the api.", device=motog)

Creating new devices

Creating a new device is easy too, you only need to specify a name for it.

listener = pb.new_device("Listener")

Now you can use it like any other device.

Editing devices

You can change the nickname, the manufacturer and the model of the device:

listener = pb.edit_device(listener, manufacturer="Python", model="3.4.1")
motog = pb.edit_device(motog, nickname="My MotoG")

Deleting devices

Of course, you can also delete devices, even those not added by you.

pb.remove_device(listener)

A PushbulletError is raised on error.

Channels

You can also send pushes to channels. First, create a channel on the Pushbullet website (also make sure to subscribe to that channel). All channels which belong to the current user can be retrieved as follows:

# Get all channels created by the current user
print(pb.channels)
# [Channel('My Channel' 'channel_identifier')]

my_channel = pb.channels[0]

Then you can send a push to all subscribers of this channel like so:

push = my_channel.push_note("Hello Channel!", "Hello My Channel")

Note that you can only push to channels which have been created by the current user.

Contacts

Contacts, which are known as “Chats” in Pushbullet’s terminilogy, work just like devices:

# Get all contacts the user has
print(pb.chats)
# [Chat('Peter' <peter@gmail.com>), Chat('Sophie' <sophie@gmail.com>]

sophie = pb.chats[1]

Now we can use the chat objects like we did with pb or with the devices.:

push = sophie.push_note("Hello world!", "We're using the api.")

# Or:
push = pb.push_note("Hello world!", "We're using the api.", chat=sophie)

Adding new chats

bob = pb.new_chat("Bob", "bob@gmail.com")

Editing chats

You can change the name of any chat:

bob = pb.edit_chat(bob, "bobby")

Deleting chats

pb.remove_chat(bob)

Sending SMS messages

device = pb.devices[0]
push = pb.push_sms(device, "+3612345678", "Wowza!")

Error checking

If the Pushbullet api returns an error code a PushError an __ InvalidKeyError or a PushbulletError is raised. The first __ two are both subclasses of PushbulletError

The pushbullet api documetation contains a list of possible status codes.

TODO

  • More tests. Write them all.

License

MIT license. See LICENSE for full text.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pushbullet.py-0.10.0.tar.gz (8.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pushbullet.py-0.10.0-py2.py3-none-any.whl (8.8 kB view details)

Uploaded Python 2Python 3

File details

Details for the file pushbullet.py-0.10.0.tar.gz.

File metadata

File hashes

Hashes for pushbullet.py-0.10.0.tar.gz
Algorithm Hash digest
SHA256 537d3132e1dbc91e31ade4cccf4c7def6f9d48e904a67f341d35b8a54a9be74d
MD5 24db6917a12e1c9b3fecca102615376b
BLAKE2b-256 7da87fbed382824e84a51dfdc13315d9171fb6dc0670803ccb400931b9e3465b

See more details on using hashes here.

File details

Details for the file pushbullet.py-0.10.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for pushbullet.py-0.10.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 55025eae2757eed4b3d4edc9230e9f3eb88b7dc9b015ef6b8fb5ff02314fd640
MD5 d4d708c80021317e6e837e00fd30bf2b
BLAKE2b-256 c1ffbe81c89411b80cf7c9dc1d5862ed04e11e070cf3c03dc5b7168a54a6be68

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page