This commit is contained in:
Wuyi无疑 2021-12-04 19:12:19 +08:00
parent ed7e5c5b79
commit f8a7e1c34b
4 changed files with 252 additions and 186 deletions

View File

@ -48,6 +48,18 @@ $ pip3 install -r requirements.txt
**作者已经转用NoneBot2Hoshino的更新可能未经测试有bug及时提Issues**
#### 2021-12-04
修复:`查询词云`功能失效的问题。
修复:`查询`功能只能查到8个角色的问题经测试应该BanIP概率极低需要在配置文件中加入`genshinuid_use_new_get_chars_method=1`才可生效)。
修复:`校验全部Cookies`命令错误的问题(**由于API返回字段变化的缘故旧版本使用该命令会清空所有Ck旧版本请不要使用该命令**),该问题同时导致`添加`命令不可用,均已修复。
优化查询时优先从数据库中调用主人的Cookies。
优化错误Cookies将在`NewCookiesTable`中的`Extra`标记为`error`(失效)或者`limit30`(今天达到30人限制),其中`limit30`将在每日零点清空。
#### 2021-11-21
新增:`查询词云`功能

View File

@ -212,7 +212,7 @@ async def setting(ctx):
mys_data = await GetMysInfo(mysid,cookie)
mys_data = mys_data[0]
for i in mys_data['data']['list']:
if i['data'][0]['name'] != '活跃天数':
if i['game_id'] != 2:
mys_data['data']['list'].remove(i)
uid = mys_data['data']['list'][0]['game_role_id']
await cookiesDB(uid,cookie,userid)

View File

@ -47,7 +47,9 @@ async def CheckDB():
mysid_data = aid.group(0).split('=')
mysid = mysid_data[1]
mys_data = await GetMysInfo(mysid,row[1])
mys_data = mys_data[0]
for i in mys_data['data']['list']:
if i['game_id'] != 2:
mys_data['data']['list'].remove(i)
uid = mys_data['data']['list'][0]['game_role_id']
str = str + f"uid{row[0]}/mysid{mysid}的Cookies是正常的\n"
except:
@ -141,11 +143,24 @@ async def selectDB(userid,mode = "auto"):
return [row[2],3]
def deletecache():
try:
conn = sqlite3.connect('ID_DATA.db')
c = conn.cursor()
c.execute("DROP TABLE CookiesCache")
c.execute("UPDATE NewCookiesTable SET Extra = ? WHERE Extra=?",(None,"limit30"))
copyfile("ID_DATA.db", "ID_DATA_bak.db")
conn.commit()
conn.close()
except:
print("\nerror\n")
def errorDB(ck,err):
conn = sqlite3.connect('ID_DATA.db')
c = conn.cursor()
c.execute("DROP TABLE CookiesCache")
conn.commit()
conn.close()
if err == "error":
c.execute("UPDATE NewCookiesTable SET Extra = ? WHERE Cookies=?",("error",ck))
elif err == "limit30":
c.execute("UPDATE NewCookiesTable SET Extra = ? WHERE Cookies=?",("limit30",ck))
def cacheDB(uid,mode = 1,mys = None):
use = ''
@ -168,15 +183,36 @@ def cacheDB(uid,mode = 1,mys = None):
c_data = cursor.fetchall()
if len(c_data)==0:
cookiesrow = c.execute("SELECT * FROM NewCookiesTable ORDER BY RANDOM() limit 1")
for row2 in cookiesrow:
if mode == 2:
conn.create_function("REGEXP", 2, functionRegex)
cursor = c.execute("SELECT * FROM NewCookiesTable WHERE REGEXP(Cookies, ?) AND Extra != ?",(uid,"error"))
d_data = cursor.fetchall()
elif mode == 1:
cursor = c.execute("SELECT * FROM NewCookiesTable WHERE UID = ? AND Extra != ?",(uid,"error"))
d_data = cursor.fetchall()
if len(d_data)!=0:
use = d_data[0][1]
if mode == 1:
c.execute("INSERT OR IGNORE INTO CookiesCache (Cookies,UID) \
VALUES (?, ?)",(row2[1],uid))
if mode == 2:
VALUES (?, ?)",(use,uid))
elif mode == 2:
c.execute("INSERT OR IGNORE INTO CookiesCache (Cookies,MYSID) \
VALUES (?, ?)",(row2[1],uid))
use = row2[1]
VALUES (?, ?)",(use,uid))
else:
cookiesrow = c.execute("SELECT * FROM NewCookiesTable WHERE Extra IS NULL ORDER BY RANDOM() LIMIT 1")
e_data = cookiesrow.fetchall()
if len(e_data) != 0:
if mode == 1:
c.execute("INSERT OR IGNORE INTO CookiesCache (Cookies,UID) \
VALUES (?, ?)",(e_data[0][1],uid))
elif mode == 2:
c.execute("INSERT OR IGNORE INTO CookiesCache (Cookies,MYSID) \
VALUES (?, ?)",(e_data[0][1],uid))
use = e_data[0][1]
else:
return "没有可以使用的Cookies"
else:
use = c_data[0][2]
if mys:
@ -189,6 +225,10 @@ def cacheDB(uid,mode = 1,mys = None):
conn.close()
return use
def functionRegex(value,patter):
c_pattern = re.compile(r"account_id={}".format(patter))
return c_pattern.search(value) is not None
async def cookiesDB(uid,Cookies,qid):
conn = sqlite3.connect('ID_DATA.db')
c = conn.cursor()
@ -338,7 +378,6 @@ async def GetSignList():
return data
except:
print("访问失败,请重试!")
#sys.exit(1)
async def GetSignInfo(Uid,ServerID="cn_gf01"):
if Uid[0] == '5':
@ -357,7 +396,6 @@ async def GetSignInfo(Uid,ServerID="cn_gf01"):
return data
except:
print("访问失败,请重试!")
#sys.exit(1)
async def MysSign(Uid,ServerID="cn_gf01"):
if Uid[0] == '5':
@ -382,7 +420,6 @@ async def MysSign(Uid,ServerID="cn_gf01"):
return data2
except:
print("访问失败,请重试!")
#sys.exit(1)
async def GetAward(Uid,ServerID="cn_gf01"):
if Uid[0] == '5':
@ -405,7 +442,7 @@ async def GetAward(Uid,ServerID="cn_gf01"):
print("访问失败,请重试!")
#sys.exit(1)
async def GetInfo(Uid,ServerID="cn_gf01",Schedule_type="1",mysid = None):
async def GetInfo(Uid,ck,ServerID="cn_gf01"):
if Uid[0] == '5':
ServerID = "cn_qd01"
try:
@ -418,14 +455,14 @@ async def GetInfo(Uid,ServerID="cn_gf01",Schedule_type="1",mysid = None):
'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) miHoYoBBS/2.11.1',
'x-rpc-client_type': '5',
'Referer': 'https://webstatic.mihoyo.com/',
"Cookie": cacheDB(Uid,1,mysid)})
"Cookie": ck})
data = json.loads(req.text)
return data
except:
print("访问失败,请重试!")
#sys.exit(1)
async def GetSpiralAbyssInfo(Uid, ServerID="cn_gf01",Schedule_type="1",mysid = None):
async def GetSpiralAbyssInfo(Uid, ck,Schedule_type="1",ServerID="cn_gf01"):
if Uid[0] == '5':
ServerID = "cn_qd01"
try:
@ -435,7 +472,7 @@ async def GetSpiralAbyssInfo(Uid, ServerID="cn_gf01",Schedule_type="1",mysid = N
headers={
'DS': DSGet("role_id=" + Uid + "&schedule_type=" + Schedule_type + "&server="+ ServerID),
'Origin': 'https://webstatic.mihoyo.com',
'Cookie': cacheDB(Uid,1,mysid),
'Cookie': ck,
'x-rpc-app_version': mhyVersion,
'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) miHoYoBBS/2.11.1',
'x-rpc-client_type': '5',
@ -446,9 +483,10 @@ async def GetSpiralAbyssInfo(Uid, ServerID="cn_gf01",Schedule_type="1",mysid = N
return data
except:
print("1访问失败请重试")
#sys.exit(1)
def GetCharacter(Uid,Character_ids, ServerID="cn_gf01",mysid = None):
def GetCharacter(Uid,Character_ids, ck,ServerID="cn_gf01"):
if Uid[0] == '5':
ServerID = "cn_qd01"
try:
@ -457,7 +495,7 @@ def GetCharacter(Uid,Character_ids, ServerID="cn_gf01",mysid = None):
headers={
'DS': DSGet('',{"character_ids": Character_ids ,"role_id": Uid ,"server": ServerID}),
'Origin': 'https://webstatic.mihoyo.com',
'Cookie': cacheDB(Uid,1,mysid),
'Cookie': ck,
'x-rpc-app_version': mhyVersion,
'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) miHoYoBBS/2.11.1',
'x-rpc-client_type': '5',
@ -471,11 +509,7 @@ def GetCharacter(Uid,Character_ids, ServerID="cn_gf01",mysid = None):
print("访问失败,请重试!")
#sys.exit(1)
async def GetMysInfo(mysid,cookies = None):
if cookies:
ck = cookies
else:
ck = cacheDB(mysid,2)
async def GetMysInfo(mysid,ck):
try:
async with AsyncClient() as client:
req = await client.get(
@ -488,7 +522,7 @@ async def GetMysInfo(mysid,cookies = None):
'Referer': 'https://webstatic.mihoyo.com/',
"Cookie": ck})
data = json.loads(req.text)
return [data,mysid]
return data
except:
im = "err"
return im
@ -505,7 +539,6 @@ async def GetWeaponInfo(name):
async def GetCharInfo(name,mode = 0):
str = ""
if mode == 1:
str = "&talents=1"
elif mode == 2:

339
getImg.py
View File

@ -10,7 +10,7 @@ import numpy as np
from PIL import Image, ImageDraw, ImageFont, ImageFilter
from .getDB import GetInfo,GetCharacter,GetSpiralAbyssInfo,GetMysInfo
from .getDB import GetInfo,GetCharacter,GetSpiralAbyssInfo,GetMysInfo,errorDB
import os
import json
@ -61,67 +61,76 @@ def get_weapon_pic(url):
urllib.request.urlretrieve(url, os.path.join(WEAPON_PATH, url.split('/')[-1]))
async def draw_wordcloud(uid,image = None,mode = 2):
if mode == 3:
mys_data = await GetMysInfo(uid)
mysid_data = mys_data[1]
mys_data = mys_data[0]
for i in mys_data['data']['list']:
if i['data'][0]['name'] != '活跃天数':
mys_data['data']['list'].remove(i)
uid = mys_data['data']['list'][0]['game_role_id']
nickname = mys_data['data']['list'][0]['nickname']
role_level = mys_data['data']['list'][0]['level']
raw_data = await GetInfo(uid,"cn_gf01","1",mysid_data)
raw_Abyss_data = await GetSpiralAbyssInfo(uid,"cn_gf01","1",mysid_data)
else:
raw_Abyss_data = await GetSpiralAbyssInfo(uid,"cn_gf01","1")
raw_data = await GetInfo(uid)
if (raw_data["retcode"] != 0):
if (raw_data["retcode"] == 10001):
return ("Cookie错误/过期请重置Cookie")
elif (raw_data["retcode"] == 10101):
return ("当前cookies已达到30人上限")
elif (raw_data["retcode"] == 10102):
return ("当前查询id已经设置了隐私无法查询")
return (
"Api报错返回内容为\r\n"
+ str(raw_data) + "\r\n出现这种情况可能的UID输入错误 or 不存在"
)
else:
pass
while 1:
use_cookies = cacheDB(uid,mode-1)
if use_cookies == '':
return "绑定记录不存在。"
elif use_cookies == "没有可以使用的Cookies":
return "没有可以使用的Cookies"
if mode == 3:
mys_data = await GetMysInfo(uid,use_cookies)
mysid_data = uid
for i in mys_data['data']['list']:
if i['game_id'] != 2:
mys_data['data']['list'].remove(i)
uid = mys_data['data']['list'][0]['game_role_id']
nickname = mys_data['data']['list'][0]['nickname']
role_level = mys_data['data']['list'][0]['level']
raw_data = await GetInfo(uid,use_cookies)
raw_Abyss_data = await GetSpiralAbyssInfo(uid,use_cookies)
else:
raw_Abyss_data = await GetSpiralAbyssInfo(uid,use_cookies)
raw_data = await GetInfo(uid,use_cookies)
if (raw_data["retcode"] != 0):
if (raw_data["retcode"] == 10001):
#return ("Cookie错误/过期请重置Cookie")
errorDB(use_cookies,"error")
elif (raw_data["retcode"] == 10101):
#return ("当前cookies已达到30人上限")
errorDB(use_cookies,"limit30")
elif (raw_data["retcode"] == 10102):
return ("当前查询id已经设置了隐私无法查询")
return (
"Api报错返回内容为\r\n"
+ str(raw_data) + "\r\n出现这种情况可能的UID输入错误 or 不存在"
)
else:
break
raw_Abyss_data = raw_Abyss_data['data']
raw_data = raw_data['data']
char_data = raw_data["avatars"]
char_num = len(raw_data["avatars"])
if mode == 2:
char_ids = []
char_rawdata = []
for i in char_data:
char_ids.append(i["id"])
char_rawdata = await GetCharacter(uid,char_ids)
char_datas = char_rawdata["data"]["avatars"]
char_datas = []
def get_charid(start,end):
for i in range(start,end):
char_rawdata = GetCharacter(uid,[i],use_cookies)
weapons_datas = []
for i in char_datas:
weapons_datas.append(i['weapon'])
elif mode == 3:
char_ids = []
char_rawdata = []
for i in char_data:
char_ids.append(i["id"])
if char_rawdata["retcode"] == -1:
pass
else:
char_datas.append(char_rawdata["data"]['avatars'][0])
char_rawdata = await GetCharacter(uid,char_ids,"cn_gf01",mysid_data)
char_datas = char_rawdata["data"]["avatars"]
thread_list = []
st = 8
for i in range(0,8):
thread = threading.Thread(target = get_charid,args = (10000002+i*st,10000002+(i+1)*st))
thread_list.append(thread)
weapons_datas = []
for i in char_datas:
weapons_datas.append(i['weapon'])
for t in thread_list:
t.setDaemon(True)
t.start()
for t in thread_list:
t.join()
weapons_datas = []
for i in char_datas:
weapons_datas.append(i['weapon'])
l1_size = 2
l2_size = 4
@ -149,7 +158,7 @@ async def draw_wordcloud(uid,image = None,mode = 2):
star5num = 0
star5numcon = 0
for i in raw_data['avatars']:
for i in char_datas:
if i["name"] in ['雷电将军','温迪','钟离','枫原万叶']:
g3d1 += 1
if i["name"] in ['甘雨','','胡桃']:
@ -232,10 +241,13 @@ async def draw_wordcloud(uid,image = None,mode = 2):
if raw_data['homes'][0]['comfort_num'] >= 25000:
word_str["团雀附体"] = l2_size
if raw_Abyss_data['total_battle_times'] <= 12 and raw_Abyss_data['max_floor'] == '12-3':
word_str["PVP资格证"] = l4_size
if raw_Abyss_data["damage_rank"][0]["value"] >= 150000:
word_str["这一击,贯穿星辰"] = l4_size
if raw_Abyss_data["reveal_rank"] != []:
if raw_Abyss_data['total_battle_times'] <= 12 and raw_Abyss_data['max_floor'] == '12-3':
word_str["PVP资格证"] = l4_size
if raw_Abyss_data["damage_rank"][0]["value"] >= 150000:
word_str["这一击,贯穿星辰"] = l4_size
else:
pass
bg_list = random.choice([x for x in os.listdir(BG_PATH)
if os.path.isfile(os.path.join(BG_PATH, x))])
@ -325,36 +337,42 @@ def multi_color_func(word=None, font_size=None,
return "hsl({}, {}%, {}%)".format(colors[rand][0], colors[rand][1], colors[rand][2])
async def draw_abyss0_pic(uid,nickname,image = None,mode = 2,date = "1"):
if mode == 3:
mys_data = await GetMysInfo(uid)
mysid_data = mys_data[1]
mys_data = mys_data[0]
for i in mys_data['data']['list']:
if i['data'][0]['name'] != '活跃天数':
mys_data['data']['list'].remove(i)
uid = mys_data['data']['list'][0]['game_role_id']
nickname = mys_data['data']['list'][0]['nickname']
#role_region = mys_data['data']['list'][0]['region']
role_level = mys_data['data']['list'][0]['level']
raw_data = await GetSpiralAbyssInfo(uid,"cn_gf01",date,mysid_data)
raw_char_data = await GetInfo(uid,"cn_gf01",date,mysid_data)
else:
raw_data = await GetSpiralAbyssInfo(uid,"cn_gf01",date)
raw_char_data = await GetInfo(uid,"cn_gf01",date)
while 1:
use_cookies = cacheDB(uid,mode-1)
if use_cookies == '':
return "绑定记录不存在。"
elif use_cookies == "没有可以使用的Cookies":
return "没有可以使用的Cookies"
if (raw_data["retcode"] != 0):
if (raw_data["retcode"] == 10001):
return ("Cookie错误/过期请重置Cookie")
elif (raw_data["retcode"] == 10101):
return ("当前cookies已达到30人上限")
elif (raw_data["retcode"] == 10102):
return ("当前查询id已经设置了隐私无法查询")
return (
"Api报错返回内容为\r\n"
+ str(raw_data) + "\r\n出现这种情况可能的UID输入错误 or 不存在"
)
else:
pass
if mode == 3:
mys_data = await GetMysInfo(uid,use_cookies)
mysid_data = uid
for i in mys_data['data']['list']:
if i['game_id'] != 2:
mys_data['data']['list'].remove(i)
uid = mys_data['data']['list'][0]['game_role_id']
nickname = mys_data['data']['list'][0]['nickname']
#role_region = mys_data['data']['list'][0]['region']
role_level = mys_data['data']['list'][0]['level']
raw_data = await GetSpiralAbyssInfo(uid,use_cookies,date)
raw_char_data = await GetInfo(uid,use_cookies)
if (raw_data["retcode"] != 0):
if (raw_data["retcode"] == 10001):
#return ("Cookie错误/过期请重置Cookie")
errorDB(use_cookies,"error")
elif (raw_data["retcode"] == 10101):
#return ("当前cookies已达到30人上限")
errorDB(use_cookies,"limit30")
elif (raw_data["retcode"] == 10102):
return ("当前查询id已经设置了隐私无法查询")
return (
"Api报错返回内容为\r\n"
+ str(raw_data) + "\r\n出现这种情况可能的UID输入错误 or 不存在"
)
else:
break
raw_data = raw_data["data"]
raw_char_data = raw_char_data['data']["avatars"]
@ -609,36 +627,42 @@ async def draw_abyss0_pic(uid,nickname,image = None,mode = 2,date = "1"):
return resultmes
async def draw_abyss_pic(uid,nickname,floor_num,image = None,mode = 2,date = "1"):
if mode == 3:
mys_data = await GetMysInfo(uid)
mysid_data = mys_data[1]
mys_data = mys_data[0]
for i in mys_data['data']['list']:
if i['data'][0]['name'] != '活跃天数':
mys_data['data']['list'].remove(i)
uid = mys_data['data']['list'][0]['game_role_id']
nickname = mys_data['data']['list'][0]['nickname']
#role_region = mys_data['data']['list'][0]['region']
role_level = mys_data['data']['list'][0]['level']
raw_data = await GetSpiralAbyssInfo(uid,"cn_gf01",date,mysid_data)
raw_char_data = await GetInfo(uid,"cn_gf01",date,mysid_data)
else:
raw_data = await GetSpiralAbyssInfo(uid,"cn_gf01",date)
raw_char_data = await GetInfo(uid,"cn_gf01",date)
while 1:
use_cookies = cacheDB(uid,mode-1)
if use_cookies == '':
return "绑定记录不存在。"
elif use_cookies == "没有可以使用的Cookies":
return "没有可以使用的Cookies"
if (raw_data["retcode"] != 0):
if (raw_data["retcode"] == 10001):
return ("Cookie错误/过期请重置Cookie")
elif (raw_data["retcode"] == 10101):
return ("当前cookies已达到30人上限")
elif (raw_data["retcode"] == 10102):
return ("当前查询id已经设置了隐私无法查询")
return (
"Api报错返回内容为\r\n"
+ str(raw_data) + "\r\n出现这种情况可能的UID输入错误 or 不存在"
)
else:
pass
if mode == 3:
mys_data = await GetMysInfo(uid,use_cookies)
mysid_data = uid
for i in mys_data['data']['list']:
if i['game_id'] != 2:
mys_data['data']['list'].remove(i)
uid = mys_data['data']['list'][0]['game_role_id']
nickname = mys_data['data']['list'][0]['nickname']
#role_region = mys_data['data']['list'][0]['region']
role_level = mys_data['data']['list'][0]['level']
raw_data = await GetSpiralAbyssInfo(uid,use_cookies,date)
raw_char_data = await GetInfo(uid,use_cookies)
if (raw_data["retcode"] != 0):
if (raw_data["retcode"] == 10001):
#return ("Cookie错误/过期请重置Cookie")
errorDB(use_cookies,"error")
elif (raw_data["retcode"] == 10101):
#return ("当前cookies已达到30人上限")
errorDB(use_cookies,"limit30")
elif (raw_data["retcode"] == 10102):
return ("当前查询id已经设置了隐私无法查询")
return (
"Api报错返回内容为\r\n"
+ str(raw_data) + "\r\n出现这种情况可能的UID输入错误 or 不存在"
)
else:
break
is_edit = False
@ -800,33 +824,40 @@ async def draw_abyss_pic(uid,nickname,floor_num,image = None,mode = 2,date = "1"
return resultmes
async def draw_pic(uid,nickname,image = None,mode = 2,role_level = None):
if mode == 3:
mys_data = await GetMysInfo(uid)
mysid_data = mys_data[1]
mys_data = mys_data[0]
for i in mys_data['data']['list']:
if i['data'][0]['name'] != '活跃天数':
mys_data['data']['list'].remove(i)
uid = mys_data['data']['list'][0]['game_role_id']
nickname = mys_data['data']['list'][0]['nickname']
role_level = mys_data['data']['list'][0]['level']
raw_data = await GetInfo(uid,"cn_gf01","1",mysid_data)
else:
raw_data = await GetInfo(uid)
if (raw_data["retcode"] != 0):
if (raw_data["retcode"] == 10001):
return ("Cookie错误/过期请重置Cookie")
elif (raw_data["retcode"] == 10101):
return ("当前cookies已达到30人上限")
elif (raw_data["retcode"] == 10102):
return ("当前查询id已经设置了隐私无法查询")
return (
"Api报错返回内容为\r\n"
+ str(raw_data) + "\r\n出现这种情况可能的UID输入错误 or 不存在"
)
else:
pass
while 1:
use_cookies = cacheDB(uid,mode-1)
if use_cookies == '':
return "绑定记录不存在。"
elif use_cookies == "没有可以使用的Cookies":
return "没有可以使用的Cookies"
if mode == 3:
mys_data = await GetMysInfo(uid,use_cookies)
mysid_data = uid
for i in mys_data['data']['list']:
if i['game_id'] != 2:
mys_data['data']['list'].remove(i)
uid = mys_data['data']['list'][0]['game_role_id']
nickname = mys_data['data']['list'][0]['nickname']
role_level = mys_data['data']['list'][0]['level']
raw_data = await GetInfo(uid,use_cookies)
if (raw_data["retcode"] != 0):
if (raw_data["retcode"] == 10001):
#return ("Cookie错误/过期请重置Cookie")
errorDB(use_cookies,"error")
elif (raw_data["retcode"] == 10101):
#return ("当前cookies已达到30人上限")
errorDB(use_cookies,"limit30")
elif (raw_data["retcode"] == 10102):
return ("当前查询id已经设置了隐私无法查询")
return (
"Api报错返回内容为\r\n"
+ str(raw_data) + "\r\n出现这种情况可能的UID输入错误 or 不存在"
)
else:
break
bg_list = random.choice([x for x in os.listdir(BG_PATH)
if os.path.isfile(os.path.join(BG_PATH, x))])
@ -847,23 +878,13 @@ async def draw_pic(uid,nickname,image = None,mode = 2,role_level = None):
char_datas = []
def get_charid(start,end):
if mode == 2:
for i in range(start,end):
char_rawdata = GetCharacter(uid,[i])
if char_rawdata["retcode"] == -1:
pass
else:
char_datas.append(char_rawdata["data"]['avatars'][0])
else:
for i in range(start,end):
char_rawdata = GetCharacter(uid,[i],"cn_gf01",mysid_data)
if char_rawdata["retcode"] == -1:
pass
else:
char_datas.append(char_rawdata["data"]['avatars'][0])
for i in range(start,end):
char_rawdata = GetCharacter(uid,[i],use_cookies)
if char_rawdata["retcode"] == -1:
pass
else:
char_datas.append(char_rawdata["data"]['avatars'][0])
thread_list = []
st = 8