Python的体验

Python what a nice

Posted by Living on March 18, 2018

一个python初学者

学了两天的Python,今天终于能试试手了。本来我是对python没什么感觉的,但听着各路神仙的吹捧,在加上自己想在树莓派上做个小项目需要用到网络编程,忍不住便开始了。

在决定使用python之前,我也想过用GOlang,拿了本书回去看,看了一个网上再加一个早 上这样子吧,开始还决定go很不错,继承于C,天生并发。但是,自己无聊在网上查了一下 资料,GO被半吹半黑的样子,,,,究竟是什么让我决定使用python而不是go,我也说不清楚。

今天写了一下午的python网络编程,感觉这真的是强很方便啊,上手也很快,资料不用说的多,且不说它的运行效率如何,单单它的开发效率我就很喜欢。 想了下好像也没什么好写,那就把代码贴上了吧。嘿,写了一下午才写了三个函数,丢脸。

用的是机智云的openapi,不得不说机智云的开发文档写得还真不错,要是跟百度的开发文 档比比,机智云高的不是一丁半点啊!不过机智云文档给的样例是curl,我在python用的是requests模块。

代码贴上


import requests
import time
import hashlib
import json


class GizwitsOpenAPI(object):
    def __init__(self, appid, usertoken):
        self.XGizwitsApplicationId = appid
        self.XGizwitsUsertoken = usertoken

    def GETAppUsers(self):
        url = "https://api.gizwits.com/app/users"
        headers = {"X-Gizwits-Application-Id": self.XGizwitsApplicationId,
                   "X-Gizwits-User-token": self.XGizwitsUsertoken}

        r = requests.get(url, headers=headers)
        print(r.json())

    def POSTAppBind_mac(self, product_key, product_secret):
        XGizwitsTimestamp = int(time.time())  #获取时间戳
        s1 = product_secret + str(XGizwitsTimestamp)  #
        h1 = hashlib.md5()
        h1.update(s1.encode(encoding='utf-8'))
        XGizwitsSignature = h1.hexdigest() #签名,计算方法为 lower(md5(product_secret + timestamp)), timestamp 需与 X-Gizwits-Timestamp 一致

        url = "https://api.gizwits.com/app/bind_mac"
        headers = {"X-Gizwits-Timestamp": str(XGizwitsTimestamp),
                   "X-Gizwits-Signature": str(XGizwitsSignature),
                   "X-Gizwits-Application-Id": self.XGizwitsApplicationId,
                   "X-Gizwits-User-token": self.XGizwitsUsertoken
                   }
        payload = {"product_key": str(product_key),
                   "mac": "virtual:site",
                   "remark": "ture",
                   "dev_alias": "aaa",
                   "set_owner": 0
                   }
        r = requests.post(url, headers=headers, json=payload)
        json_response = r.content.decode() # 获取r的文本 就是一个json字符串
        json_dict = json.loads(json_response) #转换成字典
        did = json_dict['did']
        return did
        #print (did)
        #print(r.json())

    def POSTAppControl(self, did, payload):
        url = "https://api.gizwits.com/app/control/" + str(did)
        headers = {"X-Gizwits-Application-Id": self.XGizwitsApplicationId,
                   "X-Gizwits-User-token": self.XGizwitsUsertoken}
        '''payload = {
                    "attrs": {
                                 "light": 1,
                                "aaa": 60
                             }
                   }'''
        r = requests.post(url, headers=headers, json=payload)
        print(r.json())



test = GizwitsOpenAPI("a56703ebcee94c5eb0325b3e684810f8", "f5f4ec9016cb4cb59ae29db866e53604")
did = test.POSTAppBind_mac("19ecdc9c991e407bb23610c98e461b6b", "5f01369401e24d90b6208a1a9b073da2")
print(did)
payload = {
                    "attrs": {
                                 "light": 1,
                                "aaa": 80
                             }
                   }
test.POSTAppControl(did, payload)

突然发现自己的注释好少啊,(^.^)

明天

今天也算把机智云api的所常用的基本接口函数写出来了,算是写了大大体框架。明天就把机智云平台的SOS方案弄清楚吧,就先这样吧。

i like vodka