From b5334dfc0134b2520b480ef58c21063548af2275 Mon Sep 17 00:00:00 2001 From: Art_Sakura <1754798088@qq.com> Date: Sun, 27 Apr 2025 17:00:58 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20=E5=AE=8C=E6=88=90=E5=AF=B9?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E7=9A=84=E7=BF=BB=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 28 ++-- __init__.py | 9 +- command.py | 80 ++++++++---- config/plant.json | 15 +++ config/sign_in.json | 4 + database.py | 215 +++++++++++++++++++++++++++++-- farm/farm.py | 20 +-- farm/shop.py | 54 ++++---- log/log.md | 15 +++ request.py | 10 +- resource/plant/ATTomato/1.png | Bin 0 -> 4519 bytes resource/plant/ATTomato/2.png | Bin 0 -> 5821 bytes resource/plant/ATTomato/3.png | Bin 0 -> 16881 bytes resource/plant/ATTomato/4.png | Bin 0 -> 18666 bytes resource/plant/ATTomato/5.png | Bin 0 -> 18537 bytes resource/plant/ATTomato/icon.png | Bin 0 -> 7309 bytes 16 files changed, 358 insertions(+), 92 deletions(-) create mode 100644 config/sign_in.json create mode 100644 log/log.md create mode 100644 resource/plant/ATTomato/1.png create mode 100644 resource/plant/ATTomato/2.png create mode 100644 resource/plant/ATTomato/3.png create mode 100644 resource/plant/ATTomato/4.png create mode 100644 resource/plant/ATTomato/5.png create mode 100644 resource/plant/ATTomato/icon.png diff --git a/README.md b/README.md index d7e449a..86333e6 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ ## 如何安装 -方法一(推荐):在小真寻后台的插件商店下载即可。 +方法一(推荐):在小真寻后台的插件商店下载即可
方法二:下载源码放在小真寻`plugin`目录下 ## 使用指令 @@ -22,22 +22,32 @@ | 收获 | 收获成熟作物 | | | 铲除 | 铲除荒废作物 | | | 我的作物 | | | -| 出售作物 [作物名称] [数量] | 从仓库里向系统售卖作物 | 作物不填默认清空仓库 数量不填默认全部 | +| 出售作物 [作物名称] [数量] | 从仓库里向系统售卖作物 | 不填写作物名将售卖仓库种全部作物 填作物名不填数量将指定作物全部出售 | | @美波理 偷菜 | 偷别人的菜 | 每人每天只能偷5次 | | 购买农场币 | 将真寻金币兑换成农场币 | 兑换比例默认为1:2 手续费默认20% | --- +## 更新日志[详细](./log/log.md): +- 感谢[quanquan1014](https://github.com/quanquan1014)对农场名称中包含特殊字符的处理。 +- 更正数据库写法,但是会导致V1.0用户的作物和种子丢失 +- 完善我的农场图片资源,现在会在左上角显示经验、等级、金币等详细信息了 +- 完善出售作物逻辑,现在可以空置作物名称来一键出售全部作物了,也可以选择空置数量来一键出售仓库种指定作物 +- 完善播种逻辑,现在可以空置数量来一键播种指定作物了 +- 新增更改农场名指令 +- 改进对土地开垦条件判断 +--- + ## 待办事宜 `Todo` 列表 - [x] 完善我的农场图片,例如左上角显示用户数据 -- [x] 完善升级数据、作物数据、作物图片 -- [x] 签到功能 -- [x] 添加渔场功能 -- [x] 增加活动、交易行功能 -- [x] 增加交易行总行功能 -- [x] 添加其他游戏种子素材 -- [x] 想不到了,想到再说 +- [ ] 完善升级数据、作物数据、作物图片 +- [ ] 签到功能 +- [ ] 添加渔场功能 +- [ ] 增加活动、交易行功能 +- [ ] 增加交易行总行功能 +- [ ] 添加其他游戏种子素材 +- [ ] 想不到了,想到再说 --- diff --git a/__init__.py b/__init__.py index ca568a8..ba53d5c 100644 --- a/__init__.py +++ b/__init__.py @@ -24,18 +24,19 @@ __plugin_meta__ = PluginMetadata( 种子商店 [页数] 购买种子 [作物/种子名称] [数量] 我的种子 - 播种 [作物/种子名称] [数量] + 播种 [作物/种子名称] [数量] (数量不填默认将最大可能播种 收获 铲除 我的作物 - 出售作物 [作物/种子名称] [数量] (不填写作物 - 偷菜 at + 出售作物 [作物/种子名称] [数量] (不填写作物名将售卖仓库种全部作物 填作物名不填数量将指定作物全部出售 + 偷菜 at (每人每天只能偷5次 开垦 购买农场币 [数量] 数量为消耗金币的数量 + 更改农场名 [新农场名] """.strip(), extra=PluginExtraData( author="Art_Sakura", - version="1.0", + version="1.1", commands=[Command(command="我的农场")], menu_type="群内小游戏", configs=[ diff --git a/command.py b/command.py index cee7761..1d4ae4a 100644 --- a/command.py +++ b/command.py @@ -1,9 +1,9 @@ from nonebot.adapters import Event, MessageTemplate from nonebot.rule import to_me from nonebot.typing import T_State -from nonebot_plugin_alconna import (Alconna, AlconnaQuery, Args, Arparma, At, - Match, MultiVar, Option, Query, Subcommand, - on_alconna, store_true) +from nonebot_plugin_alconna import (Alconna, AlconnaMatch, AlconnaQuery, Args, + Arparma, At, Match, MultiVar, Option, + Query, Subcommand, on_alconna, store_true) from nonebot_plugin_uninfo import Uninfo from nonebot_plugin_waiter import waiter @@ -46,18 +46,18 @@ async def handle_register(session: Uninfo): # 获取原始用户名并安全处理 raw_name = str(session.user.name) safe_name = sanitize_username(raw_name) - + # 初始化用户信息 success = await g_pSqlManager.initUserInfoByUid( uid=uid, name=safe_name, exp=0, - point=100 + point=500 ) msg = ( - "✅ 农场开通成功!\n💼 初始资金:100农场币" - if success + "✅ 农场开通成功!\n💼 初始资金:500农场币" + if success else "⚠️ 开通失败,请稍后再试" ) logger.info(f"用户注册 {'成功' if success else '失败'}:{uid}") @@ -65,9 +65,9 @@ async def handle_register(session: Uninfo): except Exception as e: msg = "⚠️ 系统繁忙,请稍后再试" logger.error(f"注册异常 | UID:{uid} | 错误:{str(e)}") - + await MessageUtils.build_message(msg).send(reply_to=True) - + def sanitize_username(username: str, max_length: int = 15) -> str: """ 安全处理用户名 @@ -81,14 +81,14 @@ def sanitize_username(username: str, max_length: int = 15) -> str: # 处理空值 if not username: return "神秘农夫" - + # 基础清洗 cleaned = username.strip() - + # 允许的字符白名单(可自定义扩展) safe_chars = { '_', '-', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', - '+', '=', '.', ',', '~', '·', ' ', + '+', '=', '.', ',', '~', '·', ' ', 'a','b','c','d','e','f','g','h','i','j','k','l','m', 'n','o','p','q','r','s','t','u','v','w','x','y','z', 'A','B','C','D','E','F','G','H','I','J','K','L','M', @@ -97,24 +97,24 @@ def sanitize_username(username: str, max_length: int = 15) -> str: } # 添加常用中文字符(Unicode范围) safe_chars.update(chr(c) for c in range(0x4E00, 0x9FFF+1)) - + # 过滤危险字符 filtered = [ - c if c in safe_chars or 0x4E00 <= ord(c) <= 0x9FFF - else '' + c if c in safe_chars or 0x4E00 <= ord(c) <= 0x9FFF + else '' for c in cleaned ] - + # 合并处理结果 safe_str = ''.join(filtered) - + # 转义单引号(双重保障) escaped = safe_str.replace("'", "''") - + # 处理空结果 if not escaped: return "神秘农夫" - + # 长度限制 return escaped[:max_length] @@ -130,24 +130,24 @@ diuse_farm = on_alconna( Subcommand("harvest", help_text="收获"), Subcommand("eradicate", help_text="铲除"), Subcommand("my-plant", help_text="我的作物"), - # Subcommand("reclamation", Args["isBool?", str], help_text="开垦"), Subcommand("sell-plant", Args["name?", str]["num?", int], help_text="出售作物"), Subcommand("stealing", Args["target?", At], help_text="偷菜"), Subcommand("buy-point", Args["num?", int], help_text="购买农场币"), #Subcommand("sell-point", Args["num?", int], help_text="转换金币") + Subcommand("change-name", Args["name?", str], help_text="更改农场名") ), priority=5, block=True, ) @diuse_farm.assign("$main") -async def _(session: Uninfo, nickname: str = UserName()): +async def _(session: Uninfo): uid = str(session.user.id) if await isRegisteredByUid(uid) == False: return - image = await g_pFarmManager.drawFarmByUid(uid, nickname) + image = await g_pFarmManager.drawFarmByUid(uid) await MessageUtils.build_message(image).send(reply_to=True) diuse_farm.shortcut( @@ -339,12 +339,7 @@ diuse_farm.shortcut( ) @diuse_farm.assign("sell-plant") -async def _(session: Uninfo, name: Match[str], num: Query[int] = AlconnaQuery("num", 1),): - if not name.available: - await MessageUtils.build_message( - "请在指令后跟需要出售的作物名称" - ).finish(reply_to=True) - +async def _(session: Uninfo, name: Match[str], num: Query[int] = AlconnaQuery("num", -1),): uid = str(session.user.id) if await isRegisteredByUid(uid) == False: @@ -401,3 +396,32 @@ async def _(session: Uninfo, num: Query[int] = AlconnaQuery("num", 0)): result = await g_pFarmManager.buyPointByUid(uid, num.result) await MessageUtils.build_message(result).send(reply_to=True) + + +diuse_farm.shortcut( + "更改农场名(?P)", + command="我的农场", + arguments=["change-name", "{name}"], + prefix=True, +) + +@diuse_farm.assign("change-name") +async def _(session: Uninfo, name: Match[str]): + if not name.available: + await MessageUtils.build_message( + "请在指令后跟需要更改的用户名" + ).finish(reply_to=True) + + uid = str(session.user.id) + + if await isRegisteredByUid(uid) == False: + return + + safeName = sanitize_username(name.result) + + result = await g_pSqlManager.updateUserNameByUid(uid, safeName) + + if result == True: + await MessageUtils.build_message("更新用户名成功!").send(reply_to=True) + else: + await MessageUtils.build_message("更新用户名失败!").send(reply_to=True) diff --git a/config/plant.json b/config/plant.json index 6f4fb86..5c5e523 100644 --- a/config/plant.json +++ b/config/plant.json @@ -213,6 +213,21 @@ "sell": false }, "番茄": + { + "level": 6, + "buy": 251, + "limit": 0, + "experience": 22, + "harvest": 21, + "price": 26, + "time": 17, + "crop": 1, + "again": 0, + "phase": 6, + "general": true, + "sell": false + }, + "ATTomato": { "level": 6, "buy": 99999, diff --git a/config/sign_in.json b/config/sign_in.json new file mode 100644 index 0000000..4b4e999 --- /dev/null +++ b/config/sign_in.json @@ -0,0 +1,4 @@ +{ + "date": "202505", + "" +} diff --git a/database.py b/database.py index a056dad..ba45c4c 100644 --- a/database.py +++ b/database.py @@ -143,12 +143,20 @@ class CSqlManager: "count": "INTEGER NOT NULL DEFAULT 0", "PRIMARY KEY": "(uid, seed)" } + # 5. 用户道具明细表 + userItem = { + "uid": "INTEGER NOT NULL", + "item": "TEXT NOT NULL", + "count": "INTEGER NOT NULL DEFAULT 0", + "PRIMARY KEY": "(uid, item)" + } #建表(或增列) await cls.ensureTableSchema("user", userInfo) await cls.ensureTableSchema("soil", userSoilInfo) await cls.ensureTableSchema("userPlant", userPlant) await cls.ensureTableSchema("userSeed", userSeed) + await cls.ensureTableSchema("userItem", userItem) return True @@ -175,7 +183,7 @@ class CSqlManager: return False @classmethod - async def initUserInfoByUid(cls, uid: str, name: str = "", exp: int = 0, point: int = 100): + async def initUserInfoByUid(cls, uid: str, name: str = "", exp: int = 0, point: int = 500): """初始化用户信息 Args: @@ -190,11 +198,6 @@ class CSqlManager: INSERT INTO user (uid, name, exp, point, soil, stealing) VALUES ({uid}, '{name}', {exp}, {point}, 3, '{date.today()}|5') """ - #用户仓库 - userStorehouse = f""" - INSERT INTO storehouse (uid) VALUES ({uid}); - """ - #用户土地 userSoilInfo = f""" INSERT INTO soil (uid) VALUES ({uid}); @@ -203,9 +206,6 @@ class CSqlManager: if not await cls.executeDB(userInfo): return False - if not await cls.executeDB(userStorehouse): - return False - if not await cls.executeDB(userSoilInfo): return False @@ -244,6 +244,55 @@ class CSqlManager: logger.warning(f"getUserInfoByUid查询失败: {e}") return {} + @classmethod + async def getUserNameByUid(cls, uid: str) -> str: + """根据用户uid查询用户名 + + Args: + uid (str): 用户uid + + Returns: + str: 用户名,如果失败返回空字符串 + """ + if not uid: + return "" + + try: + async with cls.m_pDB.execute( + "SELECT name FROM user WHERE uid = ?", + (uid,) + ) as cursor: + row = await cursor.fetchone() + return row["name"] if row else "" + except Exception as e: + logger.warning(f"真寻农场getUserNameByUid查询失败: {e}") + return "" + + @classmethod + async def updateUserNameByUid(cls, uid: str, name: str) -> bool: + """根据用户uid修改用户名 + + Args: + uid (str): 用户uid + name (str): 新用户名 + + Returns: + bool: 是否更新成功 + """ + if not uid or not name: + return False + + try: + async with cls._transaction(): + await cls.m_pDB.execute( + "UPDATE user SET name = ? WHERE uid = ?", + (name, uid) + ) + return True + except Exception as e: + logger.warning(f"真寻农场updateUserNameByUid失败: {e}") + return False + @classmethod async def getUserPointByUid(cls, uid: str) -> int: """根据用户Uid获取用户农场币 @@ -709,4 +758,152 @@ class CSqlManager: logger.warning(f"真寻农场deleteUserPlantByName 失败: {e}") return False + + @classmethod + async def getUserItemByName(cls, uid: str, item: str) -> Optional[int]: + """根据道具名称查询某一项数量 + + Args: + uid (str): 用户uid + item (str): 道具名称 + + Returns: + Optional[int]: 数量(不存在返回None) + """ + if not uid or not item: + return None + try: + async with cls.m_pDB.execute( + "SELECT count FROM userItem WHERE uid = ? AND item = ?", + (uid, item) + ) as cursor: + row = await cursor.fetchone() + return row[0] if row else None + except Exception as e: + logger.warning(f"真寻农场getUserItemByName查询失败: {e}") + return None + + @classmethod + async def getUserItemByUid(cls, uid: str) -> dict: + """根据用户Uid获取全部道具信息 + + Args: + uid (str): 用户uid + + Returns: + dict: {itemName: count, ...} + """ + if not uid: + return {} + try: + cursor = await cls.m_pDB.execute( + "SELECT item, count FROM userItem WHERE uid = ?", + (uid,) + ) + rows = await cursor.fetchall() + return {row["item"]: row["count"] for row in rows} + except Exception as e: + logger.warning(f"真寻农场getUserItemByUid查询失败: {e}") + return {} + + @classmethod + async def deleteUserItemByName(cls, uid: str, item: str) -> bool: + """根据道具名删除道具 + + Args: + uid (str): 用户uid + item (str): 道具名称 + + Returns: + bool: 是否删除成功 + """ + if not uid or not item: + return False + try: + async with cls._transaction(): + await cls.m_pDB.execute( + "DELETE FROM userItem WHERE uid = ? AND item = ?", + (uid, item) + ) + return True + except Exception as e: + logger.warning(f"真寻农场deleteUserItemByName失败: {e}") + return False + + @classmethod + async def updateUserItemByName(cls, uid: str, item: str, count: int) -> bool: + """根据道具名直接更新道具数量 + + Args: + uid (str): 用户uid + item (str): 道具名称 + count (int): 要更新的新数量 + + Returns: + bool: 是否更新成功 + """ + if not uid or not item: + return False + try: + async with cls._transaction(): + if count <= 0: + await cls.m_pDB.execute( + "DELETE FROM userItem WHERE uid = ? AND item = ?", + (uid, item) + ) + else: + await cls.m_pDB.execute( + "UPDATE userItem SET count = ? WHERE uid = ? AND item = ?", + (count, uid, item) + ) + return True + except Exception as e: + logger.warning(f"真寻农场updateUserItemByName失败: {e}") + return False + + @classmethod + async def addUserItemByUid(cls, uid: str, item: str, count: int = 1) -> bool: + """根据用户uid添加道具信息 + + Args: + uid (str): 用户uid + item (str): 道具名称 + count (int, optional): 数量.Defaults to 1. + + Returns: + bool: 是否添加成功 + """ + if not uid or not item: + return False + try: + async with cls._transaction(): + async with cls.m_pDB.execute( + "SELECT count FROM userItem WHERE uid = ? AND item = ?", + (uid, item) + ) as cursor: + row = await cursor.fetchone() + + if row: + newCount = row[0] + count + if newCount <= 0: + await cls.m_pDB.execute( + "DELETE FROM userItem WHERE uid = ? AND item = ?", + (uid, item) + ) + else: + await cls.m_pDB.execute( + "UPDATE userItem SET count = ? WHERE uid = ? AND item = ?", + (newCount, uid, item) + ) + else: + if count > 0: + await cls.m_pDB.execute( + "INSERT INTO userItem (uid, item, count) VALUES (?, ?, ?)", + (uid, item, count) + ) + return True + except Exception as e: + logger.warning(f"真寻农场addUserItemByUid失败: {e}") + return False + g_pSqlManager = CSqlManager() diff --git a/farm/farm.py b/farm/farm.py index 89e458d..ff0870a 100644 --- a/farm/farm.py +++ b/farm/farm.py @@ -51,7 +51,7 @@ class CFarmManager: return f"充值{point}农场币成功,手续费{tax}金币,当前农场币:{number}" @classmethod - async def drawFarmByUid(cls, uid: str, name: str) -> bytes: + async def drawFarmByUid(cls, uid: str) -> bytes: """绘制用户农场 Args: @@ -72,7 +72,9 @@ class CFarmManager: await grass.resize(0, soilSize[0], soilSize[1]) soilPos = g_pJsonManager.m_pSoil['soil'] - soilUnlock = await g_pSqlManager.getUserSoilByUid(uid) + + userInfo = await g_pSqlManager.getUserInfoByUid(uid) + soilUnlock = int(userInfo['soil']) x = 0 y = 0 @@ -128,7 +130,7 @@ class CFarmManager: await img.paste(frame, (75, 44)) #用户名 - nameImg = await BuildImage.build_text_image(name, size = 24, font_color = (77, 35, 4)) + nameImg = await BuildImage.build_text_image(userInfo['name'], size = 24, font_color = (77, 35, 4)) await img.paste(nameImg, (300, 92)) #经验值 @@ -148,12 +150,10 @@ class CFarmManager: await img.paste(levelImg, (660, 187)) #金币 - point = await g_pSqlManager.getUserPointByUid(uid) - pointImg = await BuildImage.build_text_image(str(point), size = 24, font_color = (253, 253, 253)) + pointImg = await BuildImage.build_text_image(str(userInfo['point']), size = 24, font_color = (253, 253, 253)) await img.paste(pointImg, (330, 255)) - #点券 - bonds = await g_pSqlManager.getUserPointByUid(uid) + #点券 TODO bondsImg = await BuildImage.build_text_image("0", size = 24, font_color = (253, 253, 253)) await img.paste(bondsImg, (570, 255)) @@ -473,14 +473,14 @@ class CFarmManager: if plant is None: result = await ImageTemplate.table_page( "作物仓库", - "播种示例:@小真寻 出售作物 大白菜 [数量]", + "出售示例:@小真寻 出售作物 大白菜 [数量]", column_name, data_list, ) return result.pic2bytes() sell = "" - for name, count in plant.items(): # 使用 .items() 来遍历字典 + for name, count in plant.items(): plantInfo = g_pJsonManager.m_pPlant['plant'][name] icon = "" icon_path = g_sResourcePath / f"plant/{name}/icon.png" @@ -507,7 +507,7 @@ class CFarmManager: result = await ImageTemplate.table_page( "作物仓库", - "播种示例:@小真寻 出售作物 大白菜 [数量]", + "出售示例:@小真寻 出售作物 大白菜 [数量]", column_name, data_list, ) diff --git a/farm/shop.py b/farm/shop.py index 167c91c..c028194 100644 --- a/farm/shop.py +++ b/farm/shop.py @@ -23,7 +23,7 @@ class CShopManager: column_name = [ "-", "种子名称", - "种子单价" + "种子单价", "解锁等级", "果实单价", "收获经验", @@ -132,39 +132,39 @@ class CShopManager: Returns: str: """ - plantDict = await g_pSqlManager.getUserPlantByUid(uid) - if not plantDict: + if not isinstance(name, str) or name.strip() == "": + name = "" + + plant = await g_pSqlManager.getUserPlantByUid(uid) + if not plant: return "你仓库没有可以出售的作物" - totalPoint = 0 + point = 0 + totalSold = 0 + isAll = (num == -1) - if not name: - for plantName, count in plantDict.items(): + if name == "": + for plantName, count in plant.items(): plantInfo = g_pJsonManager.m_pPlant['plant'][plantName] - totalPoint += plantInfo['price'] * count - await g_pSqlManager.deleteUserPlantByName(uid, plantName) + point += plantInfo['price'] * count + await g_pSqlManager.updateUserPlantByName(uid, plantName, 0) else: - currentCount = plantDict.get(name) - if currentCount is None: - return f"出售作物{name}出错:你没有这种作物" + if name not in plant: + return f"出售作物{name}出错:仓库中不存在该作物" + available = plant[name] + sellAmount = available if isAll else min(available, num) + if sellAmount <= 0: + return f"出售作物{name}出错:数量不足" + await g_pSqlManager.updateUserPlantByName(uid, name, available - sellAmount) + totalSold = sellAmount - if num == -1: - sellCount = currentCount - else: - if num > currentCount: - return f"出售作物{name}出错:数量不足" - sellCount = num + totalPoint = point if name == "" else totalSold * g_pJsonManager.m_pPlant['plant'][name]['price'] + currentPoint = await g_pSqlManager.getUserPointByUid(uid) + await g_pSqlManager.updateUserPointByUid(uid, currentPoint + totalPoint) - plantInfo = g_pJsonManager.m_pPlant['plant'][name] - totalPoint = plantInfo['price'] * sellCount - await g_pSqlManager.addUserPlantByUid(uid, name, -sellCount) - - point = await g_pSqlManager.getUserPointByUid(uid) - await g_pSqlManager.updateUserPointByUid(uid, point + totalPoint) - - if not name: - return f"成功出售所有作物,获得农场币:{totalPoint},当前农场币:{point + totalPoint}" + if name == "": + return f"成功出售所有作物,获得农场币:{totalPoint},当前农场币:{currentPoint + totalPoint}" else: - return f"成功出售{name},获得农场币:{totalPoint},当前农场币:{point + totalPoint}" + return f"成功出售{name},获得农场币:{totalPoint},当前农场币:{currentPoint + totalPoint}" g_pShopManager = CShopManager() diff --git a/log/log.md b/log/log.md new file mode 100644 index 0000000..590d27c --- /dev/null +++ b/log/log.md @@ -0,0 +1,15 @@ +# 真寻农场更新日志 + +## V1.1 + +- 感谢[quanquan1014](https://github.com/quanquan1014)对农场名称中包含特殊字符的处理。 +- 更正数据库写法,但是会导致V1.0用户的作物和种子丢失 +- 完善我的农场图片资源,现在会在左上角显示经验、等级、金币等详细信息了 +- 完善出售作物逻辑,现在可以空置作物名称来一键出售全部作物了,也可以选择空置数量来一键出售仓库种指定作物 +- 完善播种逻辑,现在可以空置数量来一键播种指定作物了 +- 新增更改农场名指令 +- 改进对土地开垦条件判断 + +## V1.0 + +世界的起源。 diff --git a/request.py b/request.py index b3daab8..3031324 100644 --- a/request.py +++ b/request.py @@ -1,5 +1,4 @@ -from email.mime import base -from unittest import result +import os import httpx @@ -11,11 +10,11 @@ class CRequestManager: @classmethod async def download(cls, url: str, savePath: str, fileName: str) -> bool: - """下载文件到指定路径 + """下载文件到指定路径并覆盖已存在的文件 Args: url (str): 文件的下载链接 - savePath (str): 保存文件的文件夹路径 + savePath (str): 保存文件夹路径 fileName (str): 保存后的文件名 Returns: @@ -25,7 +24,8 @@ class CRequestManager: async with httpx.AsyncClient(timeout=10.0) as client: response = await client.get(url) if response.status_code == 200: - fullPath = savePath.rstrip("/") + "/" + fileName + fullPath = os.path.join(savePath, fileName) + os.makedirs(os.path.dirname(fullPath), exist_ok=True) with open(fullPath, "wb") as f: f.write(response.content) return True diff --git a/resource/plant/ATTomato/1.png b/resource/plant/ATTomato/1.png new file mode 100644 index 0000000000000000000000000000000000000000..470bbe2946e34a69d48cda13939992de0569dbe8 GIT binary patch literal 4519 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 literal 0 HcmV?d00001 diff --git a/resource/plant/ATTomato/2.png b/resource/plant/ATTomato/2.png new file mode 100644 index 0000000000000000000000000000000000000000..1c729bc7677abe1d5277f67bbcaa6486c4361125 GIT binary patch literal 5821 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 literal 0 HcmV?d00001 diff --git a/resource/plant/ATTomato/3.png b/resource/plant/ATTomato/3.png new file mode 100644 index 0000000000000000000000000000000000000000..fa2521a3f89452976b5341d410841f5521f6da5a GIT binary patch literal 16881 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