3
3
import opencc
4
4
import csv
5
5
import re
6
+ import time
6
7
import asyncio
8
+ import random
9
+ from PIL import Image , ImageDraw , ImageFont
7
10
from bs4 import BeautifulSoup
8
- from XunProxy import aioRequest
11
+ from XunProxy import aioRequest , PicDownload
12
+ from picture import AlphaPicOverlay
9
13
10
14
cc = opencc .OpenCC ('t2s' )
11
15
@@ -18,7 +22,7 @@ async def ServerList(name):
18
22
if html is not None :
19
23
data = json .loads (cc .convert (html ))
20
24
if len (data ['servers' ]) == 0 :
21
- return "未搜索到相关服务器或者EA服务器已经崩溃! "
25
+ return "未能搜索到相关服务器。 "
22
26
else :
23
27
returnStr = ""
24
28
for i in range (len (data ['servers' ])):
@@ -31,6 +35,57 @@ async def ServerList(name):
31
35
return "查询超时,请稍后再试!"
32
36
33
37
38
+ async def PicServerList (name ):
39
+ if name == "" :
40
+ name = "[LSP]"
41
+ url = "https://api.jobse.space/bf1/servers/?name=" + name + "&lang=zh-TW"
42
+ bg = "./pic/server_bg" + str (random .randint (1 , 4 )) + ".png"
43
+ SavePic = "./Temp/" + str (int (time .time ())) + ".png"
44
+
45
+ html = await aioRequest (url )
46
+ if html is not None :
47
+ titleFont = ImageFont .truetype (u"./font/DFP_sougeitai_W5-d813b437.ttf" , size = 70 )
48
+ searchFont = ImageFont .truetype (u"./font/DFP_sougeitai_W5-d813b437.ttf" , size = 35 )
49
+ nameFont = ImageFont .truetype (u"./font/DFP_sougeitai_W5-d813b437.ttf" , size = 25 )
50
+ detailFont = ImageFont .truetype (u"./font/DFP_sougeitai_W5-d813b437.ttf" , size = 20 )
51
+ im = Image .open (bg )
52
+ draw = ImageDraw .Draw (im )
53
+ draw .text ((300 , 40 ), "伺服器列表" , font = titleFont )
54
+ draw .text ((300 , 120 ), "搜索内容:" + name .replace ("%20" , " " ), font = searchFont )
55
+ im .save (SavePic )
56
+ data = json .loads (html )
57
+ if len (data ['servers' ]) == 0 :
58
+ im = Image .open (SavePic )
59
+ draw = ImageDraw .Draw (im )
60
+ draw .text ((800 , 500 ), "找不到伺服器" , font = searchFont )
61
+ draw .text ((795 , 545 ), "變更篩選條件並重試" , font = nameFont )
62
+ im .save (SavePic )
63
+ else :
64
+ for i in range (len (data ['servers' ])):
65
+ title = str (data ['servers' ][i ]['prefix' ])
66
+ queue = str (data ['servers' ][i ]['serverInfo' ]) + "[" + str (data ['servers' ][i ]['inQue' ]) + "]"
67
+ pic = str (data ['servers' ][i ]['url' ])
68
+ detail = str (data ['servers' ][i ]['mode' ]) + " - " + str (data ['servers' ][i ]['currentMap' ]) + " - 60HZ"
69
+
70
+ PicUrl = await PicDownload (pic )
71
+ im = Image .open (SavePic )
72
+ im1 = Image .open (PicUrl )
73
+ im1 .thumbnail ((144 , 84 ))
74
+ im .paste (im1 , (250 , 200 + 100 * i ))
75
+
76
+ draw = ImageDraw .Draw (im )
77
+ draw .text ((400 , 210 + 100 * i ), title , font = nameFont )
78
+ draw .text ((1400 , 210 + 100 * i ), queue , font = nameFont )
79
+ draw .text ((400 , 250 + 100 * i ), detail , font = detailFont )
80
+ im .save (SavePic )
81
+ AlphaPicOverlay (SavePic , "./pic/ping-best.png" , SavePic , 1510 , 210 + 100 * i )
82
+ if i >= 7 :
83
+ break
84
+ return SavePic
85
+ else :
86
+ return "查询超时,请稍后再试!"
87
+
88
+
34
89
async def Stats (name ):
35
90
if name is None :
36
91
return "未绑定昵称!请使用“/绑定+(空格)+[ID]”绑定昵称"
@@ -154,7 +209,8 @@ async def TempStats(name):
154
209
general = stats [1 ].find_all (name = "div" , attrs = {"class" : "value" })
155
210
content .append ('' .join (re .findall ('[0-9.,%]' , general [5 ].string )))
156
211
content .append ('' .join (re .findall ('[0-9.,%]' , general [6 ].string )))
157
- returnStr = "昵称:" + name + "\n 等级:" + content [0 ] + "\n KD:" + content [1 ] + "\n 胜率:" + content [2 ] + "\n 游戏时间:" + content [3 ] + "\n SPM:" + content [4 ] + "\n 场均击杀:" + content [5 ] + "\n KPM:" + content [6 ] + "\n 技巧值:" + content [7 ] + "\n 精准度:" + content [8 ]
212
+ returnStr = "昵称:" + name + "\n 等级:" + content [0 ] + "\n KD:" + content [1 ] + "\n 胜率:" + content [2 ] + "\n 游戏时间:" + content [3 ] + "\n SPM:" + content [4 ] + "\n 场均击杀:" + content [
213
+ 5 ] + "\n KPM:" + content [6 ] + "\n 技巧值:" + content [7 ] + "\n 精准度:" + content [8 ]
158
214
except :
159
215
return "查询昵称有误!"
160
216
return returnStr
@@ -206,7 +262,7 @@ def FindBinding(id):
206
262
207
263
async def BFservers (id , command ):
208
264
if command .startswith ("/服务器" ):
209
- return await ServerList (command .replace ("/服务器" , "" ).replace (" " , "" ))
265
+ return await PicServerList (command .replace ("/服务器 " , "" ).replace ("/服务器" , "" ). replace ( " " , "%20 " ))
210
266
elif command .startswith ("/战绩" ):
211
267
if command .replace ("/战绩" , "" ) == "" :
212
268
return await Stats (FindBinding (id ))
0 commit comments