#!/usr/bin/python # -*- coding: utf-8 -*- # ##@package # # @todo: 受理HTTP请求 # # @author: Alee # @date 2018-5-4 22:10:51 # @version 1.0 # # @note: 中文必须传utf8,收到的为urlencode内容 .decode('gbk').encode('utf8') # #--------------------------------------------------------------------- from bottle import Bottle, request import logging import jpush import requests import urllib from lib import ConfigIniReader import json #app_key = u'22186239fee975f883198cf4' #master_secret = u'cb2b72ba143a3f3fb13a6f45' #_jpush = jpush.JPush(app_key, master_secret) #_jpush.set_logging("DEBUG") requests.packages.urllib3.disable_warnings() # get: request.query.username request.GET.get('username','') # post: request.forms.get('username') request.POST.get('username') #=============================================================================== # @myapp.route('/cool/kk/:name3/:count#\\d+#') # def maybe(name3, count): #=============================================================================== myapp = Bottle() Def_Split_Mark = "|" # 文本格式GBK取出出来转unicode,服务器发过来也是unicode 推送统一unicode Def_NoName = ConfigIniReader.GetConfig().GetValue('Def_NoName').decode("gbk") NotifyFormat = ConfigIniReader.GetConfig().GetValue('NotifyFormat').decode("gbk") # 推送消息 # 混服使用对应不同key {平台ID:[[玩家个推ID, 玩家名],[玩家个推ID2, 玩家名2]。。。]} # {u'822055139': [[u'160a3797c8504368d60', u'\u76f8\u601d\u59ff\u6653']]}-1234567 @myapp.route('/getui/index.php', method='POST') def JGGeTui(): getDict = request.POST notifyMsg = urllib.unquote(getDict.get("NotifyMsg","")).decode("utf8") playerDict = json.loads(urllib.unquote_plus(getDict.get("PlayerInfo", ""))) logging.info("%s-%s"%(playerDict, notifyMsg)) if not playerDict: # 只能单\多推,不能全部推 return osName = jpush.all_ #logging.info("%s-%s-%s"%(getDict.get("RegID",""), playrNames, notifyMsg)) #return "账号:" + getDict.get("AccountID",""), "充值", getDict.get("money","") # 约定 {appID:[推送ID1, 推送ID2...]} 为群推 # 约定 {appID:[[推送ID1, 玩家名称1], [推送ID2, 玩家名称2]...]} 为一一个推 for appID in playerDict: # 找到对应KEY try: app_key = ConfigIniReader.GetConfig().GetValue('app_key_%s'%appID) master_secret = ConfigIniReader.GetConfig().GetValue('master_secret_%s'%appID) except: logging.warn("no key = %s"%appID) continue jpushObj = jpush.JPush(app_key, master_secret) if type(playerDict[appID][0]) != list: # 列表中的元素不是列表说明是群推 PushOne(jpushObj, playerDict[appID], notifyMsg, osName) else: # 不支持notifymsg内容不一样的多推,只能一一对应推送 for regID, playerName in playerDict[appID]: playerName = playerName if playerName else Def_NoName #playerName = urllib.unquote(playerName) #playerName = playerName.encode('utf-8') geTuiMsg = NotifyFormat%(playerName, notifyMsg) #logging.info("PushOne%s-%s-%s"%([regID], geTuiMsg, osName)) PushOne(jpushObj, [regID], geTuiMsg, osName) def PushOne(jpushObj, regIDList, notifyMsg, osName=jpush.all_): # 1.推送对象 单推(多推); 群推只能提交中心推 # 2.平台 ios 安卓 默认全平台 # 3.通知消息 push = jpushObj.create_push() push.audience = {"registration_id" : regIDList} push.notification = jpush.notification(alert=notifyMsg) push.platform = osName push.options = {"time_to_live":300} #push.options = {"apns_production": False,} try: response=push.send() except: pass