Giter VIP home page Giter VIP logo

pushbullet.py's Introduction

Hi there ๐Ÿ‘‹

pushbullet.py's People

Contributors

arilotter avatar bilelmoussaoui avatar blacklight avatar brayra avatar charley-peng avatar chid avatar darwinshameran avatar donm avatar flynnguy avatar foosel avatar gustavokatel avatar jayvdb avatar johnmaguire avatar jonmcalder avatar josephlmulligan avatar jpeeler avatar kiike avatar kovacsbalu avatar kstep avatar mathiasose avatar michaelarnauts avatar mralext20 avatar n3wtron avatar quantumghost avatar r-darwish avatar richard-better avatar saturn avatar sbraz avatar troeggla avatar wecsam avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pushbullet.py's Issues

Python 3.4.2

How do i go about importing this as a module for 3.4.2?

The listener_example does not work

The following listener example does not work:

s = Listener(API_KEY,
                 device_id=DEVICE_ID,
                 on_link=pushed_link,
                 http_proxy_host=HTTP_PROXY_HOST,
                 http_proxy_port=HTTP_PROXY_PORT)

TypeError: init() got an unexpected keyword argument 'on_link'

Because:

(source code)

def __init__(self, account,
                 on_push=None,
                 http_proxy_host=None,
                 http_proxy_port=None):

Removing old versions from PyPi

First off, thanks for making Pushbullet.py, it's awesome.

At Home Assistant we were depending on PushBullet.py 0.7.1 as we had no time yet to upgrade to the latest version. Somehow version 0.7.1 has gone missing from PyPi resulting in an error when people tried to install PushBullet support in Home Assistant.

I don't know if you had a role in removing the version from PyPi. But if you did, could you please be aware in the future that there are probably other projects depending on older versions of your code, thanks!

_init_ crashing when calling decode

using the latest code from the repo (will be testing with release 10)

while initialising the Pushbullet class with my api key decode crashes trying to decode the response from the device list
this is the traceback from the console
File "/Users/oranshuster/PyCharmProjects/naipi/naipi/runner.py", line 150, in main
pb = Pushbullet(API_KEY)
File "build/bdist.macosx-10.11-x86_64/egg/pushbullet/pushbullet.py", line 29, in init
File "build/bdist.macosx-10.11-x86_64/egg/pushbullet/pushbullet.py", line 298, in refresh
File "build/bdist.macosx-10.11-x86_64/egg/pushbullet/pushbullet.py", line 42, in _load_devices
File "build/bdist.macosx-10.11-x86_64/egg/pushbullet/pushbullet.py", line 37, in _get_data
File "/Library/Python/2.7/site-packages/requests/models.py", line 819, in json
return json.loads(self.text, **kwargs)
File "/Library/Python/2.7/site-packages/simplejson/init.py", line 516, in loads
return _default_decoder.decode(s)
File "/Library/Python/2.7/site-packages/simplejson/decoder.py", line 370, in decode
obj, end = self.raw_decode(s)
File "/Library/Python/2.7/site-packages/simplejson/decoder.py", line 400, in raw_decode
return self.scan_once(s, idx=_w(s, idx).end())
simplejson.scanner.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

Please appoint additonal project collaborators

There are several pull requests and open issues which haven't been dealt with for a while. In order to keep this good library relevant, please appoint additional project collaborators.

Use exceptions instead of returning tuples

Returning a success boolean in a tuple is a pattern mostly used by Go developers, not Python. I think that the library should raise exceptions on errors, and the exceptions should contain information about the failure. I don't mind writing the pull request by myself if the author is OK with this suggestion.

Pushbullet doesn't stop sending sms

Hi I wrote a short script to test the sms feature.

But it has kept on sending the same sms for last 1 hour.

`from pushbullet import PushBullet
pb=PushBullet('----')
print pb.devices

device=pb.devices[0]

push = pb.push_sms(device, "---", "Wowza!")`

Send a push and wait for response

So I've just set up a bot that does stuff 24/7, and it currently automates some things, and notifies me when it does via this wonderful library via the wonderful PushBullet. But, there's some things that I'm not sure I know what I want it to do until I see what it has.

Think of a tweet. Tweet from ASpecialTweeter comes in, and I always want to retweet that. But if a tweet comes in from ANotSoSpecialTweeter, I only want to retweet after I've seen the tweet. So, in a perfect World, what I'd love is what you get in the Firefox plugin, but also on mobile, from one of my own tweets.

Basically, if it's at all possible, I'd love to, via the Python library, do something like,

resp = pb.push_interactive_note('Hey seaders, ANotSoSpecialTweeter just tweeted "{}", whatcha wanna do about it?'.format(tweet.text),
                                'Retweet', 'Favourite', onDismiss='Dismiss')
if 'Retweet' == resp:
    twitter.retweet(tweet.id)
....

In my head, the power this would give this side of things would be amazing.

I run more than a few services like this, and being able to have such an easy way to program different things on servers, then ask myself what I want to do, via PB would add an extra dimension of power again.

Python 2.6 policy

@RandomChars, @troeggla, @kovacsbalu

Currently we have no explicit policy regarding Python 2.6 so I think we should vote whether we want to support it or not. If the voting results in a positive answer then we need to add Python 2.6 to Travis and make sure we avoid using language features that aren't compatible with Python 2.6.

My personal opinion is against. Python 2.6 is a rather old version which lacks support of useful features such as dict/set comprehension and multiple context manager (without the use of the nested function). AFAIK it's being used only on CentOS 6. CentOS 6 is also quite an old distribution, although it's considered to be supported until 2020. Personally, I don't think we should support everything that Redhat supports. I also do not support Python 2.6 in pushbullet-cli.

Please cast your vote.

Make Python-magic optional

Python-magic is only needed if your pushing files so it shouldn't be a hardcoded dependency. Also some platforms like Pythonista (iOS app for coding Python) and windows 64 bit don't have an easy of of getting and using Python-magic.

test_auth contacts Pushbullet for testing

I guess this is a question more than an issue. I'd like to help out writing the tests but I'm still wrapping my head around writing tests in python to be honest.

Had a look at the test_auth.py that's already included. From what I have been reading it would seem better if we mocked the call instead of actually called a login to Pushbullet. I wrote some code which I think does the trick but I guess the question is, is this the proper way to mock it out? I notice there's no test_pushbullet yet, so I can't quite see how you would do it properly.

import pytest
import mock
import pushbullet

@mock.patch('pushbullet.Pushbullet._get_data')
class TestAuth(object):

    def test_auth_fail(self, mock__get_data):
        mock__get_data.side_effect = pushbullet.errors.InvalidKeyError()
        with pytest.raises(pushbullet.InvalidKeyError) as exinfo:
            pb = pushbullet.Pushbullet("faultykey")

    def test_auth_success(self, mock__get_data):
        mock__get_data.return_value = { "name" : "Pushbullet Tester" }
        pb = pushbullet.Pushbullet("validKey")
        assert pb.user_info["name"] == "Pushbullet Tester"

If this IS the way to do it and the above is valid, I'd love to see what else I can knock up. Though as I say, literally just getting started in this area!

Cheers,

Problem installing

Trying to install with pip install pushbullet.py and get errors. I have python-magic and requests. Running on Raspberry pi (raspbian).

/usr/bin/pip run on Wed Mar 11 19:36:16 2015
Downloading/unpacking pushbullet.py

  Getting page http://pypi.python.org/simple/pushbullet.py
  URLs to search for versions for pushbullet.py:
  * http://pypi.python.org/simple/pushbullet.py/
  Getting page http://pypi.python.org/simple/pushbullet.py/
  Analyzing links from page https://pypi.python.org/simple/pushbullet.py/
    Skipping link https://pypi.python.org/packages/2.7/p/pushbullet.py/pushbullet.py-0.4.1-py2.py3-none-any.whl#md5=5fdbecf2195ce5009e762c2a91fa6be3 (from https://pypi.python.org/simple/pushbullet.py/); unknown archive format: .whl
    Skipping link https://pypi.python.org/packages/3.4/p/pushbullet.py/pushbullet.py-0.7.0-py2.py3-none-any.whl#md5=c3a7496b32ff8af14af8b0db8b787606 (from https://pypi.python.org/simple/pushbullet.py/); unknown archive format: .whl
    Skipping link https://pypi.python.org/packages/3.4/p/pushbullet.py/pushbullet.py-0.7.1-py2.py3-none-any.whl#md5=a2e4a6b2f64715c0bb264d951ecb1464 (from https://pypi.python.org/simple/pushbullet.py/); unknown archive format: .whl
    Skipping link https://pypi.python.org/packages/3.4/p/pushbullet.py/pushbullet.py-0.8.0-py2.py3-none-any.whl#md5=34c2642c1b57139af44363709a56bc74 (from https://pypi.python.org/simple/pushbullet.py/); unknown archive format: .whl
    Skipping link https://pypi.python.org/packages/3.4/p/pushbullet.py/pushbullet.py-0.8.1-py2.py3-none-any.whl#md5=8f25da4f267d3bc2ae38ec5b2fa37706 (from https://pypi.python.org/simple/pushbullet.py/); unknown archive format: .whl
    Found link https://pypi.python.org/packages/source/p/pushbullet.py/pushbullet.py-0.5.0.tar.gz#md5=36c83ba5f7d5208bb86c00eba633f921 (from https://pypi.python.org/simple/pushbullet.py/), version: 0.5.0
    Found link https://pypi.python.org/packages/source/p/pushbullet.py/pushbullet.py-0.7.0.tar.gz#md5=58f603d1c2fd13dec443b48130bac6bf (from https://pypi.python.org/simple/pushbullet.py/), version: 0.7.0
    Found link https://pypi.python.org/packages/source/p/pushbullet.py/pushbullet.py-0.7.1.tar.gz#md5=fe1cf277f3a91fce5692a5cf923b32c5 (from https://pypi.python.org/simple/pushbullet.py/), version: 0.7.1
    Found link https://pypi.python.org/packages/source/p/pushbullet.py/pushbullet.py-0.8.0.tar.gz#md5=09beddda880c336c2fd693bf147d5ca4 (from https://pypi.python.org/simple/pushbullet.py/), version: 0.8.0
    Found link https://pypi.python.org/packages/source/p/pushbullet.py/pushbullet.py-0.8.1.tar.gz#md5=1e8eccd95062df199830d92a29c57bdf (from https://pypi.python.org/simple/pushbullet.py/), version: 0.8.1
  Using version 0.8.1 (newest of versions: 0.8.1, 0.8.0, 0.7.1, 0.7.0, 0.5.0)
  Downloading pushbullet.py-0.8.1.tar.gz

  Downloading from URL https://pypi.python.org/packages/source/p/pushbullet.py/pushbullet.py-0.8.1.tar.gz#md5=1e8eccd95062df199830d92a29c57bdf (from https://pypi.python.org/simple/pushbullet.py/)
  Running setup.py egg_info for package pushbullet.py

    Traceback (most recent call last):

      File "<string>", line 14, in <module>

      File "/root/build/pushbullet.py/setup.py", line 15, in <module>

        install_reqs = parse_requirements("requirements.txt",  session=uuid.uuid1())

    TypeError: parse_requirements() got an unexpected keyword argument 'session'

    Complete output from command python setup.py egg_info:

    Traceback (most recent call last):

  File "<string>", line 14, in <module>

  File "/root/build/pushbullet.py/setup.py", line 15, in <module>

    install_reqs = parse_requirements("requirements.txt",  session=uuid.uuid1())

TypeError: parse_requirements() got an unexpected keyword argument 'session'

----------------------------------------

Command python setup.py egg_info failed with error code 1 in /root/build/pushbullet.py

Exception information:
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 104, in main
    status = self.run(options, args)
  File "/usr/lib/python2.7/dist-packages/pip/commands/install.py", line 245, in run
    requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle)
  File "/usr/lib/python2.7/dist-packages/pip/req.py", line 1009, in prepare_files
    req_to_install.run_egg_info()
  File "/usr/lib/python2.7/dist-packages/pip/req.py", line 225, in run_egg_info
    command_desc='python setup.py egg_info')
  File "/usr/lib/python2.7/dist-packages/pip/__init__.py", line 256, in call_subprocess
    % (command_desc, proc.returncode, cwd))
InstallationError: Command python setup.py egg_info failed with error code 1 in /root/build/pushbullet.py

Pushing a note does not work since last week

Hi,

I am using this lib to push few notes to devices. Unfortunately since last week it doesn't work. I am not getting any error messages. Could it be some problem with PushBullet Server? Do you face same problem? Please help.

Readme doesn't reflect actual structure of Pushbullet.get_pushes() return value

The readme suggests that Pushbullet.get_pushes() returns a list of pushes. This is not true, however. It actually returns a two-length tuple, in which the first element is True and the second is the list of pushes.

Eg. the function currently returns:

>>>pb.get_pushes()
(True, [push0, push1, push2])

Instead of:

>>>pb.get_pushes()
[push0, push1, push2]

Simply updating the readme to reflect this (or changing the behavior of the function) would fix this. Some documentation of what the True means would be nice, too.

Chat API support

Hi there.

We used this module for pushbullet integration in balloob/home-assistant
Works awesome, keep up the good work!

Noticed that the contact don't seem to work. Result always is an empty list [] (yes, valid contacts in account).
Perhaps im doing something wrong, if so i'd appreciate the feedback :)

from pushbullet import PushBullet
pb = PushBullet('yourkeygoeshere')
pb.contacts

PB integrated in HASS (how we use your module, and a little shameless plug ;) )
https://github.com/balloob/home-assistant/blob/dev/homeassistant/components/notify/pushbullet.py

failure to retreive list of devices

I can retrieve my list of devices like so from the command line:
curl -u key : https://api.pushbullet.com/v2/devices
and I can see that I have two devices with "active":false settings before my active devices. It turns out that pushbullet.py does not seem able to list my devices but returns "tuple index out of range".

from pushbullet import PushBullet
pb = PushBullet(key)
print pb.devices

However, with the yapbl package (and basically the same syntax) this works flawlessly.

Get pushes continuously

Hello,
I had a new problem using pushbullet.py : I want to get push continuously but i'm limited by query limits.
How can i get push everytime like in all pushbullet clients ?

Thanks

(sorry for bad english)

[WinError 193] %1 is not a valid Win32 Applicatyion

I have an issue with Pushbullet.py and Python3.5. When I try to import the module, I get the following error. Is there a reason for this?

image

I have already run pip install pushbullet.py --upgrade and it did not work

Updating existing lists

Is this implemented already, and if so what are the steps to add a single item to an existing list?

Push address does not work

I tried pushing a address with the example code in the readme file

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

This results in this error:

pushbullet.errors.PushError: {"error":{"code":"invalid_param","type":"invalid_request","message":"The param 'type' has an invalid value.","param":"type","cat":"\u003e:3"},"error_code":"invalid_param"}

the send note does work! So I'm sure the settings are right.

Devices does not have an icon

The devices icon value is always None

devices = pb.devices
print(devices[0].icon)

will return a NoneType exception

Setup issue

in setup.py

from pip.req import parse_requirements
...
...
install_reqs = parse_requirements("requirements.txt",  session=uuid.uuid1())

Not include 'session'.
parse_requirements is include ['filename', 'finder', 'comes_from', 'options']

get_channel doesn't work

my_channel = pb.channels[0]
Or retrieve a channel by its channel_tag. Note that an InvalidKeyError is raised if the channel_tag does not exist
my_channel = pb.get_channel('My Channel')

So pb.channels works fine, but pb.get_channel returns an error that pushbullet doesn't have that object. Any idea what might be wrong?

Device ID should be long or int

This line and this one assume the device id is an int. However on my machine my device id's are longs. (Actual identifiers changed, but they are 16 digits long) See below:

pb = PushBullet(api_key)
>>> pb.devices
[Device('apikey1', 1111111111111111), Device('apikey2', 2222222222222222)
>>> pb[1111111111111111]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/path/to/pushbullet/pushbullet.py", line 48, in __getitem__
    raise TypeError("device_id must be an integer")
TypeError: device_id must be an integer
>>> type(int(1111111111111111))
<type 'long'>
>>> import sys
>>> sys.maxint
2147483647

This is because the maxint on my system is smaller then the device_id. A simple fix might be:

if type(query) in (long, int):

# ...

if type(device_id) not in (long, int):

Pushing to channel using tagname

Pushbullet API allows you to send directly to a specific channel by using the channel_tag parameter.
How can this be achieved with pushbullet.py without having to search in the channel list?

Tag Latest Release

I'm using pip and would like to pin the version that is master right now. Could you add a tag for that version? Probably 0.4.2

Validation of API key

_load_devices, _load_contacts and _load_user_info all fail gracefully if the API key is wrong. It would be great if something would blow up so I can notify my users.

Pushing a file - Error

I get following error when trying to push a file:

Traceback (most recent call last):
  File "send.py", line 21, in <module>
    push = phone.push_(apk)
AttributeError: Device instance has no attribute 'push_'

Here is my script:

from pushbullet import PushBullet

api_key = "key"
pb = PushBullet(api_key)

from pushbullet import Device

phone = Device(api_key, id)

with open("my_cool_app.apk", "rb") as apk:
    push = phone.push_(apk)

First i got following error, so i added a "r" before the "b":

Traceback (most recent call last):
  File "send.py", line 20, in <module>
    with open("my_cool_app.apk", "b") as apk:
ValueError: mode string must begin with one of 'r', 'w', 'a' or 'U', not 'b'

I have a sample file called "my_cool_app.apk" in the same folder as the script.

Thanks in advance

Improve fallback when python is unable to import magic module

I use a motioneyeos distribution on a rPi and installed pushbullet.py using easy_install on it

When I try to import pushbullet.py from a custom script, I face the following exception

Traceback (most recent call last):
  File "eventstart.py", line 7, in <module>
    from pushbullet import Pushbullet
  File "/usr/lib/python2.7/site-packages/pushbullet.py-0.10.0-py2.7.egg/pushbullet/__init__.py", line 2, in <module>
    from .pushbullet import Pushbullet
  File "/usr/lib/python2.7/site-packages/pushbullet.py-0.10.0-py2.7.egg/pushbullet/pushbullet.py", line 8, in <module>
    from .filetype import get_file_type
  File "/usr/lib/python2.7/site-packages/pushbullet.py-0.10.0-py2.7.egg/pushbullet/filetype.py", line 12, in <module>
    import magic
  File "build/bdist.linux-armv6l/egg/magic.py", line 150, in <module>
  File "/usr/lib/python2.7/ctypes/util.py", line 242, in find_library
  File "/usr/lib/python2.7/ctypes/util.py", line 235, in _findSoname_ldconfig
IOError: [Errno 10] No child processes

I don't know why magic import fails but it's a very small distribution based on BuildRoot and probably a component required by magic is missing.
I extended the except fallback to IOError to fix the issue:

In filetypes.py

try:
    import magic
except (ImportError, IOError):
    import mimetypes
    get_file_type = _guess_file_type

Possibly out of date information in README

I may very well be wrong, but this section of your README, dealing with sending SMS states This is untested and uses an undocumented API. Use with caution., but I see this section of the pushbullet's API documentation shows how to send SMS.

After reviewing your code in pushbullet/pushbullet.py line 259-275:

    def push_sms(self, device, number, message):
        data = {
            "type": "push",
            "push": {
                "type": "messaging_extension_reply",
                "package_name": "com.pushbullet.android",
                "source_user_iden": self.user_info['iden'],
                "target_device_iden": device.device_iden,
                "conversation_iden": number,
                "message": message
            }
        }

        r = self._session.post(self.EPHEMERALS_URL, data=json.dumps(data))
        if r.status_code == requests.codes.ok:
            return r.json()
        raise PushError(r.text)

It seams as though you are following their documentation to the letter.

Perhaps simply an update to the README is in order, because as far as I can tell, you are correctly using their documented API.

No module named Pushbullet

I'm using pushbullet for the first time and having some trouble. I've installed pushbullet.py but when I do from pushbullet import Pushbullet I get ImportError: No module named pushbullet error.

[kamos@Boxee-Ubuntu-1604]:(4.9kb)~$ python
Python 2.7.11+ (default, Apr 17 2016, 14:00:29)
[GCC 5.3.1 20160413] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from pushbullet import Pushbullet
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named pushbullet
[kamos@Boxee-Ubuntu-1604]:(4.9kb)~$ ls -l /usr/local/lib/python3.5/dist-packages
total 120
drwxr-sr-x  7 root staff  4096 Jul 20 10:59 acdcli
drwxr-sr-x  2 root staff  4096 Jul 20 10:59 acdcli-0.3.1.egg-info
drwxr-sr-x  3 root staff  4096 Jul 20 10:59 colorama
drwxr-sr-x  2 root staff  4096 Jul 20 10:59 colorama-0.3.7.dist-info
drwxr-sr-x  5 root staff  4096 Jul 20 10:59 dateutil
-rw-r--r--  1 root staff   217 Jul 20 10:57 easy-install.pth
-rw-r--r--  1 root staff 31017 Apr  5 02:19 fuse.py
drwxr-sr-x  2 root staff  4096 Jul 20 10:59 fusepy-2.0.4.egg-info
-rw-r--r--  1 root staff  9127 Jun  6 00:52 magic.py
drwxr-sr-x  4 root staff  4096 Jul 20 10:57 pip-8.1.2-py3.5.egg
drwxr-sr-x  3 root staff  4096 Jul 26 14:23 pushbullet
drwxr-sr-x  2 root staff  4096 Jul 26 14:23 pushbullet.py-0.10.0.dist-info
drwxr-sr-x  2 root staff  4096 Jul 26 14:23 __pycache__
drwxr-sr-x  2 root staff  4096 Jul 20 10:59 python_dateutil-2.5.3.dist-info
drwxr-sr-x  2 root staff  4096 Jul 26 14:23 python_magic-0.4.12.egg-info
drwxr-sr-x  4 root staff  4096 Jul 20 10:59 requests
drwxr-sr-x  2 root staff  4096 Jul 20 10:59 requests-2.10.0.dist-info
drwxr-sr-x 10 root staff  4096 Jul 20 10:59 requests_toolbelt
drwxr-sr-x  2 root staff  4096 Jul 20 10:59 requests_toolbelt-0.6.2.dist-info
drwxr-sr-x  4 root staff  4096 Jul 26 14:23 websocket
drwxr-sr-x  2 root staff  4096 Jul 26 14:23 websocket_client-0.37.0.egg-info

Bad argument name in def new_contact

There is an argument in the function new_contact called name, but inside the function you are calling nickname instead of name so using the function causes an error of global variable not defined.

 def new_contact(self, name, email):
        data = {"name": nickname, "email": email}
        r = self._session.post(self.CONTACTS_URL, data=json.dumps(data))
        if r.status_code == requests.codes.ok:
            new_contact = Contact(self, r.json())
            self.contacts.append(new_contact)
            return True, new_contact
        else:
            return False, None

new_device() can be created without a nickname

Found this during some unit testing I was practicing. Reading up about this, it appears the pythonic way is to allow this and leave it up to the user to correctly use the function with specified argument. However, at the moment it will cause failure further down the line as the [IndexError("tuple index out of range") raised in repr()] when it comes to try and print the device using the __repr__ function.

I am not sure of the best or most welcome method to resolve this, so haven't submitted a pull request. I guess it's either making the nickname mandatory (not None) or adjusting the __repr__ function to print nickname, manufacturer + model or a default?

Can't give a pushed file a user-friendly title/subject

Hi,

This is a really handy library - thank you.

One niggle - when I push an image file (at least to an iOS device) the title, as shown in the notification, is the long and very un-userfriendly url of the pushed image. It would be much better if the notification showed, e.g. "Hi - this is the image". It seems this is possible with the pushbullet API (the "veraalerts" plugin for the vera home automation system achieves it) but I can't figure out how to do it with this library. Am I missing something, or would it be possible for you to tweak the library to make this work?

many thanks,

Dan

Avoid using mocks in the tests

Most of our tests use mocks instead of contacting the real Pushbullet. As I said in #63, I don't think that it's such a good idea because our tests will pass even if Pushbullet change the API. As stated in #57, the "contacts" API has been obsolete for a while and our tests didn't detect that breakage.

error when pack via pyinstaller

WARNING: file already exists but should not: C:\Users\megido\AppData\Local\Temp
_MEI100162\Include\pyconfig.h
Traceback (most recent call last):
File "", line 13, in
File "D:\Development\Python\build\main\out00-PYZ.pyz\pushbulle
t", line 69, in getDevices
File "D:\Development\Python\build\main\out00-PYZ.pyz\pushbulle
t", line 42, in _request
File "D:\Development\Python\build\main\out00-PYZ.pyz\requests.
api", line 44, in request
File "D:\Development\Python\build\main\out00-PYZ.pyz\requests.
sessions", line 456, in request
File "D:\Development\Python\build\main\out00-PYZ.pyz\requests.
sessions", line 559, in send
File "D:\Development\Python\build\main\out00-PYZ.pyz\requests.
adapters", line 382, in send
requests.exceptions.SSLError: [Errno 185090050] _ssl.c:343: error:0B084002:x509
certificate routines:X509_load_cert_crl_file:system lib

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.