def personal(msg): try: if msg.from_user.id == naji and msg.text: if re.match("/fwd", msg.text) and msg.reply_to_message: for i in redis.smembers("bot:all", msg.chat.id): try: bot.forward_message(i, msg.chat.id, msg.reply_to_message.id) except Exception as e: print(e) if re.match("/stats", msg.text): bot.send_message( msg.chat.id, "آمار\nگروه ها : {}\nخصوصی ها : {}".format( redis.scard("bot:gps"), redis.scard("bot:pvs"))) else: bot.send_message( msg.chat.id, "رباتی برای افزایش اعضای گروه\nفقط کافیه به گروهت دعوتش کنی و ادمینش کنی" ) if not redis.sismember("bot:all", msg.chat.id): redis.sadd("bot:pvs", msg.chat.id) redis.sadd("bot:all", msg.chat.id) except Exception as e: print(e) pass
def callback_inline(call): if call.message: if call.data == "amar": markup = types.InlineKeyboardMarkup() c = types.InlineKeyboardButton("بروز رسانی💎",callback_data='amar') markup.add(c) usrs = str(redis.scard('seenchipy')) cha = str(redis.scard('chatpys')) tex = 'تعداد کاربران👤 : {}\nتعداد گروه🎯: {}'.format(usrs,cha) bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text = tex, reply_markup=markup, parse_mode='Markdown')
def crawl_page(thread_name, page_url): # print(spider.gather_links(page_url)) # exit() if not redis.sismember(spider.redis_cralw, com.md5_url(page_url)): print(thread_name + ' now crawling ' + str(page_url)) print('Queue ' + str(redis.scard(spider.redis_queue)) + ' | Crawled ' + str(redis.scard(spider.redis_cralw))) redis.sadd(spider.redis_cralw, com.md5_url(page_url)) # cralw add spider.gather_links(page_url) # 搜索url # redis.srem(spider.redis_queue,page_url)# queue remove mysqldb.insertCrawl(spider.project_name, page_url) else: print("it is cralw")
def get_GoldGameList(redis): """ 获取金币场场次 """ res = [] for gameid in redis.smembers(GOLD_GAMEID_SET): list = PARTY_GOLD_GAME_LIST.get(gameid, PARTY_GOLD_GAME_LIST.get('default')) data = copy.deepcopy(list) for item in data: if gameid == '555': item['gameName'] = '经典牛牛' elif gameid == '666': item['gameName'] = '欢乐牛牛' elif gameid == '556': item['gameName'] = '明牌牛牛' elif gameid == '444': item['gameName'] = '东胜麻将' elif gameid == '557': item['gameName'] = '欢乐拼点' item['hasOwner'] = '1' # 支持好友开房 online = redis.scard(GOLD_ONLINE_PLAYID_ACCOUNT_SET % (gameid, item['id'])) item['online'] = online res.append({'gameid': gameid, 'config': data}) return res
def do_add_yesterday_data(redis, yesterday): print yesterday yesterday = convert_util.to_int( redis.scard(FORMAT_LOGIN_DATE_TABLE4FISH % (yesterday))) total = redis.incr("fish:login:per:day:total", yesterday) print 'do_add_yesterday_data[%s]' % (total)
def doPatchSign(redis, account, date): """ 补签接口 补签需要消耗2张房卡 """ user_info = get_user_info(redis, account) uid = user_info['uid'] agentid = user_info['parentAg'] roomcard = redis.get(USER4AGENT_CARD % (agentid, uid)) roomcard = int(roomcard) if roomcard else 0 if roomcard < PATCH_SIGN_FEE: return {'code': 1, 'msg': "钻石不足"} month = datetime.strptime(date, '%Y-%m-%d').month key = WELFARE_USER_PATCH_SIGN % (account, month) if redis.sismember(key, date): return {'code': 1, 'msg': "已补签过"} times = redis.scard(key) # 每月补签次数是否达到上限 if times and int(times) > PATCH_SIGN_MAX: return {'code': 1, 'msg': "当月补签已达上限"} redis.sadd(key, date) return {'code': 0, 'msg': "补签成功"}
def do_create_total(redis): count = 0 for key in redis.keys(FORMAT_LOGIN_DATE_TABLE4FISH%('*')): count+=convert_util.to_int(redis.scard(key)) print 'do_create_total total[%s]'%(count) redis.set("fish:login:per:day:total",count)
def getGoldOperateInfos(redis, selfUid, startDate, endDate, niuniu_type): prredis = getPrivateRedisInst(redis, MASTER_GAMEID) try: startDate = datetime.strptime(startDate, '%Y-%m-%d') endDate = datetime.strptime(endDate, '%Y-%m-%d') except: weekDelTime = timedelta(7) weekBefore = datetime.now() - weekDelTime startDate = weekBefore endDate = datetime.now() deltaTime = timedelta(1) res = [] while startDate <= endDate: dateStr = endDate.strftime('%Y-%m-%d') gameid = '555' if niuniu_type == '1': gameid = '555' elif niuniu_type == '2': gameid = '556' elif niuniu_type == '3': gameid = '666' if prredis.exists(GOLD_OPERATE % (gameid, dateStr)): info = prredis.hgetall(GOLD_OPERATE % (gameid, dateStr)) info['online_user_max'] = redis.hget( GOLD_ONLINE_MAX_ACCOUNT_TABLE % (gameid, dateStr), 'count') info['date'] = dateStr info['buy_gold_total'] = redis.get(DAILY_GOLD2_SUM % dateStr) info['buy_money'] = redis.get(DAILY_GOLD2_MONEY_SUM % dateStr) info['buy_money'] = float( info['buy_money']) / 100 if info['buy_money'] else 0 info['buy_gold_count'] = redis.scard(DAILY_USER_GOLD2_SET % dateStr) info['buy_gold_people_num'] = 'buy_record_info?date=%s' % dateStr room_num = 0 if datetime.now().strftime("%Y-%m-%d") == dateStr: info['online_user'] = redis.scard(GOLD_ONLINE_ACCOUNT_SET % gameid) for roomid in redis.smembers(GOLD_ONLINE_ROOM_SET % gameid): room_table = ROOM2SERVER % roomid pl_count = redis.hget(room_table, 'playerCount') if not pl_count or pl_count <= '0': continue room_num += 1 info['room_count'] = room_num res.append(info) endDate -= deltaTime return {"count": 1, "data": res}
def _handle_message(self, msg): """ Forwards messages from Redis to the players directly connected to this instance. """ self._debug('RECEIVED - {}', extra=[str(msg)]) if msg['type'] != 'message' or msg['channel'] != self.topic: return # Ignore messages we don't need msg = json_loads(msg['data']) # If we have the artist, we're responsible for adjusting game state must_pass = False artist = self._get_artist() score = None guesser = None if self._has_artist(artist): if msg.verb == 'GUESSED': if msg.player_name == artist: self._error('artist ({}) submitted a guess', extra=[artist]) else: word = redis.get(self.word_key) # TODO: Correct is only set for clients connected to this instance. msg.correct = word.lower() == msg.word.lower() if msg.correct: guesser = msg.player_name score = redis.zincrby(self.players_key, msg.player_name, 1) word_won(word) must_pass = True elif msg.verb == 'SKIPPED': if msg.player_name == artist: self._error('artist ({}) voted to skip', extra=[artist]) else: voted = redis.scard(self.skip_key) total = redis.zcard(self.players_key) - 1 if voted * 2 > total: must_pass = True elif msg.verb == 'ENDED': if msg.player_name == artist: must_pass = True # TODO: Player name will be sent on other instances del msg.player_name # Repeat the message to all players for p in self.players: if msg.verb == 'PASSED' and msg.player_name == p.name: # Add the word to the passed message for the correct player special = Message(msg) special.word = redis.get(self.word_key) gevent.spawn(p.send, special) else: gevent.spawn(p.send, msg) if must_pass: self._pass_turn(artist, guesser=guesser, score=score)
def set_cards_participant(hash_position: str) -> None: """ Cria as cartelas do participante. Parameters: hash_position: número do usuário. """ while redis.scard(CARD + hash_position) < 15: redis.sadd(CARD + hash_position, redis.srandmember(CARDS))
def remove_member(number, sourceId): if redis.scard(number) == 1: redis.srem(number, sourceId) redis.delete(number + '_member') else: redis.srem(number, sourceId) redis.hset(sourceId, 'current', '-') redis.hset(sourceId, 'voted', 'N') redis.hdel(sourceId, 'status')
def about_handler(message): kb = create_about_keyboard() count_users = redis.scard('unique_users') text = get_about_text(count_users) if type(message) == telebot.types.Message: bot.send_message(message.chat.id, text, reply_markup=kb, disable_web_page_preview=True) else: try: bot.edit_message_text(text, message.message.chat.id, message.message.message_id, disable_web_page_preview=True, reply_markup=kb) except ApiException: pass
def main(): while True: data,newCount = dataHandle()#整理后的数据 sumCount = redis.scard(listKey) #获取新数据总量 if newCount<=0: print('本次未获取到新数据;总的新数据:'+str(sumCount)) time.sleep(offtime) continue tabs.insert_many(data) #插入数据库 print('总爬取次数:'+str(allCount)) print('本次获取新数据:'+str(newCount)) print('总的新数据:'+str(sumCount)) time.sleep(outtime)
def m(m): try: if (m.from_user.id) == admin: if m.text == "/stats": ms = redis.scard('mbrs_bot') bot.send_message(m.chat.id, '👥Members : <code>{}</code>'.format(ms),parse_mode='HTML') if re.match("^(/ban) (.*)", m.text): mn = re.match("^(/ban) (.*)", m.text) redis.sadd("bans", mn.group(2)) bot.send_message(m.chat.id, "🤖کاربر {} از ربات مسدود شد.".format(mn.group(2))) bot.send_message(mn.group(2), "🔰شما در این ربات مسدود شدید.") if re.match("^(/unban) (.*)", m.text): mn = re.match("^(/unban) (.*)", m.text) redis.srem('bans',mn.group(2)) bot.send_message(m.chat.id, "🤖کاربر {} ازاد شد.".format(mn.group(2))) bot.send_message(mn.group(2), "🔰شما از مسدودیت در این ربات ازاد شدید.") except Exception as e: print e
def refresh_board(number): redis.delete(number + '_member') data = redis.smembers(number) i = 1 for value in data: redis.hset(number + '_member', i, value) i += 1 push_all( number, TextSendMessage( text='もう1回やる?\uD83D\uDE03 抜ける人は 退出する ボタンを押してね\uD83D\uDE4F')) push_all( number, TextSendMessage(text='投票No.' + str(number) + ' (参加者' + str(redis.scard(number)) + '人)の投票板です\uD83D\uDE04\n' + '5秒間投票をスタートするなら 投票開始≫ ボタンを押してね\uD83D\uDE03')) push_all(number, generate_planning_poker_message(number))
def crawling(self, homepage): # 循环条件:抓取深度不超过crawl_deepth while self.current_deepth <= self.crawl_deepth: # 循环条件:待抓取的链接不空 print(self.UrlsEnmpy()) print(int(redis.scard(deepspider.redis_queue))) while self.UrlsEnmpy(): # 队头url出队列 visitUrl = redis.spop(deepspider.redis_queue) if visitUrl is None or visitUrl == "": continue # 将url放入已访问的url中 redis_cralw 数据库 redis.sadd(deepspider.redis_cralw, com.md5_url(visitUrl)) print(visitUrl) print(self.current_deepth) # 获取超链接 links = self.getHyperLinks(visitUrl, homepage) # 未访问的url入列 for link in links: redis.sadd(deepspider.redis_cralw, link) # print(link) self.current_deepth += 1
def push_result_message(vote_num): push_all( vote_num, TextSendMessage( text='\uD83C\uDF1F\uD83C\uDF1F結果発表\uD83C\uDF1F\uD83C\uDF1F')) answer_count = redis.hlen('res_' + vote_num) if answer_count == 0: push_all(vote_num, TextSendMessage(text='投票者ゼロでした\uD83D\uDE22')) return data = redis.hvals('res_' + vote_num) answer_count = 0 for value in data: answer_count += int(value) member_count = redis.scard(vote_num) nonvote = 0 if member_count > answer_count: nonvote = member_count - answer_count push_all(vote_num, TextSendMessage(text='(棄権' + str(nonvote) + '人)')) result_list = generate_result_list(vote_num) one_str = result_list[0] two_str = result_list[1] three_str = result_list[2] push_all(vote_num, TextSendMessage(text='3位は・・・')) time.sleep(RESULT_DISPLAY_TIMEOUT) push_all(vote_num, TextSendMessage(text=three_str)) time.sleep(RESULT_DISPLAY_TIMEOUT) push_all(vote_num, TextSendMessage(text='2位は・・・')) time.sleep(RESULT_DISPLAY_TIMEOUT) push_all(vote_num, TextSendMessage(text=two_str)) time.sleep(RESULT_DISPLAY_TIMEOUT) push_all(vote_num, TextSendMessage(text='\uD83C\uDF1F1位\uD83C\uDF1Fは・・・・')) time.sleep(RESULT_DISPLAY_TIMEOUT) push_all(vote_num, TextSendMessage(text=one_str))
def getOnlineOperateInfos(redis): prredis = getPrivateRedisInst(redis, MASTER_GAMEID) # 总当前在线人数 online_people_sum = redis.scard(GOLD_ONLINE_ACCOUNT_SET_TOTAL) # 当前在线房间数 online_room_num = 0 for roomid in redis.smembers(GOLD_ONLINE_ROOM_SET_TOTAL): room_table = ROOM2SERVER % roomid pl_count = redis.hget(room_table, 'playerCount') if not pl_count or pl_count == '0': continue online_room_num += 1 # online_room_num = redis.scard(GOLD_ONLINE_ROOM_SET_TOTAL) # 当前玩家金币总数 user_current_gold_sum = 0 for account in prredis.smembers(GOLD_ACCOUNT_SET_TOTAL): user_table = redis.get(FORMAT_ACCOUNT2USER_TABLE % account) if not user_table: continue gold = redis.hget(user_table, 'gold') gold = int(gold) if gold else 0 user_current_gold_sum += gold return online_people_sum, online_room_num, user_current_gold_sum
import redis import pika #get message from redis then send to rabbitmq mqconn = pika.BlockingConnection(pika.ConnectionParameters(host='localhost')) channel = mqconn.channel() channel.queue_declare(queue='StudyStatus') redis = redis.Redis(host='10.100.134.160',port=6380,db=1) redisKey = "student.6510000" while (redis.scard(redisKey)>0): messagebody = redis.spop(redisKey) channel.basic_publish(exchange='',routing_key='StudyStatus',\ body=messagebody) mqconn.close()
redis = redis.StrictRedis() mongo = pymongo.MongoClient() collection = mongo.twitter.tweets user_collection = mongo.twitter.users collection.create_index([('id', pymongo.ASCENDING)], unique=True) user_collection.create_index([('id', pymongo.ASCENDING)], unique=True) initialUsers = [ 27260086, ] redis.sadd('users', *initialUsers) while redis.scard('users') > 0: redis.delete('user_connections') uid = redis.spop('users') try: user = api.get_user(user_id=uid) except tweepy.TweepError as e: print(e) print('Error when looking up user {}'.format(uid)) continue if user.protected: print('Skipping protected user {} (@{})'.format( user.name, user.screen_name)) redis.sadd('users_done', uid) continue
def handle_text_message(event): text = event.message.text sourceId = getSourceId(event.source) matcher = re.match(r'^#(\d+) (.+)', text) if text == 'join': #メンバ集め number = str(redis.get('maxVoteKey')).encode('utf-8') join_mutex = Mutex(redis, JOIN_MUTEX_KEY_PREFIX + number) join_mutex.lock() redis.sadd(number, sourceId) redis.hset(number + '_member', redis.scard(number), sourceId) redis.hset(sourceId, 'current', number) if join_mutex.is_lock(): time.sleep(JOIN_MUTEX_TIMEOUT) push_all( number, TextSendMessage(text='投票No.' + str(number) + ' (参加者' + str(redis.scard(number)) + '人)の投票板です\uD83D\uDE04\n' + '5秒間投票をスタートするなら 投票開始≫ ボタンを押してね\uD83D\uDE03')) push_all(number, generate_planning_poker_message(number)) join_mutex.unlock() redis.incr('maxVoteKey') elif text == 'add': current = redis.hget(sourceId, 'current') if current != '-': remove_member(current, sourceId) line_bot_api.push_message( sourceId, TextSendMessage(text='参加したい投票No.を入力してください\uD83D\uDE03')) redis.hset(sourceId, 'status', 'number_wait') elif matcher is not None: number = matcher.group(1) value = matcher.group(2) current = redis.hget(sourceId, 'current').encode('utf-8') if current != number: line_bot_api.push_message( sourceId, TextSendMessage(text='投票板が古かった?もう一度お願いします!')) line_bot_api.push_message(sourceId, generate_planning_poker_message(current)) return if value == '11': #退出 resign_operation(number, sourceId) return status = redis.hget('status_' + number, 'status') if status is None: vote_mutex = Mutex(redis, VOTE_MUTEX_KEY_PREFIX + number) if value == '0': #開始 vote_mutex.lock() if vote_mutex.is_lock(): push_all( number, TextSendMessage( text='5秒間投票をはじめます\uD83D\uDD52名前をタップして投票どうぞ\u2755')) redis.hset('status_' + number, 'status', 'inprogress') time.sleep(2) push_all(number, TextSendMessage(text='あと3秒!')) time.sleep(3) push_all( number, TextSendMessage(text='-\uD83D\uDD52投票終了\uD83D\uDD52-')) vote_mutex.unlock() redis.delete('status_' + number) member_list = redis.smembers(number) for memberid in member_list: redis.hset(memberid, 'voted', 'N') push_result_message(number) #結果発表後の結果クリア redis.delete('res_' + number) refresh_board(number) return else: line_bot_api.push_message( sourceId, TextSendMessage(text='投票開始ボタンがまだ押されていないようです\uD83D\uDCA6')) else: if redis.hget(sourceId, 'voted') == 'Y': line_bot_api.push_message( sourceId, TextSendMessage(text='すでに投票済です・・結果集計まで待ってね\uD83D\uDE04')) return elif value == '0': line_bot_api.push_message( sourceId, TextSendMessage(text='もうはじまってるよ、誰かに投票して!\uD83D\uDE04')) elif value == '11': resign_operation(number, sourceId) else: #異常値処理省略 redis.hincrby('res_' + number, value) redis.hset(sourceId, 'voted', 'Y') else: current = redis.hget(sourceId, 'current') if current is not None and current != '-': display_name = getUtfName(line_bot_api.get_profile(sourceId)) push_all_except_me(current, sourceId, TextSendMessage(text=display_name + ':' + text)) elif redis.hget(sourceId, 'status') == 'number_wait': if text == '0': redis.hdel(sourceId, 'status') line_bot_api.push_message( sourceId, TextSendMessage( text='始めるときは参加!ボタンをみんなと一緒に押してね\uD83D\uDE04')) line_bot_api.push_message(sourceId, generateJoinButton()) elif redis.exists(text) == 1: redis.hdel(sourceId, 'status') redis.sadd(text, sourceId) redis.hset(sourceId, 'current', text) if redis.hget('status_' + text, 'status') is None: redis.hset(text + '_member', redis.scard(text), sourceId) push_all(text, TextSendMessage(text='メンバーが増えたので再度投票板を表示します')) push_all( text, TextSendMessage( text='投票No.' + str(text) + ' (参加者' + str(redis.scard(text)) + '人)の投票板です\uD83D\uDE04\n' + '5秒間投票をスタートするなら 投票開始≫ ボタンを押してね\uD83D\uDE03')) push_all(text, generate_planning_poker_message(text)) else: line_bot_api.push_message( sourceId, TextSendMessage( text= '見つからないです・・参加したい投票No.を再入力してね\uD83D\uDE22(初期画面に戻るなら 0 )' ))
def crawl(): if int(redis.scard(domain_run.redis_queue)) > 0: print( str(redis.scard(domain_run.redis_queue)) + ' links in the queue')
def UrlsEnmpy(): return int(redis.scard(domain_run.redis_queue)) == 0
def stats(m): if str(m.from_user.id) == is_sudo: stats = redis.scard('startmebot') bot.send_message(m.chat.id, "`تعداد کاربران`👇\n*{}*".format(stats), parse_mode="Markdown")
from sqlalchemy.ext.automap import automap_base from sqlalchemy.orm import sessionmaker # get student/studentcode in learning on base db , then send into redis use set type engine = create_engine('oracle://*****:*****@10.100.134.177:1521/orcl') tables = ['eas_schroll_student'] metadata=MetaData() metadata.reflect(engine,only=tables) Base = automap_base(metadata=metadata) Base.prepare() student = Base.classes.eas_schroll_student #print(student.__table__) # get data then import redis only save in redis db1 redis = redis.Redis(host='10.100.134.160',port=6380,db=1) DBsession = sessionmaker(bind=engine) session = DBsession() redisKey = "student.6510000" for studentcode in session.query(student.studentcode).filter_by(learningcentercode='6510000').\ filter_by(enrollmentstatus='1'): #print(studentcode[0]) redis.sadd(redisKey,studentcode[0]) session.close() print (redis.scard(redisKey))
def send_welcome(message): if is_sudo(message.from_user.id): bot.reply_to(message, redis.scard("@PaydarTeamSupportBot")) else: bot.reply_to(message, "siktir |:")
import redis import pika #get message from redis then send to rabbitmq mqconn = pika.BlockingConnection(pika.ConnectionParameters(host='localhost')) channel = mqconn.channel() channel.queue_declare(queue='StudyStatus') redis = redis.Redis(host='10.100.134.160', port=6380, db=1) redisKey = "student.6510000" while (redis.scard(redisKey) > 0): messagebody = redis.spop(redisKey) channel.basic_publish(exchange='',routing_key='StudyStatus',\ body=messagebody) mqconn.close()
def AddStudent2redis(): # this date will into redis and delete his select course sql = 'select studentcode from eas_schroll_student where to_number(substr(learningcentercode,1,3))=440 and rownum<20000' for row in engine.execute(sql): redis.sadd('newstudents',row.studentcode) return redis.scard('newstudents')
def send_welcome(message): if is_sudo(message.from_user.id): bot.reply_to(message, redis.scard("porsmanbot")) else: bot.reply_to(message, "siktir |:")
def queue_size(queue_name): return redis.scard(queue_name)
def UrlsEnmpy(self): return int(redis.scard(deepspider.redis_queue)) > 0