每天上下班开车,为了节约油钱 过桥费等,都会使用手机刷单,看是否有顺路可带的单。
现在写了一个程序,不需要拿着手机刷了,每天下班回家,或者上班在单位电脑开着即可,一旦有顺路的乘客,程序会自动发出声音报警。
你需要做的只是这个时候再拿出手机,抢单即可。(其实直接抢单代码也简单,但是考虑一些细节,还是人工完成最后一步确定)
程序代码:
#!/usr/bin/env python
# -*- coding: gb18030 -*-
import urllib2 as ur
from urllib import urlencode
import winsound,time
#组件信息
urlopener = ur.build_opener(ur.HTTPCookieProcessor())#,proxy_handler)
#http头
headers={
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Connection': 'keep-alive',
}
#编码内容2
lat='30.474198'
lng='114.275451'
#上面写自己的经纬度,使用腾讯soso地图api经纬度获取工具获得你所在的经纬度后写上去,你想看指定地方的单子都可以看。哈哈哈
token='91VnTJilhhWcsNrZlu73uv%2FuktEPLtsdJH0g90AxM5xUjj0OgzAMRu%2FyzRliYkTgMlUUrIIUSJWfoUK9ey06dsadre8OTnC73vKxbA4IbBE0%2BjnT0Ps7NkUHISLArhqevY4JC25bViuVAPHWI3WXZkB4Oae4nq2Y9BLBKaPNp%2ByL8UJSVNkvcT%2BVF7rPW4hfOU9HsdDS209%2Bs%2B9A0AAP%2F%2F'
#这个是令牌,需要你抓包获取
par={
'lat':lat,
'lng':lng,
'num':30,
'offset_order_id':0,
'token':token,
}
par = urlencode(par)
#访问页面
def geturlcon(url,data=None,headers=headers,byte=None):
request = ur.Request(url,data,headers)
url = urlopener.open(request,timeout=5)
page=url.read(byte).decode('utf8','ignore')
return page
def parsinfo(con):
t=con.get('setup_time')
i=con.get('extra_info').decode('unicode_escape')
addf=con.get('from_name').decode('unicode_escape')
addto=con.get('to_name').decode('unicode_escape')
n=con.get('passenger_info').get('nick_name').decode('unicode_escape')
c=con.get('passenger_info').get('trip_num')
p=con.get('price')
id=con.get('order_id')
#pprint.pprint (con)
return t,n,addf,addto,c,p,id,i
def getdata(a):
d=eval(a).get('orders')
if len(d)==0:
print '没有订单'
return False
for i in d:
try:
t,n,addf,addto,c,p,id,i=parsinfo(i)
print '出发时间:\t',t,'\t'+i,'\r\n乘客:',n,'\t出行次数:',c,'\t价格:',p,'\r\n出发地:',addf,'\r\n目的地:',addto,'\r\n订单号:',id,'\r\n'
except Exception as err:print err
return True
print '*'*30
while True:
a=geturlcon(r'http://api.didialift.com/beatles/api/driver/order/matchlist?'+par)
#附件的人 使用 http://api.didialift.com/beatles/api/driver/order/nearbylist?+par 这个url
print 30*'*'+'\r\n顺路订单: \r\n'+30*'*'
if getdata(a):winsound.Beep(200,1100)
print '\r\n\r\n'
time.sleep(8)