#!/usr/bin/python # -*- coding: GBK -*- #--------------------------------------------------------------------- # #--------------------------------------------------------------------- ##@package ReadCaptchaImage # @todo: ¼ÓÔØÍ¼ÐÎÑéÖ¤Âë # # @author: panwei # @date 2011-05-31 21:30 # @version 1.5 # # @note: # @change: "2011-06-05 01:20" Alee ÐÞ¸ÄΪ¶àÎļþ¶ÁÈ¡£¬²»´æÄÚ´æÖÐ # @change: "2011-06-07 11:10" Alee ·µ»ØÖµÍ³Ò» # @change: "2011-06-17 11:00" Alee Ìí¼ÓÖØ¶Á¹¦ÄÜ # @change: "2011-06-23 13:40" Alee Ëæ»úÉú³ÉÑéÖ¤ÂëÖØÔØ # @change: "2011-07-11 18:00" Alee ÐÞ¸´È«¾Ö²ÎÊý´«²ÎÎÞ·¨±ä¸üµÄÎÊÌâ #--------------------------------------------------------------------- """Version = 2011-07-11 18:00""" #--------------------------------------------------------------------- import ChConfig import GameWorld import os import random import ShareDefine import ReadChConfig #--------------------------------------------------------------------- #È«¾Ö±äÁ¿ g_captchaImageTexDict = {} g_captchaImageJpegDict = {} #Ëæ»úÑéÖ¤Â뿪¹Ø Def_Random_Captcha_Open = 1 #--------------------------------------------------------------------- #È«¾Ö³£Á¿ Def_FilePath = ChConfig.GetAppPath() + "\\" + "CaptchaImage\\" #--------------------------------------------------------------------- ##»ñÈ¡ÑéÖ¤Âë # @param ÎÞ²ÎÊý # @return ÑéÖ¤Âë´ð°¸, ÑéÖ¤ÂëÄÚÈÝ # @remarks def GetCaptchaImage(): global g_captchaImageTexDict global g_captchaImageJpegDict #¼ì²éËæ»úÑéÖ¤Â뿪¹Ø if ReadChConfig.GetEvalChConfig("Random_Captcha_Open") == Def_Random_Captcha_Open: captchaName, captchaStream, g_captchaImageJpegDict = \ GetCaptchaImageByExt(ShareDefine.Def_Notify_WorldKey_ReloadJpegCaptcha, 'jpegCaptchaPath.txt', g_captchaImageJpegDict) #³É¹¦·µ»Ø if captchaName != 0: return captchaName, captchaStream #Ëæ»úʧ°ÜÔò¶ÁÈ¡¹Ì¶¨tex captchaName, captchaStream, g_captchaImageTexDict = \ GetCaptchaImageByExt(ShareDefine.Def_Notify_WorldKey_ReloadTexCaptcha, 'texCaptchaPath.txt', g_captchaImageTexDict) return captchaName, captchaStream ##¸ù¾ÝÖ¸¶¨µÄÎļþ»ñÈ¡ÑéÖ¤Âë # @param reloadKey ÖØ¶Á×Öµä # @param fileName Ö¸¶¨Îļþ # @param gameDict ´æ´¢ÑéÖ¤Âë·¾¶ # @return ÑéÖ¤Âë´ð°¸, ÑéÖ¤ÂëÄÚÈÝ def GetCaptchaImageByExt(reloadKey, fileName, gameDict): if GameWorld.GetGameWorld().GetGameWorldDictByKey(reloadKey): #ÖØ¶Á gameDict = {} #¹Ø±Õ×Öµä GameWorld.GetGameWorld().SetGameWorldDict(reloadKey, 0) if len(gameDict) == 0: #ÖØÐ¼ÓÔØÑéÖ¤Âë gameDict = ReloadCaptchaImageDict(fileName, gameDict) if len(gameDict) != 0: #Ëæ»ú¸øÒ»¸ö captchaInfo = random.choice(gameDict.items()) if len(captchaInfo) != 2: GameWorld.ErrLog('Ëæ»ú³öÒ»¸ö´íÎóµÄͼÐÎÑéÖ¤Âë %s'%str(captchaInfo)) return 0, '', gameDict fileName, fileStream = GetParseCaptchaInfo(captchaInfo) return fileName, fileStream, gameDict GameWorld.ErrLog('GetCaptchaImage Error, Def_FilePath = %s%s'%(Def_FilePath, fileName)) return 0, '', gameDict ##ÖØÐ¼ÓÔØÑéÖ¤Âë # @param ÎÞ²ÎÊý # @return ×Öµä def ReloadCaptchaImageDict(fileName, gameDict): filePath = Def_FilePath + fileName if not os.path.isfile(filePath): return fileIns = open(filePath, 'r') for imageStr in fileIns.readlines(): imageInfo = imageStr.split() if len(imageInfo) != 2: continue gameDict.update({imageInfo[0].strip():imageInfo[1].strip()}) GameWorld.Log('ReloadCaptchaImage %s'%fileName) return gameDict ##»ñµÃÎļþÃûºÍ¶þ½øÖÆÎļþÁ÷ # @param captchaInfo È¡µ½µÄ×Öµä¶Ô # @return ÎļþÃûºÍ¶þ½øÖÆÎļþÁ÷ def GetParseCaptchaInfo(captchaInfo): fileName = captchaInfo[0].split('_')[-1] openfilePath = Def_FilePath + captchaInfo[1] try: openfile = open(openfilePath, 'rb') except: GameWorld.ErrLog('Ëæ»ú³öÒ»¸ö´íÎóµÄͼÐÎÑéÖ¤Âë·¾¶ %s'%str(openfilePath)) return 0, '' return fileName, openfile.read() ###ÖØÐÂÉèÖÃͼÐÎÑéÖ¤Âë ## @param ÎÞ ## @return ÎÞ #def ReSetCaptcha(): # #¿ª¹âÑéÖ¤ # if ReadChConfig.GetEvalChConfig("Random_Captcha_Open") != Def_Random_Captcha_Open: # return # # curHour = GameWorld.GetCurrentTime().hour # # #ͼƬºÍÎļþÉú³ÉÖ»Ò»¸öµØÍ¼´¦Àí£¨¾©³Ç£© # if GameWorld.GetMap().GetMapID() == ChConfig.Def_MapID_JingCheng \ # and GameWorld.GetGameWorld().GetCopyMapID() == 0: # # if curHour == 3: # #5µãÖØÐÂÉú³ÉͼƬ # os.system("start %s"%(Def_FilePath + "VerificationCodePic\\Start.bat")) # # elif curHour == 4: # #6µãÖØÐÂÉú³ÉÎļþ¼Ç¼ # os.system("start %s"%(Def_FilePath + "jpeg.bat")) # # if curHour == 5: # #7µãÖØ¶ÁÎļþ¼ÓÔØÖÁÓÎÏ·ÖÐ # GameWorld.GetGameWorld().SetGameWorldDict(ShareDefine.Def_Notify_WorldKey_ReloadJpegCaptcha, 1) # # return