将数据发布到geckoboard的Python脚本

2024-05-15 01:02:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在寻找帮助来创建一个python脚本,将数据推送到geckoboard,特别是以线图的形式。目前我的代码如下所示,是从其他来源收集到一起的,如果有人能合作并帮助我完成这项工作,那就太好了,我不知道如何在折线图上插入我想要的值,如果可以用一些示例值来完成,那就太好了。谢谢

import requests
import json

class Gecko(object):
def __init__(self, api_key):
    self.api_key = api_key

def push(self, widget_key, data):
    ret = requests.post("https://push.geckoboard.com/v1/send/%s" % widget_key, json.dumps({'api_key' : self.api_key, 'data' : data}), verify=False)
    if not (ret.status_code == 200 and ret.json().get('success') == True):
        raise ValueError(ret.content)

def line(self, widget_key, values, **kwargs):
    data = {'item' : [], 'settings' :kwargs}
    for item in values:
        data['item'].append(item)
    return self.push(widget_key, data)

run=Gecko(****************)
print run.push(150634-85f8db34-af52-4fa3-9963-3200a9a6fe74,some_data?)
print run.line(150634-85f8db34-af52-4fa3-9963-3200a9a6fe74,100,'text')

Tags: keyrunimportselfapijsondatadef
2条回答

编辑: 因此,最大的问题似乎是如何形成JSON负载。根据geckoboard API文档,它应该是这样的:

{"api_key" : "some-api-key-goes-here",
 "data": {
     "y_axis": {
         "format": "currency",
        "unit": "USD"
      },
      "series": [
        {
          "name": "GBP -> USD",
          "data": [
            1.62529,
            1.56991,
            1.50420,
            1.52265,
            1.55356,
            1.51930,
            1.52148,
            1.51173,
            1.55170,
            1.61966,
            1.59255,
            1.63762
          ]
        }
      ]
    }
 }

在API调用期间,您基本上组装了一个JSON负载,然后用一个键将其发布到一个地址。widget密钥是geckoboard希望您发布到的唯一地址或URL,api_密钥是您帐户的密钥。您希望程序工作的流程如下所示: 1) 收集你的数据 2) 将数据组合成一个类似JSON的结构(字典和列表嵌套) 3) 转储JSON(这意味着将特定于python的结构转换为JSON结构)。 4) 将此JSON发布到特定服务器。在

以下是您的更新代码:

^{pr2}$

很抱歉,我现在无法测试代码是否有效,但我相当有信心它已经完成了95%。如果您正在寻找一种更简单的方法,我构建了一个库来处理JSON的形成以及将数据推送到geckoboard上的自定义小部件。在

您可以查看Geckopush,如果有任何问题请告诉我。它目前在一个有点稳定的版本,我正在积极地工作。在

解决方案:

调用的文件测试.py在

import requests
import json

class Gecko(object):
def __init__(self, api_key):
    self.api_key = api_key

def push(self,data):
    ret = requests.post("paste URL here", data=json.dumps(data), verify=False)
    if not (ret.status_code == 200 and ret.json().get('success') == True):
        raise ValueError(ret.content)

名为test1.py的文件

^{pr2}$

相关问题 更多 >

    热门问题