def _get_contact_info(self, appid, fakeid, msg_id): post_url = httputils.build_url( url.mp_contact_info, { 't': 'ajax-getcontactinfo', 'fakeid': fakeid, 'msg_id': msg_id, 'lang': 'zh_CN' }) referer_url = httputils.build_url( url.mp_message, { 't': 'message/list', 'count': 30, 'offset': 0, 'day': 7, 'token': self.tokens[appid]['token'] }) try: resp = yield self._post_form( appid, post_url, { 'token': self.tokens[appid]['token'], 'lang': 'zh_CN', 'f': 'json', 'ajax': 1, 'random': random.random() }, referer=referer_url) except tornado.httpclient.HTTPError: raise tornado.gen.Return({'err_code': 7000}) raise tornado.gen.Return(_parse_mp_resp(resp))
def _send_single_message(self, appid, fakeid, content): post_url = httputils.build_url( url.mp_singlesend, { 't': 'ajax-response', 'f': 'json', 'token': self.tokens[appid]['token'], 'lang': 'zh_CN' }) referer_url = httputils.build_url( url.mp_singlesend_page, { 'tofakeid': fakeid, 't': 'message/send', 'action': 'index', 'token': self.tokens[appid]['token'], 'lang': 'zh_CN' }) try: resp = yield self._post_form( appid, post_url, { 'token': self.tokens[appid]['token'], 'lang': 'zh_CN', 'f': 'json', 'ajax': 1, 'type': 1, 'content': content, 'tofakeid': fakeid, 'random': random.random() }, referer=referer_url) except tornado.httpclient.HTTPError: raise tornado.gen.Return({'err_code': 7000}) raise tornado.gen.Return(_parse_mp_resp(resp))
def _send_single_message(self, appid, fakeid, content): post_url = httputils.build_url(url.mp_singlesend, { 't': 'ajax-response', 'f': 'json', 'token': self.tokens[appid]['token'], 'lang': 'zh_CN'}) referer_url = httputils.build_url(url.mp_singlesend_page, { 'tofakeid': fakeid, 't': 'message/send', 'action': 'index', 'token': self.tokens[appid]['token'], 'lang': 'zh_CN'}) try: resp = yield self._post_form(appid, post_url, { 'token': self.tokens[appid]['token'], 'lang': 'zh_CN', 'f': 'json', 'ajax': 1, 'type': 1, 'content': content, 'tofakeid': fakeid, 'random': random.random() }, referer=referer_url) except tornado.httpclient.HTTPError: raise tornado.gen.Return({'err_code': 7000}) raise tornado.gen.Return(_parse_mp_resp(resp))
def _send_multi_message(self, appid, appmsgid, operation_seq, groupid): post_url = httputils.build_url(url.mp_multisend, { 't': 'ajax-response', 'token': self.tokens[appid]['token'], 'lang': 'zh_CN'}) referer = httputils.build_url(url.mp_multisend_page, { 't': 'mass/send', 'lang': 'zh_CN', 'token': self.tokens[appid]['token']}) try: resp = yield self._post_form(appid, post_url, { 'token': self.tokens[appid]['token'], 'lang': 'zh_CN', 'f': 'json', 'ajax': 1, 'type': 10, 'synctxweibo': 1, 'cardlimit': 1, 'sex': 0, 'random': random.random(), 'groupid': groupid, 'appmsgid': appmsgid, 'operation_seq': operation_seq, 'country': '', 'province': '', 'city': '', 'imgcode': '', 'direct_send': 1 }, referer=referer) except tornado.httpclient.HTTPError: raise tornado.gen.Return({'err_code': 7000}) raise tornado.gen.Return(_parse_mp_resp(resp))
def _presend_multi_message(self, appid, appmsgid, times): post_url = httputils.build_url( url.mp_multisend, { 'action': 'get_appmsg_copyright_stat', 'token': self.tokens[appid]['token'], 'lang': 'zh_CN' }) referer = httputils.build_url( url.mp_multisend_page, { 't': 'mass/send', 'lang': 'zh_CN', 'token': self.tokens[appid]['token'] }) try: resp = yield self._post_form( appid, post_url, { 'token': self.tokens[appid]['token'], 'lang': 'zh_CN', 'f': 'json', 'ajax': 1, 'type': 10, 'first_check': times, 'random': random.random(), 'appmsgid': appmsgid }, referer=referer) except tornado.httpclient.HTTPError: raise tornado.gen.Return({'err_code': 7000}) raise tornado.gen.Return(_parse_mp_resp(resp))
def _upload_image(self, appid, ticket, picurl, filename, width=0): img = Image.open(io.BytesIO(urllib.request.urlopen(picurl).read())) w, h = img.size nw = min(width, w) if width != 0 else w nh = int(float(nw * h) / w) tmp_file = '/tmp/' + security.nonce_str() fd = open(tmp_file, 'w') img.resize((nw, nh)).convert('RGB').save(fd, 'JPEG', quality=85) fd.close() fd = open(tmp_file, 'rb') post_url = httputils.build_url( url.mp_upload, { 'ticket_id': 'sevengram', 'ticket': ticket, 'f': 'json', 'token': self.tokens[appid]['token'], 'lang': 'zh_CN', 'writetype': 'doublewrite', 'group_id': 1, 'action': 'upload_material' }) referer = httputils.build_url( url.mp_appmsg, { 't': 'media/appmsg_edit', 'action': 'edit', 'type': '10', 'isMul': 0, 'isNew': 1, 'lang': 'zh_CN', 'token': self.tokens[appid]['token'] }) content_type, data = httputils.encode_multipart_formdata( fields={ 'Filename': filename, 'folder': '/cgi-bin/uploads', 'Upload': 'Submit Query' }, files=(filename, fd.read())) fd.close() os.remove(tmp_file) try: resp = yield self._post_data(appid, post_url, data, content_type, referer=referer) except tornado.httpclient.HTTPError: raise tornado.gen.Return({'err_code': 7000}) raise tornado.gen.Return(_parse_mp_resp(resp))
def _wechat_api_call(method, appid, fn_url, fn_data=None, retry=0): token_result = yield _get_access_token(appid, refresh=(retry != 0)) if token_result['err_code'] != 0: raise tornado.gen.Return(token_result) token = token_result['data']['access_token'] logging.info('access_token: %s', token) try: if method == 'GET': resp = yield httputils.get_dict( url=fn_url, data=dict(fn_data or {}, access_token=token) ) elif method == 'POST': resp = yield httputils.post_dict( url=build_url(fn_url, { 'access_token': token }), data=fn_data, data_type='json' ) else: return except tornado.httpclient.HTTPError: raise tornado.gen.Return({'err_code': 1001}) result = _parse_wechat_resp(resp) if result['err_code'] == 1004 and retry < 3: result = yield _wechat_api_call(appid, fn_url, fn_data, retry + 1) raise tornado.gen.Return(result) else: raise tornado.gen.Return(result)
def _get_latest_news(self, appid): referer = httputils.build_url(url.mp_home, { 't': 'home/index', 'token': self.tokens[appid]['token'], 'lang': 'zh_CN'}) try: resp = yield self._get(appid, url.mp_appmsg, { 'begin': 0, 'count': 1, 't': 'media/appmsg_list', 'token': self.tokens[appid]['token'], 'type': '10', 'action': 'list', 'lang': 'zh_CN'}, referer=referer) except tornado.httpclient.HTTPError: raise tornado.gen.Return({'err_code': 7000}) if resp.code != 200: raise tornado.gen.Return({'err_code': 7000}) item = None ts = BeautifulSoup(resp.body, 'lxml').find_all('script', {'type': 'text/javascript', 'src': ''}) for t in ts: try: te = t.text if te.strip(' \t\r\n').startswith('wx.cgiData'): item = json.loads(te[te.index('{'):te.rindex('}') + 1])['item'][0] del item['multi_item'] break except (ValueError, IndexError): pass if not item: logging.warning('get_latest_news failed: %s', appid) raise tornado.gen.Return({'err_code': 7105}) else: logging.info('get_latest_news success: %s', item) raise tornado.gen.Return({'err_code': 0, 'data': item})
def _get_operation_seq(self, appid): referer = httputils.build_url(url.mp_home, { 't': 'home/index', 'token': self.tokens[appid]['token'], 'lang': 'zh_CN'}) try: resp = yield self._get(appid, url.mp_multisend_page, { 't': 'mass/send', 'lang': 'zh_CN', 'token': self.tokens[appid]['token'], }, referer=referer) except tornado.httpclient.HTTPError: raise tornado.gen.Return({'err_code': 7000}) if resp.code != 200: raise tornado.gen.Return({'err_code': 7000}) seq = None ts = BeautifulSoup(resp.body, 'lxml').find_all('script', {'type': 'text/javascript', 'src': ''}) for t in ts: try: te = t.text i = te.index('operation_seq:') s = te.index('\"', i) + 1 e = te.index('\"', s) seq = te[s:e] break except (ValueError, IndexError): pass if not seq: logging.warning('get_seq failed: %s', appid) raise tornado.gen.Return({'err_code': 7104}) else: logging.info('get_seq success: %s - %s', appid, seq) raise tornado.gen.Return({'err_code': 0, 'data': {'seq': seq}})
def _wechat_api_call(method, appid, fn_url, fn_data=None, retry=0): token_result = yield _get_access_token(appid, refresh=(retry != 0)) if token_result['err_code'] != 0: raise tornado.gen.Return(token_result) token = token_result['data']['access_token'] logging.info('access_token: %s', token) try: if method == 'GET': resp = yield httputils.get_dict(url=fn_url, data=dict(fn_data or {}, access_token=token)) elif method == 'POST': resp = yield httputils.post_dict(url=build_url( fn_url, {'access_token': token}), data=fn_data, data_type='json') else: return except tornado.httpclient.HTTPError: raise tornado.gen.Return({'err_code': 1001}) result = _parse_wechat_resp(resp) if result['err_code'] == 1004 and retry < 3: result = yield _wechat_api_call(appid, fn_url, fn_data, retry + 1) raise tornado.gen.Return(result) else: raise tornado.gen.Return(result)
def _save_news(self, appid, title, content, digest, author, fileid, sourceurl): post_url = httputils.build_url( url.mp_save_news, { 't': 'ajax-response', 'sub': 'create', 'type': '10', 'token': self.tokens[appid]['token'], 'lang': 'zh_CN' }) referer = httputils.build_url( url.mp_appmsg, { 't': 'media/appmsg_edit', 'action': 'edit', 'type': '10', 'isMul': 0, 'isNew': 1, 'lang': 'zh_CN', 'token': self.tokens[appid]['token'] }) try: resp = yield self._post_form( appid, post_url, { 'token': self.tokens[appid]['token'], 'lang': 'zh_CN', 'f': 'json', 'ajax': 1, 'type': 1, 'content0': content, 'count': 1, 'random': random.random(), 'AppMsgId': '', 'vid': '', 'title0': title, 'digest0': digest, 'author0': author, 'fileid0': fileid, 'show_cover_pic0': 1, 'sourceurl0': sourceurl }, referer=referer) except tornado.httpclient.HTTPError: raise tornado.gen.Return({'err_code': 7000}) raise tornado.gen.Return(_parse_mp_resp(resp))
def _get_ticket(self, appid): referer = httputils.build_url( url.mp_appmsg, { 'begin': 0, 'count': 10, 't': 'media/appmsg_list', 'token': self.tokens[appid]['token'], 'type': '10', 'action': 'list', 'lang': 'zh_CN' }) try: resp = yield self._get(appid, url.mp_appmsg, { 't': 'media/appmsg_edit', 'action': 'edit', 'type': '10', 'isMul': 0, 'isNew': 1, 'lang': 'zh_CN', 'token': self.tokens[appid]['token'] }, referer=referer) except tornado.httpclient.HTTPError: raise tornado.gen.Return({'err_code': 7000}) if resp.code != 200: raise tornado.gen.Return({'err_code': 7000}) ticket = None ts = BeautifulSoup(resp.body, 'lxml').find_all('script', { 'type': 'text/javascript', 'src': '' }) for t in ts: try: te = t.text i = te.index('ticket:\"') s = te.index('\"', i) + 1 e = te.index('\"', s) ticket = te[s:e] break except (ValueError, IndexError): pass if not ticket: logging.warning('get_ticket failed: %s', appid) raise tornado.gen.Return({'err_code': 7103}) else: logging.info('get_ticket success: %s - %s', appid, ticket) raise tornado.gen.Return({ 'err_code': 0, 'data': { 'ticket': ticket } })
def _send_multi_message(self, appid, appmsgid, operation_seq, groupid): post_url = httputils.build_url( url.mp_multisend, { 't': 'ajax-response', 'token': self.tokens[appid]['token'], 'lang': 'zh_CN' }) referer = httputils.build_url( url.mp_multisend_page, { 't': 'mass/send', 'lang': 'zh_CN', 'token': self.tokens[appid]['token'] }) try: resp = yield self._post_form( appid, post_url, { 'token': self.tokens[appid]['token'], 'lang': 'zh_CN', 'f': 'json', 'ajax': 1, 'type': 10, 'synctxweibo': 1, 'cardlimit': 1, 'sex': 0, 'random': random.random(), 'groupid': groupid, 'appmsgid': appmsgid, 'operation_seq': operation_seq, 'country': '', 'province': '', 'city': '', 'imgcode': '', 'direct_send': 1 }, referer=referer) except tornado.httpclient.HTTPError: raise tornado.gen.Return({'err_code': 7000}) raise tornado.gen.Return(_parse_mp_resp(resp))
def _upload_image(self, appid, ticket, picurl, filename, width=0): img = Image.open(io.BytesIO(urllib.request.urlopen(picurl).read())) w, h = img.size nw = min(width, w) if width != 0 else w nh = int(float(nw * h) / w) tmp_file = '/tmp/' + security.nonce_str() fd = open(tmp_file, 'w') img.resize((nw, nh)).convert('RGB').save(fd, 'JPEG', quality=85) fd.close() fd = open(tmp_file, 'rb') post_url = httputils.build_url(url.mp_upload, { 'ticket_id': 'sevengram', 'ticket': ticket, 'f': 'json', 'token': self.tokens[appid]['token'], 'lang': 'zh_CN', 'writetype': 'doublewrite', 'group_id': 1, 'action': 'upload_material'}) referer = httputils.build_url(url.mp_appmsg, { 't': 'media/appmsg_edit', 'action': 'edit', 'type': '10', 'isMul': 0, 'isNew': 1, 'lang': 'zh_CN', 'token': self.tokens[appid]['token']}) content_type, data = httputils.encode_multipart_formdata( fields={'Filename': filename, 'folder': '/cgi-bin/uploads', 'Upload': 'Submit Query'}, files=(filename, fd.read())) fd.close() os.remove(tmp_file) try: resp = yield self._post_data(appid, post_url, data, content_type, referer=referer) except tornado.httpclient.HTTPError: raise tornado.gen.Return({'err_code': 7000}) raise tornado.gen.Return(_parse_mp_resp(resp))
def _presend_multi_message(self, appid, appmsgid, times): post_url = httputils.build_url(url.mp_multisend, { 'action': 'get_appmsg_copyright_stat', 'token': self.tokens[appid]['token'], 'lang': 'zh_CN'}) referer = httputils.build_url(url.mp_multisend_page, { 't': 'mass/send', 'lang': 'zh_CN', 'token': self.tokens[appid]['token']}) try: resp = yield self._post_form(appid, post_url, { 'token': self.tokens[appid]['token'], 'lang': 'zh_CN', 'f': 'json', 'ajax': 1, 'type': 10, 'first_check': times, 'random': random.random(), 'appmsgid': appmsgid }, referer=referer) except tornado.httpclient.HTTPError: raise tornado.gen.Return({'err_code': 7000}) raise tornado.gen.Return(_parse_mp_resp(resp))
def _save_news(self, appid, title, content, digest, author, fileid, sourceurl): post_url = httputils.build_url(url.mp_save_news, { 't': 'ajax-response', 'sub': 'create', 'type': '10', 'token': self.tokens[appid]['token'], 'lang': 'zh_CN'}) referer = httputils.build_url(url.mp_appmsg, { 't': 'media/appmsg_edit', 'action': 'edit', 'type': '10', 'isMul': 0, 'isNew': 1, 'lang': 'zh_CN', 'token': self.tokens[appid]['token']}) try: resp = yield self._post_form(appid, post_url, { 'token': self.tokens[appid]['token'], 'lang': 'zh_CN', 'f': 'json', 'ajax': 1, 'type': 1, 'content0': content, 'count': 1, 'random': random.random(), 'AppMsgId': '', 'vid': '', 'title0': title, 'digest0': digest, 'author0': author, 'fileid0': fileid, 'show_cover_pic0': 1, 'sourceurl0': sourceurl }, referer=referer) except tornado.httpclient.HTTPError: raise tornado.gen.Return({'err_code': 7000}) raise tornado.gen.Return(_parse_mp_resp(resp))
def _get_contact_info(self, appid, fakeid, msg_id): post_url = httputils.build_url(url.mp_contact_info, { 't': 'ajax-getcontactinfo', 'fakeid': fakeid, 'msg_id': msg_id, 'lang': 'zh_CN'}) referer_url = httputils.build_url(url.mp_message, { 't': 'message/list', 'count': 30, 'offset': 0, 'day': 7, 'token': self.tokens[appid]['token'] }) try: resp = yield self._post_form(appid, post_url, { 'token': self.tokens[appid]['token'], 'lang': 'zh_CN', 'f': 'json', 'ajax': 1, 'random': random.random() }, referer=referer_url) except tornado.httpclient.HTTPError: raise tornado.gen.Return({'err_code': 7000}) raise tornado.gen.Return(_parse_mp_resp(resp))
def _find_user(self, appid, timestamp, mtype, content, count=50, offset=0): referer_url = httputils.build_url( url.mp_home, { 't': 'home/index', 'token': self.tokens[appid]['token'], 'lang': 'zh_CN' }) try: resp = yield self._get(appid, url.mp_message, { 't': 'message/list', 'count': count, 'day': 7, 'token': self.tokens[appid]['token'] }, referer=referer_url) except tornado.httpclient.HTTPError: raise tornado.gen.Return({'err_code': 7000}) if resp.code != 200: raise tornado.gen.Return({'err_code': 7000}) users = None ts = BeautifulSoup(resp.body, 'lxml').find_all('script', { 'type': 'text/javascript', 'src': '' }) for t in ts: try: te = t.text if te.strip(' \t\r\n').startswith('wx.cgiData'): s = te.index('[', te.index('msg_item')) e = te.rindex(']', s, te.rindex('msg_item')) + 1 users = json.loads(te[s:e]) break except (ValueError, IndexError): pass if not users: logging.warning('fail to catch user list: %s', appid) raise tornado.gen.Return({'err_code': 7101}) for user in users: if user['date_time'] < timestamp: logging.warning('fail to find user: %s', appid) raise tornado.gen.Return({'err_code': 7101}) elif check_same(timestamp, content, mtype, user): logging.warning('user found: %s', user) raise tornado.gen.Return({'err_code': 0, 'data': user}) res = yield self._find_user(appid, timestamp, mtype, content, count, count + offset) raise tornado.gen.Return(res)
def _get_latest_news(self, appid): referer = httputils.build_url( url.mp_home, { 't': 'home/index', 'token': self.tokens[appid]['token'], 'lang': 'zh_CN' }) try: resp = yield self._get(appid, url.mp_appmsg, { 'begin': 0, 'count': 1, 't': 'media/appmsg_list', 'token': self.tokens[appid]['token'], 'type': '10', 'action': 'list', 'lang': 'zh_CN' }, referer=referer) except tornado.httpclient.HTTPError: raise tornado.gen.Return({'err_code': 7000}) if resp.code != 200: raise tornado.gen.Return({'err_code': 7000}) item = None ts = BeautifulSoup(resp.body, 'lxml').find_all('script', { 'type': 'text/javascript', 'src': '' }) for t in ts: try: te = t.text if te.strip(' \t\r\n').startswith('wx.cgiData'): item = json.loads(te[te.index('{'):te.rindex('}') + 1])['item'][0] del item['multi_item'] break except (ValueError, IndexError): pass if not item: logging.warning('get_latest_news failed: %s', appid) raise tornado.gen.Return({'err_code': 7105}) else: logging.info('get_latest_news success: %s', item) raise tornado.gen.Return({'err_code': 0, 'data': item})
def process_weather1(request): img_url = build_url(consts.seventimer_url, { 'lon': request['longitude'], 'lat': request['latitude'], 'lang': 'zh-CN', 'time': int(time.time()) }) resp = { 'msg_type': 'news', 'tag': 'weather', 'articles': [ { 'title': request.get('label', ''), 'description': '数据来自晴天钟(7timer.com)', 'picurl': img_url, 'url': img_url } ] } raise tornado.gen.Return(resp)
def _get_ticket(self, appid): referer = httputils.build_url(url.mp_appmsg, { 'begin': 0, 'count': 10, 't': 'media/appmsg_list', 'token': self.tokens[appid]['token'], 'type': '10', 'action': 'list', 'lang': 'zh_CN'}) try: resp = yield self._get(appid, url.mp_appmsg, { 't': 'media/appmsg_edit', 'action': 'edit', 'type': '10', 'isMul': 0, 'isNew': 1, 'lang': 'zh_CN', 'token': self.tokens[appid]['token'] }, referer=referer) except tornado.httpclient.HTTPError: raise tornado.gen.Return({'err_code': 7000}) if resp.code != 200: raise tornado.gen.Return({'err_code': 7000}) ticket = None ts = BeautifulSoup(resp.body, 'lxml').find_all('script', {'type': 'text/javascript', 'src': ''}) for t in ts: try: te = t.text i = te.index('ticket:\"') s = te.index('\"', i) + 1 e = te.index('\"', s) ticket = te[s:e] break except (ValueError, IndexError): pass if not ticket: logging.warning('get_ticket failed: %s', appid) raise tornado.gen.Return({'err_code': 7103}) else: logging.info('get_ticket success: %s - %s', appid, ticket) raise tornado.gen.Return({'err_code': 0, 'data': {'ticket': ticket}})
def process_weather1(request): img_url = build_url( consts.seventimer_url, { 'lon': request['longitude'], 'lat': request['latitude'], 'lang': 'zh-CN', 'time': int(time.time()) }) resp = { 'msg_type': 'news', 'tag': 'weather', 'articles': [{ 'title': request.get('label', ''), 'description': '数据来自晴天钟(7timer.com)', 'picurl': img_url, 'url': img_url }] } raise tornado.gen.Return(resp)
def _find_user(self, appid, timestamp, mtype, content, count=50, offset=0): referer_url = httputils.build_url(url.mp_home, { 't': 'home/index', 'token': self.tokens[appid]['token'], 'lang': 'zh_CN'}) try: resp = yield self._get(appid, url.mp_message, { 't': 'message/list', 'count': count, 'day': 7, 'token': self.tokens[appid]['token'] }, referer=referer_url) except tornado.httpclient.HTTPError: raise tornado.gen.Return({'err_code': 7000}) if resp.code != 200: raise tornado.gen.Return({'err_code': 7000}) users = None ts = BeautifulSoup(resp.body, 'lxml').find_all('script', {'type': 'text/javascript', 'src': ''}) for t in ts: try: te = t.text if te.strip(' \t\r\n').startswith('wx.cgiData'): s = te.index('[', te.index('msg_item')) e = te.rindex(']', s, te.rindex('msg_item')) + 1 users = json.loads(te[s:e]) break except (ValueError, IndexError): pass if not users: logging.warning('fail to catch user list: %s', appid) raise tornado.gen.Return({'err_code': 7101}) for user in users: if user['date_time'] < timestamp: logging.warning('fail to find user: %s', appid) raise tornado.gen.Return({'err_code': 7101}) elif check_same(timestamp, content, mtype, user): logging.warning('user found: %s', user) raise tornado.gen.Return({'err_code': 0, 'data': user}) res = yield self._find_user(appid, timestamp, mtype, content, count, count + offset) raise tornado.gen.Return(res)
def _get_operation_seq(self, appid): referer = httputils.build_url( url.mp_home, { 't': 'home/index', 'token': self.tokens[appid]['token'], 'lang': 'zh_CN' }) try: resp = yield self._get(appid, url.mp_multisend_page, { 't': 'mass/send', 'lang': 'zh_CN', 'token': self.tokens[appid]['token'], }, referer=referer) except tornado.httpclient.HTTPError: raise tornado.gen.Return({'err_code': 7000}) if resp.code != 200: raise tornado.gen.Return({'err_code': 7000}) seq = None ts = BeautifulSoup(resp.body, 'lxml').find_all('script', { 'type': 'text/javascript', 'src': '' }) for t in ts: try: te = t.text i = te.index('operation_seq:') s = te.index('\"', i) + 1 e = te.index('\"', s) seq = te[s:e] break except (ValueError, IndexError): pass if not seq: logging.warning('get_seq failed: %s', appid) raise tornado.gen.Return({'err_code': 7104}) else: logging.info('get_seq success: %s - %s', appid, seq) raise tornado.gen.Return({'err_code': 0, 'data': {'seq': seq}})
def process_weather2(request): query = request.get('content', '') if len(query) < 2: raise tornado.gen.Return(None) resp = None is_location = request.get('is_location') == 1 location = astro_storage.get_location(query) if not location and not is_location: for word in consts.loc_keys: if word in query: is_location = True break if not location and is_location: location = yield get_location(query) if location: astro_storage.add_location(location) if location: img_url = build_url( consts.seventimer_url, { 'lon': location['longitude'], 'lat': location['latitude'], 'lang': 'zh-CN', 'time': int(time.time()) }) resp = { 'msg_type': 'news', 'tag': 'weather', 'articles': [{ 'title': location.get('address', ''), 'description': '数据来自晴天钟(7timer.com)', 'picurl': img_url, 'url': img_url }] } raise tornado.gen.Return(resp)
def process_weather2(request): query = request.get('content', '') if len(query) < 2: raise tornado.gen.Return(None) resp = None is_location = request.get('is_location') == 1 location = astro_storage.get_location(query) if not location and not is_location: for word in consts.loc_keys: if word in query: is_location = True break if not location and is_location: location = yield get_location(query) if location: astro_storage.add_location(location) if location: img_url = build_url(consts.seventimer_url, { 'lon': location['longitude'], 'lat': location['latitude'], 'lang': 'zh-CN', 'time': int(time.time()) }) resp = { 'msg_type': 'news', 'tag': 'weather', 'articles': [ { 'title': location.get('address', ''), 'description': '数据来自晴天钟(7timer.com)', 'picurl': img_url, 'url': img_url } ] } raise tornado.gen.Return(resp)