def wblogin(username, password): resp = session.get( 'http://login.sina.com.cn/sso/prelogin.php?' 'entry=weibo&callback=sinaSSOController.preloginCallBack&' 'su=%s&rsakt=mod&checkpin=1&client=%s' % (base64.b64encode(username.encode('utf-8')), WBCLIENT) ) pre_login_str = re.match(r'[^{]+({.+?})', resp.text).group(1) pre_login = json.loads(pre_login_str) pre_login = json.loads(pre_login_str) data = { 'entry': 'weibo', 'gateway': 1, 'from': '', 'savestate': 7, 'userticket': 1, 'ssosimplelogin': 1, 'su': base64.b64encode(requests.utils.quote(username).encode('utf-8')), 'service': 'miniblog', 'servertime': pre_login['servertime'], 'nonce': pre_login['nonce'], 'vsnf': 1, 'vsnval': '', 'pwencode': 'rsa2', 'sp': encrypt_passwd(password, pre_login['pubkey'], pre_login['servertime'], pre_login['nonce']), 'rsakv' : pre_login['rsakv'], 'encoding': 'UTF-8', 'prelt': '53', 'url': 'http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.si' 'naSSOController.feedBackUrlCallBack', 'returntype': 'META' } resp = session.post( 'http://login.sina.com.cn/sso/login.php?client=%s' % WBCLIENT, data=data ) login_url = re.search('replace\\(\'([^\']+)\'\\)', resp.text).group(1) resp = session.get(login_url) login_str = login_str = re.search('\((\{.*\})\)', resp.text).group(1) login_info = json.loads(login_str) log("登录成功:" + str(login_info)) uniqueid = login_info["userinfo"]["uniqueid"] return (session, uniqueid)
def run(self, keyIndex): """ run을 실행하면 자동으로 API에서 데이터를 받아와 데이터베이스에 저장할 수 있도록함 """ self.initialize() self.subModel.remove() now = (datetime.datetime.now().hour) if self.train_ok(now): return False for line in self.lines: URL = self.makeUrl(line, keyIndex) print(URL) try: REQUESTED_JSON = self.requestUrl(URL) self.parseRequest(REQUESTED_JSON) self.seatModel.update() return True except: log("Subway Time Done or Error") return False
from loger import log, loger_setting print('\n* 基础输出\nbasic output:') log('this is a log') print('\n* 预设的输出等级是3 (inf),你可以在输出时设置level为1-4(error warning info success)\ndefault log level is 3 (info),you can set 1-4 (error warning info success) to level to change it') log('this is a error, level=1', level=1) log('this is a warning, level=2', level=2) log('this is a information, level=3', 3) log('this is a success,level=4', 4) print('\n* 使用 setting 可以控制 更改loger的设置。\n use setting can change loger default setting') print('\n* 控制输出级别\nchange output level:') loger_setting(show_level=2) log('this error will show', 1) log('this is a will show', 2) log('this information will not show', 3) log('this success will not show', 4) print('\n* 使用时间戳\noutput with time mark:') loger_setting(time_mark=True) log('this is a error with time mark', 1) log('this is a warning with time mark', 2) print('\n* 禁用颜色输出\noutput without color:') loger_setting(color=False) log('this is a error without color', 1) log('this is a warning without color', 2)
def sendWeibo(self): text = TextFactory.getText() self.update(text) log(u"发送微博:" + text)
def stop(self): log("结束任务") self.timer.cancel() pass
def start(self): log("开始任务") self.sendWeibo() self.newTimer()
# Main App import time from subwayAPI import MetroAPI from loger import log if __name__ == "__main__": Metro = MetroAPI() while True: for i in range(5): if Metro.run(i): print(f"Fire Base Updated - API CODE {i}") log(f"Fire Base Updated, API CODE {i}") time.sleep(20) else: print(f"Wait for 1hour to start sub") log("Wait for 1hour to start subway") time.sleep(60 * 60)
def wblogin(username, password): resp = session.get( 'http://login.sina.com.cn/sso/prelogin.php?' 'entry=weibo&callback=sinaSSOController.preloginCallBack&' 'su=%s&rsakt=mod&checkpin=1&client=%s' % (base64.b64encode(username.encode('utf-8')), WBCLIENT)) pre_login_str = re.match(r'[^{]+({.+?})', resp.text).group(1) pre_login = json.loads(pre_login_str) pre_login = json.loads(pre_login_str) data = { 'entry': 'weibo', 'gateway': 1, 'from': '', 'savestate': 7, 'userticket': 1, 'ssosimplelogin': 1, 'su': base64.b64encode(requests.utils.quote(username).encode('utf-8')), 'service': 'miniblog', 'servertime': pre_login['servertime'], 'nonce': pre_login['nonce'], 'vsnf': 1, 'vsnval': '', 'pwencode': 'rsa2', 'sp': encrypt_passwd(password, pre_login['pubkey'], pre_login['servertime'], pre_login['nonce']), 'rsakv': pre_login['rsakv'], 'encoding': 'UTF-8', 'prelt': '53', 'url': 'http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.si' 'naSSOController.feedBackUrlCallBack', 'returntype': 'META' } resp = session.post('http://login.sina.com.cn/sso/login.php?client=%s' % WBCLIENT, data=data) login_url = re.search('replace\\(\'([^\']+)\'\\)', resp.text).group(1) resp = session.get(login_url) login_str = login_str = re.search('\((\{.*\})\)', resp.text).group(1) login_info = json.loads(login_str) log("登录成功:" + str(login_info)) uniqueid = login_info["userinfo"]["uniqueid"] return (session, uniqueid)