我最近发现了RPushbullet
软件包,并且尝试将其设置为使用时未成功。 The author's blog提供了安装包的分步指南;但是,我遇到了一些问题。以下是前两个步骤:
下一步是在主目录中的JSON文件.rpushbullet.json
中插入一些信息。我之前从未使用过JSON文件,因此我阅读了一些关于该格式的文章。无论如何,要放入JSON文件的信息是:
第三步的原因是当加载RPushbullet
包时,它会尝试读取JSON文件以获取其中的信息。
我在notepad++的帮助下创建了一个文件,并将其命名为.rpushbullet.json(这是包所需的名称),使其成为JSON文件(Windows将其标识为一个)。但是(这是第一个问题),当我加载包时,由于某种原因找不到该文件。以下是错误消息:
> library(RPushbullet)
Attaching RPushbullet version 0.1.1.
No file ~/.rpushbullet.json found.
Consider placing the Pushbullet API key and your device id(s) there.
库没有“看到”我创建的JSON文件。错误消息表明我将API密钥和设备ID添加到文件中。作者实际上提供了一个代码,用于生成json代码以复制和粘贴到文件中:
> library(RJSONIO)
> cat(toJSON(list(key="..your key here..", devices=c("..device a..", "..device b.."))))
{
"key": "..your key here..",
"devices": [ "..device a..", "..device b.." ]
}
如上所述,API密钥很容易获取,因为它位于帐户设置页面中。另一方面,我无法从Pushbullet网站获取设备ID。经过一些研究,我了解到可以使用R
包从jsonlite
内获取设备ID。这是代码和随后出现的错误消息:
> fromJSON(pbGetDevices())$devices[,c("iden", "nickname")]
Error in fromJSON(pbGetDevices()) :
error in evaluating the argument 'content' in selecting a method for function 'fromJSON': Error: Neither option 'rpushbullet.key' nor entry in package environment found. Aborting
显然,我在主目录中创建的JSON文件不会被任何包“看到”。
我需要你的帮助。
答案 0 :(得分:2)
首先,如果它说找不到.rpushbullet.json
文件,你在哪里保存它?它应该在Sys.getenv("HOME")
返回的任何目录中(例如,/home/username
,/Users/username
,...)
当我正在玩它时,似乎API返回的内容已经发生了变化,因为RJSONIO::fromJSON()
不再对它进行解释。 (这可能是一个错误?)我发现有几种方法可以正确地减少回报。我会模仿pbGetDevices()
并提及我分歧的地方:
apikey <- "a1...98" ## replace with the string of your API key
txt <- sprintf("%s -s %s -u %s:", RPushbullet:::.getCurl(),
"https://api.pushbullet.com/v2/devices", apikey)
jsonres <- system(txt, intern = TRUE)
## res <- fromJSON(jsonres) ## this doesn't work anymore
res <- Reduce(rbind, RJSONIO::fromJSON(jsonres)$devices)[,c('iden','nickname')]
变量res
现在有一个data.frame,其中包含两列,您需要的设备ID,以及昵称显示(当您将它们保存到.rpushbullet.json
文件中)时。< / p>
(哦,确保notepad ++没有秘密地在文件名中添加.txt
。这是一个常见的窗口事项,有助于保护您免受暴露于文件的不便之处扩展。)
答案 1 :(得分:1)
请允许我引用该软件包的文档(并回应@ r2evans写的内容):
一种可能性是在文件中使用文件\ code {.rpushbullet.json} \ code {$ HOME}目录。 (请注意,在Windows上,您可能需要设置 \ code {$ HOME}环境变量。)
如果您想要文件的便利性,请将其放入$HOME
。在没有它的操作系统上创建$HOME
。
您不必被迫使用该文件。您也可以使用任何R启动文件来填充options()
。
答案 2 :(得分:1)
我也遇到了这个。对我来说,这是通过将RPushbullet
文件添加到我的HOME目录来安装和加载.rpushbullet.json
的结果,随后。那时,该软件包尚未识别出新的.rpushbullet.json
文件。
现在只需拆下然后重新加载包装,即可识别它:
install.packages("RPushbullet")
library(RPushbullet)
pbSetup()
detach("package:RPushbullet", unload=TRUE)
library(RPushbullet)
pbPost("note", title="Works perfectly now!")