一个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方案弄清楚吧,就先这样吧。
