Compare commits

..
14 Commits
Author SHA1 Message Date
xiaoyan159 8fd0c6d922 fix: 更新session 2023-09-28 17:20:45 +08:00
xiaoyan159 bc742bcf0a fix: 修改git忽略 2023-09-28 17:18:43 +08:00
xiaoyan159 449a097b32 feat: 增加微头条统计 2023-09-28 17:12:30 +08:00
xiaoyan159 515503b342 fix: 修改git忽略文件 2023-09-28 17:12:05 +08:00
xiaoyan159 776df13ed8 fix: 合并代码 2023-09-28 16:11:40 +08:00
xiaoyan159 f84cd3cdfc fix: 合并代码 2023-09-28 16:09:26 +08:00
xiaoyan159 336250ab66 fix: 删除device.json和session.token 2023-09-28 16:08:23 +08:00
xiaoyan159 c43d79d9a6 fix: 修改git忽略文件规则 2023-09-28 16:06:53 +08:00
xiaoyan159 837593ab11 fix: 修改cqhttp的配置 2023-09-28 16:03:52 +08:00
xiaoyan159 b7c3a549dd fix: 修改git忽略文件 2023-09-28 16:02:42 +08:00
xiaoyan159 66822bdfce fix: 使用selenium抓取文章内容 2023-09-27 10:01:34 +08:00
xiaoyan159 24b6d4ca44 feat: 尝试自动统计文章 2023-09-25 18:08:32 +08:00
xiaoyan159 5eb218cf65 feat: 完成微头条个数统计函数 2023-09-25 00:24:10 +08:00
xiaoyan159 2465e0b748 feat: 同步服务端代码 2023-09-22 14:08:16 +08:00
30 changed files with 5562 additions and 392 deletions
-1
View File
@@ -1,3 +1,2 @@
ENVIRONMENT=prod
DRIVER=~fastapi
FEISHU_BOTS=[{"app_id":"cli_a58e99809818d00c","app_secret":"4tY3KSlogZZ0qR6wxq5pTb05adfVcxJU","verification_token":"ZHdJF5ruJFOhVDgvsrfEMbNsil643caV","encrypt_key":"xiaoyan159","is_lark":false}]
-3
View File
@@ -1,3 +0,0 @@
# Default ignored files
/shelf/
/workspace.xml
-11
View File
@@ -1,11 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/.venv" />
<excludeFolder url="file://$MODULE_DIR$/venv" />
</content>
<orderEntry type="jdk" jdkName="Python 3.10" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
-6
View File
@@ -1,6 +0,0 @@
<component name="InspectionProjectProfileManager">
<settings>
<option name="USE_PROJECT_PROFILE" value="false" />
<version value="1.0" />
</settings>
</component>
-4
View File
@@ -1,4 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.10" project-jdk-type="Python SDK" />
</project>
-8
View File
@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/NoneBot-Xiao.iml" filepath="$PROJECT_DIR$/.idea/NoneBot-Xiao.iml" />
</modules>
</component>
</project>
+10 -2
View File
@@ -1,12 +1,20 @@
import nonebot
from nonebot.adapters.feishu import Adapter as FeishuAdapter
from nonebot.adapters.onebot.v11 import Adapter as ONEBOT_V11Adapter
# from nonebot.adapters.feishu import Adapter as 飞书Adapter
#
# from nonebot.adapters.ntchat import Adapter as NTCHATAdapter
nonebot.init()
driver = nonebot.get_driver()
driver.register_adapter(FeishuAdapter)
driver.register_adapter(ONEBOT_V11Adapter)
# driver.register_adapter(飞书Adapter)
#
# driver.register_adapter(NTCHATAdapter)
nonebot.load_builtin_plugins('echo')
Regular → Executable
View File
Regular → Executable
+1 -1
View File
@@ -1,6 +1,6 @@
<p align="center">
<a href="https://ishkong.github.io/go-cqhttp-docs/">
<img src="https://user-images.githubusercontent.com/25968335/120111974-8abef880-c139-11eb-99cd-fa928348b198.png" width="200" height="200" alt="go-cqhttp">
<img src="winres/icon.png" width="200" height="200" alt="go-cqhttp">
</a>
</p>
+16 -1
View File
@@ -2,7 +2,7 @@
account: # 账号相关
uin: 1648107533 # QQ账号
password: 'xiaoyan159062' # 密码为空时使用扫码登录
password: '' # 密码为空时使用扫码登录
encrypt: false # 是否开启密码加密
status: 0 # 在线状态 请参考 https://docs.go-cqhttp.org/guide/config.html#在线状态
relogin: # 重连设置
@@ -16,6 +16,15 @@ account: # 账号相关
# 是否允许发送临时会话消息
allow-temp-session: false
# 数据包的签名服务器
# 兼容 https://github.com/fuqiuluo/unidbg-fetch-qsign
# 如果遇到 登录 45 错误, 或者发送信息风控的话需要填入一个服务器
# 示例:
# sign-server: 'http://127.0.0.1:8080' # 本地签名服务器
# sign-server: 'https://signserver.example.com' # 线上签名服务器
# 服务器可使用docker在本地搭建或者使用他人开放的服务
sign-server: 'http://dawang.xiaoyan159.space:5709/'
heartbeat:
# 心跳频率, 单位秒
# -1 为关闭心跳
@@ -43,6 +52,10 @@ message:
extra-reply-data: false
# 跳过 Mime 扫描, 忽略错误数据
skip-mime-scan: false
# 是否自动转换 WebP 图片
convert-webp-image: false
# http超时时间
http-timeout: 0
output:
# 日志等级 trace,debug,info,warn,error
@@ -105,3 +118,5 @@ servers:
reconnect-interval: 3000
middlewares:
<<: *default # 引用默认中间件
+1 -1
View File
@@ -1 +1 @@
{"display":"MIRAI.030468.001","product":"mirai","device":"mirai","board":"mirai","model":"mirai","finger_print":"mamoe/mirai/mirai:10/MIRAI.200122.001/4241523:user/release-keys","boot_id":"0624e782-cfa9-b123-f253-482e3695d1bf","proc_version":"Linux version 3.0.31-RwxaY2Wt (android-build@xxx.xxx.xxx.xxx.com)","protocol":5,"imei":"935895209282990","brand":"mamoe","bootloader":"unknown","base_band":"","version":{"incremental":"5891938","release":"10","codename":"REL","sdk":29},"sim_info":"T-Mobile","os_type":"android","mac_address":"00:50:56:C0:00:08","ip_address":[10,0,1,3],"wifi_bssid":"00:50:56:C0:00:08","wifi_ssid":"\u003cunknown ssid\u003e","imsi_md5":"b9424c49d46505d1f2c99e9bbadd340f","android_id":"cc1733e21c8ea405","apn":"wifi","vendor_name":"MIUI","vendor_os_name":"mirai"}
{"display":"MIRAI.495990.001","product":"mirai","device":"mirai","board":"mirai","model":"mirai","finger_print":"mamoe/mirai/mirai:10/MIRAI.200122.001/4144447:user/release-keys","boot_id":"46ffb647-de87-258d-bb07-eb08e3a29b33","proc_version":"Linux version 3.0.31-10kFFebM (android-build@xxx.xxx.xxx.xxx.com)","protocol":2,"imei":"435775380963712","brand":"mamoe","bootloader":"unknown","base_band":"","version":{"incremental":"5891938","release":"10","codename":"REL","sdk":29},"sim_info":"T-Mobile","os_type":"android","mac_address":"00:50:56:C0:00:08","ip_address":[10,0,1,3],"wifi_bssid":"00:50:56:C0:00:08","wifi_ssid":"\u003cunknown ssid\u003e","imsi_md5":"9bc76fd297d1536030d19c2ef497b691","android_id":"1eabadb09bae30c0","apn":"wifi","vendor_name":"MIUI","vendor_os_name":"mirai"}
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large Load Diff
Binary file not shown.
+200
View File
@@ -0,0 +1,200 @@
adapter==0.1
aiocache==0.12.0
aiocqhttp==1.4.3
aiofiles==23.1.0
anyio==3.6.2
appdirs==1.4.4
argcomplete==2.0.0
argon2-cffi==21.3.0
argon2-cffi-bindings==21.2.0
arrow==1.2.3
asttokens==2.2.1
async-generator==1.10
attrs==22.2.0
backcall==0.2.0
beautifulsoup4==4.11.2
bleach==6.0.0
blinker==1.5
brotlipy==0.7.0
bs4==0.0.1
CacheControl==0.12.11
cashews==4.7.1
certifi==2022.12.7
cffi==1.15.1
charset-normalizer==3.0.1
cleo==2.0.1
click==8.1.3
colorama==0.4.6
comm==0.1.2
crashtest==0.4.1
cryptography==40.0.2
cssselect==1.2.0
debugpy==1.6.6
decorator==5.1.1
defusedxml==0.7.1
distlib==0.3.6
docopt==0.6.2
dulwich==0.20.50
exceptiongroup==1.1.1
executing==1.2.0
fake-useragent==1.1.1
fastapi==0.91.0
fastjsonschema==2.16.2
filelock==3.9.0
fqdn==1.5.1
gitdb==4.0.9
GitPython==3.1.27
h11==0.14.0
h2==4.1.0
hpack==4.0.0
html5lib==1.1
httpcore==0.16.3
httptools==0.5.0
httpx==0.23.3
hypercorn==0.14.3
hyperframe==6.0.1
idna==3.4
importlib-metadata==6.0.0
ipykernel==6.20.2
ipython==8.9.0
ipython-genutils==0.2.0
ipywidgets==8.0.4
irc3==1.1.8
isoduration==20.11.0
itsdangerous==2.1.2
jaraco.classes==3.2.3
jedi==0.18.2
Jinja2==3.1.2
jsonpointer==2.3
jsonschema==4.17.3
jupyter==1.0.0
jupyter-console==6.4.4
jupyter-events==0.6.3
jupyter_client==8.0.1
jupyter_core==5.1.5
jupyter_server==2.1.0
jupyter_server_terminals==0.4.4
jupyterlab-pygments==0.2.2
jupyterlab-widgets==3.0.5
keyring==23.13.1
lfmh==1.1.1
lockfile==0.12.2
loguru==0.6.0
lxml==4.9.2
MarkupSafe==2.1.2
matplotlib-inline==0.1.6
mistune==2.0.4
more-itertools==9.0.0
msgpack==1.0.4
multidict==6.0.4
musicbrainzngs==0.7.1
mysql-connector-python==8.0.28
nbclassic==0.5.1
nbclient==0.7.2
nbconvert==7.2.9
nbformat==5.7.3
nest-asyncio==1.5.6
nonebot==1.9.1
nonebot-adapter-feishu==2.0.0b6
nonebot-adapter-onebot==2.2.1
nonebot2==2.0.0rc3
notebook==6.5.2
notebook_shim==0.2.2
numpy==1.24.3
onebot==1.3.3
outcome==1.2.0
packaging==23.0
pandas==2.0.1
pandocfilters==1.5.0
parse==1.19.0
parsimonious==0.10.0
parso==0.8.3
pexpect==4.8.0
pickleshare==0.7.5
pipx==1.1.0
pkginfo==1.9.6
platformdirs==2.6.2
poetry==1.3.2
poetry-core==1.4.0
poetry-plugin-export==1.3.0
priority==2.0.0
prometheus-client==0.16.0
prompt-toolkit==3.0.36
psutil==5.9.4
ptyprocess==0.7.0
pure-eval==0.2.2
pycparser==2.21
pycryptodome==3.17
pydantic==1.10.4
pyee==8.2.2
Pygments==2.14.0
pygtrie==2.5.0
pyOpenSSL==23.1.1
pyppeteer==1.0.2
pyquery==2.0.0
pyrsistent==0.19.3
PySocks==1.7.1
python-dateutil==2.8.2
python-dotenv==0.21.1
python-json-logger==2.0.4
pytz==2023.3
pywin32==305
pywin32-ctypes==0.2.0
pywinpty==2.0.10
PyYAML==6.0
pyzmq==25.0.0
qtconsole==5.4.0
QtPy==2.3.0
quart==0.18.3
rapidfuzz==2.13.7
regex==2022.10.31
requests==2.28.2
requests-html==0.10.0
requests-toolbelt==0.10.1
rfc3339-validator==0.1.4
rfc3986==1.5.0
rfc3986-validator==0.1.1
selenium==4.9.1
Send2Trash==1.8.0
shellingham==1.5.0.post1
six==1.16.0
smmap==5.0.0
sniffio==1.3.0
sortedcontainers==2.4.0
soupsieve==2.3.2.post1
stack-data==0.6.2
starlette==0.24.0
terminado==0.17.1
tinycss2==1.2.1
toml==0.10.2
tomli==2.0.1
tomlkit==0.11.6
tornado==6.2
tqdm==4.64.1
traitlets==5.8.1
trio==0.22.0
trio-websocket==0.10.2
trove-classifiers==2023.1.20
typing_extensions==4.4.0
tzdata==2023.3
uri-template==1.2.0
urllib3==1.26.14
urllib3-secure-extra==0.1.0
userpath==1.8.0
uvicorn==0.20.0
venusian==3.0.0
virtualenv==20.16.5
w3lib==2.1.1
watchfiles==0.18.1
wcwidth==0.2.6
webcolors==1.12
webencodings==0.5.1
websocket-client==1.5.0
websockets==10.4
Werkzeug==2.2.2
widgetsnbextension==4.0.5
win32-setctime==1.1.0
wincertstore==0.2
wsproto==1.2.0
yarl==1.8.2
zipp==3.13.0
+21
View File
@@ -0,0 +1,21 @@
from datetime import datetime
from pathlib import Path
import nonebot
from nonebot import get_driver, on_message
from nonebot.adapters.onebot.v11 import Bot, Event
from nonebot.typing import T_State
from nonebot.params import CommandArg
from nonebot.message import event_preprocessor
from .config import Config
from nonebot import on_command
from nonebot.rule import to_me
from requests_html import HTMLSession, HTML
global_config = get_driver().config
config = Config.parse_obj(global_config)
_sub_plugins = set()
_sub_plugins |= nonebot.load_plugins(
str((Path(__file__).parent / "plugins").resolve())
)
+5
View File
@@ -0,0 +1,5 @@
from pydantic import BaseModel, Extra
class Config(BaseModel, extra=Extra.ignore):
"""Plugin Config Here"""
+80
View File
@@ -0,0 +1,80 @@
from datetime import datetime
from nonebot.adapters.onebot.v11 import Bot, Event
from nonebot.typing import T_State
from nonebot.params import CommandArg, Command
from nonebot import on_command
from nonebot.rule import to_me
from requests_html import HTMLSession, HTML
zhibo8Command = on_command("zhibo8", rule=to_me(), aliases={'预测', '英超', 'zhibo8'}, priority=10)
xiaobianStr = r"""
小编们预测比分:
太能喵:
叶小欢:
大帝强:
小小:
"""
vsMap = {}
@zhibo8Command.handle()
async def handle_first_receive(bot: Bot, event: Event, state: T_State, args= CommandArg()):
# 事件预处理,获取对应的赛程数据
vsMap.clear()
session = HTMLSession()
zhibo8Get = session.get("https://www.zhibo8.cc/")
print(zhibo8Get)
saishiContent = zhibo8Get.html.xpath("//div[@class='vct-box']/div[@class='_content']/ul/li")
# 解析xpath
# 解析xpath
for item in saishiContent:
if item.html.find("英超") >= 0:
if item.html.find("阿森纳") >= 0 or item.html.find("曼城") >= 0 or item.html.find("曼联") >= 0 or item.html.find(
"利物浦") >= 0 or item.html.find("切尔西") >= 0:
rouneNum, vsStr = parserSaishiItem(item.html)
if rouneNum not in vsMap.keys():
vsMap[rouneNum] = []
vsMap[rouneNum].append(vsStr)
plain_text = args.extract_plain_text()
if plain_text:
state.set_arg("round", plain_text)
else:
await zhibo8Command.send(message=""""选择要查看的轮次,当前支持查看的轮次为:\r\n{} \r\n""".format(getRoundPrompt(vsMap)))
@zhibo8Command.got(key="round", prompt="""请输入编号:""")
async def getRoundNum(event: Event):
round = str(event.get_message())
if round.isdigit() == False:
await zhibo8Command.reject(prompt="请输入编号(数字)")
if len(vsMap.keys())>=int(round):
resultStr = ""
roudNum = list(vsMap.keys())[int(round)-1]
# for roudNum in vsMap:
resultStr += "" + roudNum.replace("", "联赛 第") + " 比分预测】\r\n"
for vs in vsMap[roudNum]:
resultStr += vs + xiaobianStr + "\r\n"
await zhibo8Command.finish(resultStr)
else:
await zhibo8Command.reject_arg(key="round", prompt="输入的编号错误,请重新输入!")
def parserSaishiItem(saishiStr):
html = HTML(html=saishiStr)
# listItem = html.xpath("//b//text()")
roundNum = html.xpath("//span[@class='_league']//text()")[0]
homeName = html.xpath("//span[@class='_teams']//text()")[0].strip()
awayName = html.xpath("//span[@class='_teams']//text()")[-1].strip()
timeStr = html.xpath("./li/@data-time")[0]
time = datetime.strptime(timeStr, "%Y-%m-%d %H:%M")
timeTuple = time.timetuple()
return (roundNum, "{}{}".format(timeTuple.tm_mon, timeTuple.tm_mday)+time.strftime("%H:%M") + " " + homeName + " vs " + awayName)
def getRoundPrompt(roundMap):
str = ""
i = 1
for key in roundMap:
print(key)
str += "{}: {} \r\n".format(i, key)
i = i+1
return str
+149
View File
@@ -0,0 +1,149 @@
import datetime
import warnings
from datetime import timedelta
from nonebot.adapters.onebot.v11 import Bot, Event
from nonebot.typing import T_State
from nonebot.params import CommandArg, Command
from nonebot import on_command
from nonebot.rule import to_me
from requests_html import HTMLSession, HTML
import json
from selenium.webdriver import Chrome, ChromeOptions
tongjiCommand = on_command("统计", rule=to_me(), aliases={'微头条', 'tongji', 'tj'}, priority=10)
# driver_path = '../../../../driver/cromedriver_win32'
max_behot_time = '0'
# 初始化map对象,分别记录每个人的微头条个数
weitoutiaoMap = {"太能喵": 0, "小小": 0, "大帝强": 0, "叶小欢": 0}
"""
接收QQ消息,根据消息统计微头条结果
"""
@tongjiCommand.handle()
async def handle_first_receive(bot: Bot, event: Event, state: T_State, args= CommandArg()):
# 清空原有的weitoutiaoMap中的统计结果
for k,v in weitoutiaoMap.items():
weitoutiaoMap[k] = 0
getWeiToutiaoInfo()
# 将上周的微头条考核结果发送给用户
await tongjiCommand.finish(str(weitoutiaoMap))
"""
获取微头条数据信息
"""
def getWeiToutiaoInfo():
global max_behot_time
# 获取上一周的第一天和最后一天的时间戳
lastWeekStartTime, lastWeekEndTime = getLastWeekFirstDayTimeStamp()
session = HTMLSession()
weitoutiaoGet = session.get(f"https://www.toutiao.com/api/pc/list/user/feed?category=pc_profile_ugc&token=MS4wLjABAAAA7lHc4sBPuZaQ85qdIrwVvWm8Ps5O1kPMpuh5lTJAwII&max_behot_time={max_behot_time}&aid=24&app_name=toutiao_web", verify=False, proxies=None)
# print(weitoutiaoGet.text)
# 使用Json解析返回的数据
resultJson = json.loads(weitoutiaoGet.text)
# 先获取下个max_behot_time时间戳,如果需要翻页查询需要使用该参数
max_behot_time = resultJson['next']['max_behot_time']
# 开始循环解析data数据,获取微头条的内容和发布人员
dataList = resultJson['data']
# 获取每一条消息的发布时间戳,如果发布时间出现早于上周一0点的数据,结束统计,函数返回,否则递归调用当前函数
for data in dataList:
# 获取本条新闻的发布时间
publishTime = data["publish_time"]
if int(publishTime) > int(lastWeekEndTime):
continue
elif int(publishTime) < int(lastWeekStartTime):
return
else:
# 如果是比分预测类的微头条,则跳过
content = str(data['content'])
if content.find("比分预测】")>0:
continue
else:
# 获取该微头条的发布人和发布日期
author = None
contentSubString = content[-8:]
if contentSubString.find("太能喵")>0:
weitoutiaoMap["太能喵"] = weitoutiaoMap["太能喵"]+1
elif contentSubString.find("小小")>0:
weitoutiaoMap["小小"] = weitoutiaoMap["小小"]+1
elif contentSubString.find("大帝强") > 0:
weitoutiaoMap["大帝强"] = weitoutiaoMap["大帝强"] + 1
elif contentSubString.find("叶小欢") > 0:
weitoutiaoMap["叶小欢"] = weitoutiaoMap["叶小欢"] + 1
getWeiToutiaoInfo()
# """
# 获取文章数据信息
# """
# def getWenzhangInfo():
# global max_behot_time
#
# # 第一步输入这个:去除开头警告
# warnings.simplefilter('ignore', ResourceWarning)
#
# chrome_option = ChromeOptions()
# chrome_option.headless = True
# chrome_option.add_argument('--no-sandbox') # 解决DevToolsActivePort文件不存在的报错
# chrome_option.add_argument('--disable-gpu') # 谷歌文档提到需要加上这个属性来规避bug
# chrome_option.add_argument('--hide-scrollbars') # 隐藏滚动条, 应对一些特殊页面
# chrome_option.add_experimental_option('excludeSwitches', ['enable-automation'])
# chrome_option.add_argument('--headless')
#
# browser = Chrome(executable_path=driver_path, options=chrome_option)
#
# # 获取上一周的第一天和最后一天的时间戳
# lastWeekStartTime, lastWeekEndTime = getLastWeekFirstDayTimeStamp()
# session = HTMLSession()
# wenzhangGet = session.get(f"https://www.toutiao.com/api/pc/list/user/feed?category=pc_profile_article&token=MS4wLjABAAAA7lHc4sBPuZaQ85qdIrwVvWm8Ps5O1kPMpuh5lTJAwII&max_behot_time={max_behot_time}&aid=24&app_name=toutiao_web", verify=False, proxies=None)
# # print(weitoutiaoGet.text)
# # 使用Json解析返回的数据
# resultJson = json.loads(wenzhangGet.text)
# # 先获取下个max_behot_time时间戳,如果需要翻页查询需要使用该参数
# max_behot_time = resultJson['next']['max_behot_time']
# # 开始循环解析data数据,获取微头条的内容和发布人员
# dataList = resultJson['data']
# # 获取每一条消息的发布时间戳,如果发布时间出现早于上周一0点的数据,结束统计,函数返回,否则递归调用当前函数
# for data in dataList:
# # 获取本条新闻的发布时间
# publishTime = data["publish_time"]
# if int(publishTime) > int(lastWeekEndTime):
# continue
# elif int(publishTime) < int(lastWeekStartTime):
# return
# else:
# # 获取该文章的标题和对应的url,需要再通过url获取文章正文,解析作者是谁
# title = data["title"]
# url = data["url"]
# if url:
# # 请求文章正文内容
# browser.get(url)
# element = browser.find_element(by='XPATH', value="//article")
# print(element)
# # author = None
# # if data.find("太能喵")>0:
# # weitoutiaoMap["太能喵"] = weitoutiaoMap["太能喵"]+1
# # elif content.find("小小")>0:
# # weitoutiaoMap["小小"] = weitoutiaoMap["小小"]+1
# # elif content.find("大帝强") > 0:
# # weitoutiaoMap["大帝强"] = weitoutiaoMap["大帝强"] + 1
# # elif content.find("叶小欢") > 0:
# # weitoutiaoMap["叶小欢"] = weitoutiaoMap["叶小欢"] + 1
# # 如果没有被return掉,继续请求下一页内容
# getWeiToutiaoInfo()
"""
获取当前日期上一周的第一天和最后一天的时间戳
"""
def getLastWeekFirstDayTimeStamp():
now = datetime.datetime.now()
# 上周第一天和最后一天
last_week_start = now - timedelta(days=now.weekday() + 7, hours=now.hour, minutes=now.minute, seconds=now.second, microseconds=now.microsecond)
last_week_end = last_week_start - timedelta(days=-7)
print(f"上周第一天的日期是:{last_week_start},最后一天的日期是:{last_week_end}")
print(f"上周第一天的时间戳是:{last_week_start.timestamp()},最后一天的时间戳是:{last_week_end.timestamp()}")
return last_week_start.timestamp(), last_week_end.timestamp()
if __name__ == '__main__':
getWeiToutiaoInfo()
# print(weitoutiaoMap)
Executable
+1
View File
@@ -0,0 +1 @@
source /root/data/www/Nonebot2-Xiao/venv/bin/activate && cd /root/data/www/Nonebot2-Xiao/ && python bot.py