All Projects → eddelbuettel → Rpushbullet

eddelbuettel / Rpushbullet

R interface to the awesome Pushbullet service

Programming Languages

r
7636 projects

Projects that are alternatives of or similar to Rpushbullet

Centrifuge
Real-time messaging library for Go with scalability in mind
Stars: ✭ 446 (+430.95%)
Mutual labels:  json, messaging
Blooddy crypto
ActionScript (AS3) library for processing binary data. This library contains MD5, SHA-1, SHA-2 ( SHA-224 и SHA-256 ), Base64, CRC32 algorithms, JSON encoder & decoder as well as PNG and JPEG encoders.
Stars: ✭ 83 (-1.19%)
Mutual labels:  json
Json Stat
JSON-stat Toolkit version 0
Stars: ✭ 79 (-5.95%)
Mutual labels:  json
Perun
A command-line validation tool for AWS Cloud Formation that allows to conquer the cloud faster!
Stars: ✭ 82 (-2.38%)
Mutual labels:  json
Emfjson Jackson
JSON Binding for Eclipse Modeling Framework
Stars: ✭ 79 (-5.95%)
Mutual labels:  json
Mongoose Patch History
Mongoose plugin that saves a history of JSON patch operations for all documents belonging to a schema in an associated 'patches' collection
Stars: ✭ 82 (-2.38%)
Mutual labels:  json
Go Nulltype
Null friendly types
Stars: ✭ 79 (-5.95%)
Mutual labels:  json
Cesium
cesium demo,cesium 研究过程中资料整理,包括: 1、示例,提供常规的cesium示例以及综合性的业务示例 2、工具,整理研究过程中写的一些数据获取、处理、分析的工具,例如网络3dtiles数据爬虫工具、b3dm 转 gltf工具 3、插件,根据研究过程中cesium感觉使用不方便的地方,添加插件,包括针对显示控件的汉化中文语言插件等
Stars: ✭ 84 (+0%)
Mutual labels:  json
Signal Windows
Unofficial Signal Private Messenger for Windows
Stars: ✭ 83 (-1.19%)
Mutual labels:  messaging
Waargonaut
JSON decoding/encoding/manipulation library.
Stars: ✭ 82 (-2.38%)
Mutual labels:  json
Google Sheet S3
Google Apps Script that publishes a Google Sheet to Amazon S3 as a JSON file. Auto-updates on edit & maintains data types. Creates an array of objects keyed by column header.
Stars: ✭ 81 (-3.57%)
Mutual labels:  json
Messaging Security 2020
The State of Messaging Security 2020: メールおよびメッセージングアプリのセキュリティプロトコルの現在
Stars: ✭ 80 (-4.76%)
Mutual labels:  messaging
Internettools
XPath/XQuery 3.1 interpreter for Pascal with compatibility modes for XPath 2.0/XQuery 1.0/3.0, custom and JSONiq extensions, XML/HTML parsers and classes for HTTP/S requests
Stars: ✭ 82 (-2.38%)
Mutual labels:  json
Bunny
Bunny is a popular, easy to use, mature Ruby client for RabbitMQ
Stars: ✭ 1,224 (+1357.14%)
Mutual labels:  messaging
Redisjson
RedisJSON - a JSON data type for Redis
Stars: ✭ 1,239 (+1375%)
Mutual labels:  json
Clef Tool
A command-line tool for manipulating Compact Log Event Format files
Stars: ✭ 79 (-5.95%)
Mutual labels:  json
Bitcoin Scraper
💲 bitcoin chart history scraper
Stars: ✭ 80 (-4.76%)
Mutual labels:  json
Entityframework.commontools
Extensions, Auditing, Concurrency Checks, JSON properties and Transaction Logs for EntityFramework and EFCore
Stars: ✭ 82 (-2.38%)
Mutual labels:  json
Jaydiff
A JSON diff utility
Stars: ✭ 84 (+0%)
Mutual labels:  json
Dahomey.json
The main purpose of this library is to bring missing features to the official .Net namespace System.Text.Json
Stars: ✭ 84 (+0%)
Mutual labels:  json

RPushbullet: R interface to Pushbullet

Build Status License CRAN Dependencies Downloads Code Coverage Last Commit

What is this?

RPushbullet is an R client for the wonderful Pushbullet messaging / notification system.

So what is Pushbullet?

Pushbullet is an awesome (and free) little service that acts as a message broker. You sign up, and get a key to use the API. You then install the "app" on your smartphone or Chrome browser (and obtain a device id for of these). You can also query your account with the pbDevices() function to retrieve these ids.

Presto. Now you can send messages between them by invoking pbPost().

Example

With a resource file (see below) properly setup, you can just do something like the following

R> msg   # just an example, can be driven by real simulation results  
[1] "DONE after 10000 simulations taking 42.43 minutes reducing RMSE by  7.89 percent"  
R>  
R> RPushbullet::pbPost("note", title="Simulation complete", body=msg)  

and a message like the image following below should pop up (if messaging directed to the browser):

Another excellent use case was suggested years ago by Karl Broman in this blog post. We can improve on his version a little as one no longer needs to load the package:

options(error = function() { 
    RPushbullet::pbPost("note", "Error", geterrmessage())
    if(!interactive()) stop(geterrmessage())
})

There was one noteworthy follow-up for which I lost the source: it suggested to make the message somewhat saltier by relying on the helpful rfoaas package.

Package Status

The package is reasonably mature and functional.

Up until release 0.2.0, an external curl binary was used. We have since switched to using the curl package.

Given that the Pushbullet API has other nice features, future extensions are certainly possible and encouraged. Interested contributors should file issue tickets first to discuss before going off on pull requests.

Initialization

A file ~/.rpushbullet.json can be used to pass the API key and device identifiers to the package. The content is read upon package startup, and stored in a package-local environment. The format of this file is as follows:

{ 
    "key": "...placey your api key here...",

    "devices": [ 
        ".....device 1 id......",
        ".....device 2 id......",
        ".....device 3 id......"
    ],

    "names": [
        "...name1...",
        "...name2...",
        "...name3..."
    ],

    "defaultdevice": "...nameOfYourDefault..."
}

The names and defaultdevice fields are optional. See the main package help page for more details.

You can also create the file programmatically via

cat(jsonlite::toJSON(list(key="..key here..", devices=c("..aa..", "..bb.."))))

and write that content to the file ~/.rpushbullet.json.

Starting with release 0.3.0, a new helper function pbSetup() is also available to create the file.

You can also retrieve the ids of your devices with the pbGetDevices() function by calling, say, str(fromJSON(pbGetDevices())). Note that you need to load one of the packages RJSONIO or rjson or jsonlite to access the fromJSON() function.

Channels

Pushbullet has recently added channels to their API. These are notification feeds that user can subscribe to, and which allows the developer to create (per-topic) channels for various applications / topics that her users can subscribe to.

Creating a channel is easy: one simply needs to login and visit the My Channel page. From there, one can easily create a new channel by clicking the "add channel" button. There will be a prompt to enter a 'tag', a channel name, as well as a description. The channel_tag is what is needed to push posts to the channel. Currently, only the owner of a channel has permissions to post to that channel, so one will need to create the channel using the same login one has specified in ~/.rpushbullet.json in order to use RPushbullet to post to a channel.

Channels are public: Anyone who knows the channel 'tag' can subscribe and will therefore receive all messages pushed to that channel. Some users create hard-to-guess channel tags to achieve semi privacy. This works because it is, currently as of February 2015, neither possible to list the channels owned by a specific user nor possible to browse or search for other users' channels. One method to generate a hard-to-guess tag is digest::digest(rnorm(1)).

Channels can be used by passing a channel argument to the pbPost function. The Pushbullet API identifies a channel via the supplied channel_tag value of this argument. See the Pushes API documentation for more information.

Author

Dirk Eddelbuettel with contributions by Bill Evans, Mike Birdgeneau, Henrik Bengtsson, Seth Wenchel, Colin Gillespie and Chan-Yub Park.

License

GPL (>= 2)

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].