mirror of
https://github.com/TDSCDMAA/AutoMihoyoBBS.git
synced 2026-06-02 18:43:42 +08:00
Merge branch 'master' into master
This commit is contained in:
commit
5c04ffffd0
3
.gitignore
vendored
3
.gitignore
vendored
@ -131,6 +131,9 @@ dmypy.json
|
||||
# VSCode
|
||||
.vscode/
|
||||
|
||||
# idea
|
||||
.idea/
|
||||
|
||||
#自己用的推送((
|
||||
push_main.py
|
||||
|
||||
|
||||
367
README.md
367
README.md
@ -1,121 +1,246 @@
|
||||
# 米游社辅助签到
|
||||
|
||||
基于Python3的米游社辅助签到项目
|
||||
|
||||
本项目米游币部分参考[XiaoMiku01/miyoubiAuto](https://github.com/XiaoMiku01/miyoubiAuto)进行编写
|
||||
|
||||
* 此项目的用途
|
||||
|
||||
这是一个米游社的辅助签到项目,包含了米游币和原神以及崩坏3
|
||||
|
||||
## 如何使用程序
|
||||
|
||||
* **部署方法**
|
||||
|
||||
1. 使用[Git](https://git-scm.com/)或[点击此处](https://github.com/Womsxd/AutoMihoyoBBS/archive/refs/heads/master.zip)下载本项目
|
||||
|
||||
2. 下载[Python3](https://www.python.org/downloads/)
|
||||
|
||||
3. 解压本项目压缩包,在解压目录中**Shift+右键** 打开你的命令提示符cmd或powershell
|
||||
|
||||
4. [requirements.txt](https://raw.githubusercontent.com/Womsxd/AutoMihoyoBBS/master/requirements.txt) 是所需第三方模块,执行 `pip install -r requirements.txt` 安装模块
|
||||
|
||||
5. 打开目录中的**config文件夹**复制`config.json.example`并改名为`config.json`,脚本的多用户功能靠读取不同的配置文件实现,你可以创建无数个`自定义名字.json`,脚本会扫描**config**目录下`json`为拓展名的文件,并按照名称顺序依次执行。
|
||||
|
||||
6. 请使用vscode/notepad++等文本编辑器打开上一步复制好的配置文件
|
||||
|
||||
7. **使用[获取Cookie](#获取米游社Cookie)里面的方法来获取米游社Cookie**
|
||||
|
||||
8. 将复制的Cookie粘贴到`config.json`的`"mihoyobbs_Cookies":" "`中
|
||||
|
||||
例子
|
||||
|
||||
> ```json
|
||||
> "mihoyobbs_Cookies": "你复制的cookie"
|
||||
> ```
|
||||
|
||||
9. 在命令提示符(cmd)/powershell,输入`python main.py`来进行执行
|
||||
|
||||
10. 多用户的请使用`python main_multi.py`,多用户在需要自动执行的情况下请使用`python main_multi.py autorun`
|
||||
|
||||
## 获取米游社Cookie
|
||||
|
||||
1. 打开你的浏览器,进入**无痕/隐身模式**
|
||||
|
||||
2. 由于米哈游修改了bbs可以获取的Cookie,导致一次获取的Cookie缺失,所以需要增加步骤
|
||||
|
||||
3. 打开`http://bbs.mihoyo.com/ys/`并进行登入操作
|
||||
|
||||
4. 在上一步登入完成后新建标签页,打开`http://user.mihoyo.com/`并进行登入操作
|
||||
|
||||
5. 按下键盘上的`F12`或右键检查,打开开发者工具,点击Console
|
||||
|
||||
6. 输入
|
||||
|
||||
```javascript
|
||||
var cookie=document.cookie;var ask=confirm('Cookie:'+cookie+'\n\nDo you want to copy the cookie to the clipboard?');if(ask==true){copy(cookie);msg=cookie}else{msg='Cancel'}
|
||||
```
|
||||
|
||||
回车执行,并在确认无误后点击确定。
|
||||
|
||||
7. **此时Cookie已经复制到你的粘贴板上了**
|
||||
|
||||
|
||||
|
||||
## 使用Docker运行
|
||||
|
||||
Docker的运行脚本基于Linux平台编写,暂未在Win平台测试。
|
||||
|
||||
将本项目Clone至本地后,请先按照上述步骤添加或修改配置文件。随后运行`make-docker.sh`脚本本地构建Docker镜像,同时脚本会自动启动Docker容器(默认容器名为mihoyo-bbs),进行首次运行并显示Log信息。
|
||||
|
||||
```shell
|
||||
sh make-docker.sh
|
||||
```
|
||||
|
||||
或手动执行
|
||||
|
||||
```
|
||||
# 编译容器
|
||||
docker build -f Dockerfile --tag mihoyo-bbs:latest .
|
||||
```
|
||||
|
||||
```
|
||||
# 运行容器(默认自动多配置文件)
|
||||
docker run -itd \
|
||||
--name mihoyo-bbs \
|
||||
--log-opt max-size=1m \
|
||||
-v $(pwd):/var/app \
|
||||
mihoyo-bbs:latest
|
||||
# 运行容器(直接运行main.py)
|
||||
docker run -itd \
|
||||
--name mihoyo-bbs \
|
||||
--log-opt max-size=1m \
|
||||
-v $(pwd):/var/app \
|
||||
-e MULTI=FALSE \
|
||||
mihoyo-bbs:latest
|
||||
```
|
||||
|
||||
若需要添加配置文件或修改配置文件,可直接在主机config文件夹中修改,修改的内容将实时同步在容器中。
|
||||
|
||||
每次运行Docker容器后,容器内将自动按照参数执行签到活动,签到完成后容器将自动停止运行。手动重启容器即可重新运行脚本。
|
||||
|
||||
```
|
||||
docker restart mihoyo-bbs && docker logs -f mihoyo-bbs
|
||||
```
|
||||
|
||||
关于每日定时,用户可在容器外部设计定时触发(启动)程序,每日定时运行脚本。
|
||||
|
||||
(若有需要可自行编写相关脚本通知完成状态
|
||||
|
||||
|
||||
|
||||
## 使用的第三方库
|
||||
|
||||
requests: [github](https://github.com/psf/requests) [pypi](https://pypi.org/project/requests/)
|
||||
|
||||
httpx: [github](https://github.com/encode/httpx) [pypi](https://pypi.org/project/httpx/)
|
||||
|
||||
## License
|
||||
|
||||
[MIT License](https://github.com/Womsxd/AutoMihoyoBBS/blob/master/LICENSE)
|
||||
|
||||
# 米游社辅助签到
|
||||
|
||||
基于Python3的米游社辅助签到项目
|
||||
|
||||
本项目米游币部分参考[XiaoMiku01/miyoubiAuto](https://github.com/XiaoMiku01/miyoubiAuto)进行编写
|
||||
|
||||
* 此项目的用途
|
||||
|
||||
这是一个米游社的辅助签到项目,包含了米游币和原神以及崩坏3
|
||||
|
||||
## 如何使用程序
|
||||
|
||||
* **部署方法**
|
||||
|
||||
1. 使用[Git](https://git-scm.com/)或[点击此处](https://github.com/Womsxd/AutoMihoyoBBS/archive/refs/heads/master.zip)下载本项目
|
||||
|
||||
2. 下载[Python3](https://www.python.org/downloads/)
|
||||
|
||||
3. 解压本项目压缩包,在解压目录中**Shift+右键** 打开你的命令提示符cmd或powershell
|
||||
|
||||
4. [requirements.txt](https://raw.githubusercontent.com/Womsxd/AutoMihoyoBBS/master/requirements.txt) 是所需第三方模块,执行 `pip install -r requirements.txt` 安装模块
|
||||
|
||||
5. 打开目录中的**config文件夹**复制`config.json.example`并改名为`config.json`,脚本的多用户功能靠读取不同的配置文件实现,你可以创建无数个`自定义名字.json`,脚本会扫描**config**目录下`json`为拓展名的文件,并按照名称顺序依次执行。
|
||||
|
||||
6. 请使用vscode/notepad++等文本编辑器打开上一步复制好的配置文件
|
||||
|
||||
7. **使用[获取Cookie](#获取米游社Cookie)里面的方法来获取米游社Cookie**
|
||||
|
||||
8. 将复制的Cookie粘贴到`config.json`的`"mihoyobbs_Cookies":" "`中
|
||||
|
||||
例子
|
||||
|
||||
> ```json
|
||||
> "mihoyobbs_Cookies": "你复制的cookie"
|
||||
> ```
|
||||
|
||||
9. 在命令提示符(cmd)/powershell,输入`python main.py`来进行执行
|
||||
|
||||
10. 多用户的请使用`python main_multi.py`,多用户在需要自动执行的情况下请使用`python main_multi.py autorun`
|
||||
|
||||
## 获取米游社Cookie
|
||||
|
||||
1. 打开你的浏览器,进入**无痕/隐身模式**
|
||||
|
||||
2. 由于米哈游修改了bbs可以获取的Cookie,导致一次获取的Cookie缺失,所以需要增加步骤
|
||||
|
||||
3. 打开`http://bbs.mihoyo.com/ys/`并进行登入操作
|
||||
|
||||
4. 在上一步登入完成后新建标签页,打开`http://user.mihoyo.com/`并进行登入操作
|
||||
|
||||
5. 按下键盘上的`F12`或右键检查,打开开发者工具,点击Console
|
||||
|
||||
6. 输入
|
||||
|
||||
```javascript
|
||||
var cookie=document.cookie;var ask=confirm('Cookie:'+cookie+'\n\nDo you want to copy the cookie to the clipboard?');if(ask==true){copy(cookie);msg=cookie}else{msg='Cancel'}
|
||||
```
|
||||
|
||||
回车执行,并在确认无误后点击确定。
|
||||
|
||||
7. **此时Cookie已经复制到你的粘贴板上了**
|
||||
|
||||
|
||||
|
||||
## 使用Docker运行
|
||||
|
||||
Docker的运行脚本基于Linux平台编写,暂未在Win平台测试。
|
||||
|
||||
将本项目Clone至本地后,请先按照上述步骤添加或修改配置文件。随后运行`make-docker.sh`脚本本地构建Docker镜像,同时脚本会自动启动Docker容器(默认容器名为mihoyo-bbs),进行首次运行并显示Log信息。
|
||||
|
||||
```shell
|
||||
sh make-docker.sh
|
||||
```
|
||||
|
||||
或手动执行
|
||||
|
||||
```
|
||||
# 编译容器
|
||||
docker build -f Dockerfile --tag mihoyo-bbs:latest .
|
||||
```
|
||||
|
||||
```
|
||||
# 运行容器(默认自动多配置文件)
|
||||
docker run -itd \
|
||||
--name mihoyo-bbs \
|
||||
--log-opt max-size=1m \
|
||||
-v $(pwd):/var/app \
|
||||
mihoyo-bbs:latest
|
||||
# 运行容器(直接运行main.py)
|
||||
docker run -itd \
|
||||
--name mihoyo-bbs \
|
||||
--log-opt max-size=1m \
|
||||
-v $(pwd):/var/app \
|
||||
-e MULTI=FALSE \
|
||||
mihoyo-bbs:latest
|
||||
```
|
||||
|
||||
若需要添加配置文件或修改配置文件,可直接在主机config文件夹中修改,修改的内容将实时同步在容器中。
|
||||
|
||||
每次运行Docker容器后,容器内将自动按照参数执行签到活动,签到完成后容器将自动停止运行。手动重启容器即可重新运行脚本。
|
||||
|
||||
```
|
||||
docker restart mihoyo-bbs && docker logs -f mihoyo-bbs
|
||||
```
|
||||
|
||||
关于每日定时,用户可在容器外部设计定时触发(启动)程序,每日定时运行脚本。
|
||||
|
||||
(若有需要可自行编写相关脚本通知完成状态
|
||||
|
||||
|
||||
|
||||
## 使用的第三方库
|
||||
|
||||
requests: [github](https://github.com/psf/requests) [pypi](https://pypi.org/project/requests/)
|
||||
|
||||
httpx: [github](https://github.com/encode/httpx) [pypi](https://pypi.org/project/httpx/)
|
||||
|
||||
## License
|
||||
|
||||
[MIT License](https://github.com/Womsxd/AutoMihoyoBBS/blob/master/LICENSE)
|
||||
|
||||
=======
|
||||
# 米游社辅助签到
|
||||
|
||||
基于Python3的米游社辅助签到项目
|
||||
|
||||
本项目米游币部分参考[XiaoMiku01/miyoubiAuto](https://github.com/XiaoMiku01/miyoubiAuto)进行编写
|
||||
|
||||
* 此项目的用途
|
||||
|
||||
这是一个米游社的辅助签到项目,包含了米游币和原神以及崩坏3
|
||||
|
||||
## 如何使用程序
|
||||
|
||||
* **部署方法**
|
||||
|
||||
1. 使用[Git](https://git-scm.com/)或[点击此处](https://github.com/Womsxd/AutoMihoyoBBS/archive/refs/heads/master.zip)下载本项目
|
||||
|
||||
2. 下载[Python3](https://www.python.org/downloads/)
|
||||
|
||||
3. 解压本项目压缩包,在解压目录中**Shift+右键** 打开你的命令提示符cmd或powershell
|
||||
|
||||
4. [requirements.txt](https://raw.githubusercontent.com/Womsxd/AutoMihoyoBBS/master/requirements.txt) 是所需第三方模块,执行 `pip install -r requirements.txt` 安装模块
|
||||
|
||||
5. 打开目录中的**config文件夹**复制`config.json.example`并改名为`config.json`,脚本的多用户功能靠读取不同的配置文件实现,你可以创建无数个`自定义名字.json`,脚本会扫描**config**目录下`json`为拓展名的文件,并按照名称顺序依次执行。
|
||||
|
||||
6. 请使用vscode/notepad++等文本编辑器打开上一步复制好的配置文件
|
||||
|
||||
7. **使用[获取Cookie](#获取米游社Cookie)里面的方法来获取米游社Cookie**
|
||||
|
||||
8. 将复制的Cookie粘贴到`config.json`的`"mihoyobbs_Cookies":" "`中
|
||||
|
||||
例子
|
||||
|
||||
> ```json
|
||||
> "mihoyobbs_Cookies": "你复制的cookie"
|
||||
> ```
|
||||
|
||||
9. 在命令提示符(cmd)/powershell,输入`python main.py`来进行执行
|
||||
|
||||
10. 多用户的请使用`python main_multi.py`,多用户在需要自动执行的情况下请使用`python main_multi.py autorun`
|
||||
|
||||
## 获取米游社Cookie
|
||||
|
||||
1. 打开你的浏览器,进入**无痕/隐身模式**
|
||||
|
||||
2. 由于米哈游修改了bbs可以获取的Cookie,导致一次获取的Cookie缺失,所以需要增加步骤
|
||||
|
||||
3. 打开`http://bbs.mihoyo.com/ys/`并进行登入操作
|
||||
|
||||
4. 在上一步登入完成后新建标签页,打开`http://user.mihoyo.com/`并进行登入操作
|
||||
|
||||
5. 按下键盘上的`F12`或右键检查,打开开发者工具,点击Console
|
||||
|
||||
6. 输入
|
||||
|
||||
```javascript
|
||||
var cookie=document.cookie;var ask=confirm('Cookie:'+cookie+'\n\nDo you want to copy the cookie to the clipboard?');if(ask==true){copy(cookie);msg=cookie}else{msg='Cancel'}
|
||||
```
|
||||
|
||||
回车执行,并在确认无误后点击确定。
|
||||
|
||||
7. **此时Cookie已经复制到你的粘贴板上了**
|
||||
|
||||
|
||||
|
||||
## 使用Docker运行
|
||||
|
||||
Docker的运行脚本基于Linux平台编写,暂未在Win平台测试。
|
||||
|
||||
将本项目Clone至本地后,请先按照上述步骤添加或修改配置文件。随后运行`make-docker.sh`脚本本地构建Docker镜像,同时初次运行容器。
|
||||
|
||||
```shell
|
||||
sh make-docker.sh
|
||||
```
|
||||
|
||||
或手动执行
|
||||
|
||||
```
|
||||
# 编译容器
|
||||
docker build -f Dockerfile --tag mihoyo-bbs:latest .
|
||||
```
|
||||
|
||||
```
|
||||
# 运行容器(默认自动多配置文件)
|
||||
docker run -itd \
|
||||
--name mihoyo-bbs \
|
||||
--log-opt max-size=1m \
|
||||
-v $(pwd):/var/app \
|
||||
mihoyo-bbs:latest
|
||||
# 运行容器(直接运行main.py)
|
||||
docker run -itd \
|
||||
--name mihoyo-bbs \
|
||||
--log-opt max-size=1m \
|
||||
-v $(pwd):/var/app \
|
||||
-e MULTI=FALSE \
|
||||
mihoyo-bbs:latest
|
||||
```
|
||||
|
||||
若需要添加配置文件或修改配置文件,可直接在主机config文件夹中修改,修改的内容将实时同步在容器中。
|
||||
|
||||
每次运行Docker容器后,容器内将自动按照参数执行签到活动,签到完成后容器将自动停止运行。手动重启容器即可重新运行脚本。
|
||||
|
||||
```
|
||||
docker restart mihoyo-bbs && docker logs -f mihoyo-bbs
|
||||
```
|
||||
|
||||
关于每日定时,用户可在容器外部设计定时触发(启动)程序,每日定时运行脚本。
|
||||
|
||||
(若有需要可自行编写相关脚本通知完成状态
|
||||
|
||||
|
||||
|
||||
## 使用的第三方库
|
||||
|
||||
requests: [github](https://github.com/psf/requests) [pypi](https://pypi.org/project/requests/)
|
||||
|
||||
httpx: [github](https://github.com/encode/httpx) [pypi](https://pypi.org/project/httpx/)
|
||||
|
||||
## License
|
||||
|
||||
[MIT License](https://github.com/Womsxd/AutoMihoyoBBS/blob/master/LICENSE)
|
||||
|
||||
## 鸣谢
|
||||
|
||||
[JetBrains](https://jb.gg/OpenSource)
|
||||
|
||||
43
config.py
43
config.py
@ -2,44 +2,45 @@ import os
|
||||
import json
|
||||
import tools
|
||||
|
||||
#是否启用config
|
||||
# 是否启用config
|
||||
enable_Config = True
|
||||
#这里的内容会自动获取
|
||||
# 这里的内容会自动获取
|
||||
mihoyobbs_Login_ticket = ""
|
||||
mihoyobbs_Stuid = ""
|
||||
mihoyobbs_Stoken = ""
|
||||
#这里是米游社的cookie
|
||||
# 这里是米游社的cookie
|
||||
mihoyobbs_Cookies = ""
|
||||
#这个dist里面的内容和米游社有关
|
||||
# 这个dist里面的内容和米游社有关
|
||||
mihoyobbs = {
|
||||
#全局开关,关闭之后下面的都不执行
|
||||
# 全局开关,关闭之后下面的都不执行
|
||||
"bbs_Global": True,
|
||||
#讨论区签到
|
||||
# 讨论区签到
|
||||
"bbs_Signin": True,
|
||||
#多个讨论区签到
|
||||
# 多个讨论区签到
|
||||
"bbs_Signin_multi": True,
|
||||
#指定签到讨论区
|
||||
#1是崩坏3 2是原神 3是崩坏2 4是未定事件簿 5是大别墅
|
||||
#可以通过设置讨论区的id位置来设置主讨论区,[5,1]就是大别墅为主社区
|
||||
#看帖子 点赞 分享帖子都是使用主社区获取到的列表
|
||||
"bbs_Signin_multi_list": [2,5],
|
||||
#浏览3个帖子
|
||||
# 指定签到讨论区
|
||||
# 1是崩坏3 2是原神 3是崩坏2 4是未定事件簿 5是大别墅
|
||||
# 可以通过设置讨论区的id位置来设置主讨论区,[5,1]就是大别墅为主社区
|
||||
# 看帖子 点赞 分享帖子都是使用主社区获取到的列表
|
||||
"bbs_Signin_multi_list": [2, 5],
|
||||
# 浏览3个帖子
|
||||
"bbs_Read_posts": True,
|
||||
#完成5次点赞
|
||||
# 完成5次点赞
|
||||
"bbs_Like_posts": True,
|
||||
#完成后取消点赞
|
||||
# 完成后取消点赞
|
||||
"bbs_Unlike": True,
|
||||
#分享帖子
|
||||
# 分享帖子
|
||||
"bbs_Share": True,
|
||||
}
|
||||
#原神自动签到
|
||||
# 原神自动签到
|
||||
genshin_Auto_sign = True
|
||||
#崩坏3自动签到
|
||||
# 崩坏3自动签到
|
||||
honkai3rd_Auto_sign = True
|
||||
|
||||
path = os.path.dirname(os.path.realpath(__file__)) + "/config"
|
||||
config_Path = f"{path}/config.json"
|
||||
|
||||
|
||||
def Load_config():
|
||||
with open(config_Path, "r") as f:
|
||||
data = json.load(f)
|
||||
@ -69,8 +70,9 @@ def Load_config():
|
||||
f.close()
|
||||
tools.log.info("Config加载完毕")
|
||||
|
||||
|
||||
def Save_config():
|
||||
with open(config_Path,"r+") as f:
|
||||
with open(config_Path, "r+") as f:
|
||||
data = json.load(f)
|
||||
data["mihoyobbs_Login_ticket"] = mihoyobbs_Login_ticket
|
||||
data["mihoyobbs_Stuid"] = mihoyobbs_Stuid
|
||||
@ -83,8 +85,9 @@ def Save_config():
|
||||
f.close()
|
||||
tools.log.info("Config保存完毕")
|
||||
|
||||
|
||||
def Clear_cookies():
|
||||
with open(config_Path,"r+") as f:
|
||||
with open(config_Path, "r+") as f:
|
||||
data = json.load(f)
|
||||
data["enable_Config"] = False
|
||||
data["mihoyobbs_Login_ticket"] = ""
|
||||
|
||||
64
genshin.py
64
genshin.py
@ -5,70 +5,71 @@ import random
|
||||
import setting
|
||||
from request import http
|
||||
|
||||
|
||||
class genshin:
|
||||
def __init__(self) -> None:
|
||||
self.headers = {
|
||||
'Accept': 'application/json, text/plain, */*',
|
||||
'DS': tools.Get_ds(web=True, web_old=True),
|
||||
'Origin': 'https://webstatic.mihoyo.com',
|
||||
'x-rpc-app_version': setting.mihoyobbs_Version_old,
|
||||
'User-Agent': 'Mozilla/5.0 (Linux; Android 9; Unspecified Device) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/39.0.0.0 Mobile Safari/537.36 miHoYoBBS/2.3.0',
|
||||
'x-rpc-client_type': setting.mihoyobbs_Client_type_web,
|
||||
'Referer': 'https://webstatic.mihoyo.com/bbs/event/signin-ys/index.html?bbs_auth_required=true&act_id=e202009291139501&utm_source=bbs&utm_medium=mys&utm_campaign=icon',
|
||||
'Accept-Encoding': 'gzip, deflate',
|
||||
'Accept-Language': 'zh-CN,en-US;q=0.8',
|
||||
'X-Requested-With': 'com.mihoyo.hyperion',
|
||||
"Cookie": config.mihoyobbs_Cookies,
|
||||
'x-rpc-device_id': tools.Get_deviceid()
|
||||
}
|
||||
'Accept': 'application/json, text/plain, */*',
|
||||
'DS': tools.Get_ds(web=True, web_old=True),
|
||||
'Origin': 'https://webstatic.mihoyo.com',
|
||||
'x-rpc-app_version': setting.mihoyobbs_Version_old,
|
||||
'User-Agent': 'Mozilla/5.0 (Linux; Android 9; Unspecified Device) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/39.0.0.0 Mobile Safari/537.36 miHoYoBBS/2.3.0',
|
||||
'x-rpc-client_type': setting.mihoyobbs_Client_type_web,
|
||||
'Referer': 'https://webstatic.mihoyo.com/bbs/event/signin-ys/index.html?bbs_auth_required=true&act_id=e202009291139501&utm_source=bbs&utm_medium=mys&utm_campaign=icon',
|
||||
'Accept-Encoding': 'gzip, deflate',
|
||||
'Accept-Language': 'zh-CN,en-US;q=0.8',
|
||||
'X-Requested-With': 'com.mihoyo.hyperion',
|
||||
"Cookie": config.mihoyobbs_Cookies,
|
||||
'x-rpc-device_id': tools.Get_deviceid()
|
||||
}
|
||||
self.acc_List = self.Getacc_list()
|
||||
if len(self.acc_List) != 0:
|
||||
self.sign_Give = self.Get_signgive()
|
||||
|
||||
#获取绑定的账号列表
|
||||
# 获取绑定的账号列表
|
||||
def Getacc_list(self) -> list:
|
||||
tools.log.info("正在获取米哈游账号绑定原神账号列表...")
|
||||
temp_List = []
|
||||
req = http.get(setting.genshin_Account_info_url, headers=self.headers)
|
||||
data = req.json()
|
||||
if data["retcode"] != 0:
|
||||
tools.log.warn("获取账号列表失败!")
|
||||
tools.log.warning("获取账号列表失败!")
|
||||
exit(1)
|
||||
for i in data["data"]["list"]:
|
||||
temp_List.append([i["nickname"], i["game_uid"], i["region"]])
|
||||
tools.log.info(f"已获取到{len(temp_List)}个原神账号信息")
|
||||
return temp_List
|
||||
|
||||
#获取已经签到奖励列表
|
||||
# 获取已经签到奖励列表
|
||||
def Get_signgive(self) -> list:
|
||||
tools.log.info("正在获取签到奖励列表...")
|
||||
req = http.get(setting.genshin_Signlisturl.format(setting.genshin_Act_id),headers=self.headers)
|
||||
req = http.get(setting.genshin_Signlisturl.format(setting.genshin_Act_id), headers=self.headers)
|
||||
data = req.json()
|
||||
if data["retcode"] != 0:
|
||||
tools.log.warn("获取签到奖励列表失败")
|
||||
print (req.text)
|
||||
tools.log.warning("获取签到奖励列表失败")
|
||||
print(req.text)
|
||||
exit(1)
|
||||
return data["data"]["awards"]
|
||||
|
||||
#判断签到
|
||||
def Is_sign(self, region:str, uid:str):
|
||||
# 判断签到
|
||||
def Is_sign(self, region: str, uid: str):
|
||||
req = http.get(setting.genshin_Is_signurl.format(setting.genshin_Act_id, region, uid), headers=self.headers)
|
||||
data = req.json()
|
||||
if data["retcode"] != 0:
|
||||
tools.log.warn("获取账号签到信息失败!")
|
||||
print (req.text)
|
||||
tools.log.warning("获取账号签到信息失败!")
|
||||
print(req.text)
|
||||
exit(1)
|
||||
return data["data"]
|
||||
|
||||
#签到
|
||||
# 签到
|
||||
def Sign_acc(self):
|
||||
if len(self.acc_List) != 0:
|
||||
for i in self.acc_List:
|
||||
tools.log.info(f"正在为旅行者{i[0]}进行签到...")
|
||||
time.sleep(random.randint(2, 8))
|
||||
is_data = self.Is_sign(region = i[2], uid = i[1])
|
||||
is_data = self.Is_sign(region=i[2], uid=i[1])
|
||||
if is_data["first_bind"]:
|
||||
tools.log.warn(f"旅行者{i[0]}是第一次绑定米游社,请先手动签到一次")
|
||||
tools.log.warning(f"旅行者{i[0]}是第一次绑定米游社,请先手动签到一次")
|
||||
else:
|
||||
sign_Days = is_data["total_sign_day"] - 1
|
||||
if is_data["is_sign"]:
|
||||
@ -76,17 +77,18 @@ class genshin:
|
||||
else:
|
||||
time.sleep(random.randint(2, 8))
|
||||
req = http.post(url=setting.genshin_Signurl, headers=self.headers,
|
||||
json={'act_id': setting.genshin_Act_id, 'region': i[2], 'uid': i[1]})
|
||||
json={'act_id': setting.genshin_Act_id, 'region': i[2], 'uid': i[1]})
|
||||
data = req.json()
|
||||
if data["retcode"] == 0:
|
||||
if sign_Days == 0:
|
||||
tools.log.info(f"旅行者{i[0]}签到成功~\r\n今天获得的奖励是{tools.Get_item(self.sign_Give[sign_Days])}")
|
||||
else:
|
||||
tools.log.info(f"旅行者{i[0]}签到成功~\r\n今天获得的奖励是{tools.Get_item(self.sign_Give[sign_Days + 1])}")
|
||||
tools.log.info(
|
||||
f"旅行者{i[0]}签到成功~\r\n今天获得的奖励是{tools.Get_item(self.sign_Give[sign_Days + 1])}")
|
||||
elif data["retcode"] == -5003:
|
||||
tools.log.info(f"旅行者{i[0]}今天已经签到过了~\r\n今天获得的奖励是{tools.Get_item(self.sign_Give[sign_Days])}")
|
||||
else:
|
||||
tools.log.warn("账号签到失败!")
|
||||
print (req.text)
|
||||
tools.log.warning("账号签到失败!")
|
||||
print(req.text)
|
||||
else:
|
||||
tools.log.warn("账号没有绑定任何原神账号!")
|
||||
tools.log.warning("账号没有绑定任何原神账号!")
|
||||
|
||||
64
honkai3rd.py
64
honkai3rd.py
@ -5,56 +5,60 @@ import random
|
||||
import setting
|
||||
from request import http
|
||||
|
||||
|
||||
class honkai3rd:
|
||||
def __init__(self) -> None:
|
||||
self.headers = {
|
||||
'Accept': 'application/json, text/plain, */*',
|
||||
'DS': tools.Get_ds(web=True, web_old=True),
|
||||
'Origin': 'https://webstatic.mihoyo.com',
|
||||
'x-rpc-app_version': setting.mihoyobbs_Version_old,
|
||||
'User-Agent': 'Mozilla/5.0 (Linux; Android 9; Unspecified Device) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/39.0.0.0 Mobile Safari/537.36 miHoYoBBS/2.3.0',
|
||||
'x-rpc-client_type': setting.mihoyobbs_Client_type_web,
|
||||
'Referer': 'https://webstatic.mihoyo.com/bh3/event/euthenia/index.html?bbs_presentation_style=fullscreen&bbs_game_role_required=bh3_cn&bbs_auth_required=true&act_id=e202104072769&utm_source=bbs&utm_medium=mys&utm_campaign=icon',
|
||||
'Accept-Encoding': 'gzip, deflate',
|
||||
'Accept-Language': 'zh-CN,en-US;q=0.8',
|
||||
'X-Requested-With': 'com.mihoyo.hyperion',
|
||||
"Cookie": config.mihoyobbs_Cookies,
|
||||
'x-rpc-device_id': tools.Get_deviceid()
|
||||
}
|
||||
'Accept': 'application/json, text/plain, */*',
|
||||
'DS': tools.Get_ds(web=True, web_old=True),
|
||||
'Origin': 'https://webstatic.mihoyo.com',
|
||||
'x-rpc-app_version': setting.mihoyobbs_Version_old,
|
||||
'User-Agent': 'Mozilla/5.0 (Linux; Android 9; Unspecified Device) AppleWebKit/537.36 (KHTML, like Gecko) '
|
||||
'Version/4.0 Chrome/39.0.0.0 Mobile Safari/537.36 miHoYoBBS/2.3.0',
|
||||
'x-rpc-client_type': setting.mihoyobbs_Client_type_web,
|
||||
'Referer': f'https://webstatic.mihoyo.com/bh3/event/euthenia/index.html?bbs_presentation_style=fullscreen'
|
||||
f'&bbs_game_role_required=bh3_cn&bbs_auth_required=t'
|
||||
f'rue&act_id={setting.honkai3rd_Act_id}&utm_source=bbs&utm_medium=mys&utm_campaign=icon',
|
||||
'Accept-Encoding': 'gzip, deflate',
|
||||
'Accept-Language': 'zh-CN,en-US;q=0.8',
|
||||
'X-Requested-With': 'com.mihoyo.hyperion',
|
||||
"Cookie": config.mihoyobbs_Cookies,
|
||||
'x-rpc-device_id': tools.Get_deviceid()
|
||||
}
|
||||
self.acc_List = self.Getacc_list()
|
||||
|
||||
#获取绑定的账号列表
|
||||
# 获取绑定的账号列表
|
||||
def Getacc_list(self) -> list:
|
||||
tools.log.info("正在获取米哈游账号绑定的崩坏3账号列表...")
|
||||
temp_List = []
|
||||
req = http.get(setting.honkai3rd_Account_info_url, headers=self.headers)
|
||||
data = req.json()
|
||||
if data["retcode"] != 0:
|
||||
tools.log.warn("获取账号列表失败!")
|
||||
tools.log.warning("获取账号列表失败!")
|
||||
exit(1)
|
||||
for i in data["data"]["list"]:
|
||||
temp_List.append([i["nickname"], i["game_uid"], i["region"]])
|
||||
tools.log.info(f"已获取到{len(temp_List)}个崩坏3账号信息")
|
||||
return temp_List
|
||||
|
||||
#获取今天已经签到了的dict
|
||||
def Get_today_item(self,raw_data:list) -> dict:
|
||||
#用range进行循环,当staus等于0的时候上一个就是今天签到的dict
|
||||
# 获取今天已经签到了的dict
|
||||
def Get_today_item(self, raw_data: list) -> dict:
|
||||
# 用range进行循环,当status等于0的时候上一个就是今天签到的dict
|
||||
for i in range(len(raw_data)):
|
||||
if raw_data[i]["status"] == 0:
|
||||
return raw_data[i-1]
|
||||
return raw_data[i - 1]
|
||||
if raw_data[i]["status"] == 1:
|
||||
return raw_data[i]
|
||||
if i == int(len(raw_data) - 1) and raw_data[i]["status"] != 0:
|
||||
return raw_data[i]
|
||||
|
||||
#判断签到
|
||||
def Is_sign(self, region:str, uid:str, nickname:str):
|
||||
# 判断签到
|
||||
def Is_sign(self, region: str, uid: str, nickname: str):
|
||||
req = http.get(setting.honkai3rd_Is_signurl.format(setting.honkai3rd_Act_id, region, uid), headers=self.headers)
|
||||
data = req.json()
|
||||
if data["retcode"] != 0:
|
||||
tools.log.warn("获取账号签到信息失败!")
|
||||
print (req.text)
|
||||
tools.log.warning("获取账号签到信息失败!")
|
||||
print(req.text)
|
||||
exit(1)
|
||||
today_Item = self.Get_today_item(data["data"]["sign"]["list"])
|
||||
if today_Item["status"] == 1:
|
||||
@ -63,26 +67,26 @@ class honkai3rd:
|
||||
tools.log.info(f"舰长{nickname}今天已经签到过了~\r\n今天获得的奖励是{tools.Get_item(today_Item)}")
|
||||
return False
|
||||
|
||||
#签到
|
||||
# 签到
|
||||
def Sign_acc(self):
|
||||
if len(self.acc_List) != 0:
|
||||
for i in self.acc_List:
|
||||
tools.log.info(f"正在为舰长{i[0]}进行签到...")
|
||||
time.sleep(random.randint(2, 8))
|
||||
is_data = self.Is_sign(region = i[2], uid = i[1], nickname = i[0])
|
||||
is_data = self.Is_sign(region=i[2], uid=i[1], nickname=i[0])
|
||||
if is_data:
|
||||
time.sleep(random.randint(2, 8))
|
||||
req = http.post(url=setting.honkai3rd_SignUrl, headers=self.headers,
|
||||
json={'act_id': setting.honkai3rd_Act_id, 'region': i[2], 'uid': i[1]})
|
||||
json={'act_id': setting.honkai3rd_Act_id, 'region': i[2], 'uid': i[1]})
|
||||
data = req.json()
|
||||
if data["retcode"] == 0:
|
||||
today_Item = self.Get_today_item(data["data"]["list"])
|
||||
tools.log.info(f"舰长{i[0]}签到成功~\r\n今天获得的奖励是{tools.Get_item(today_Item)}")
|
||||
elif data["retcode"] == -5003:
|
||||
#崩坏3应为奖励列表和签到信息在一起了,加上上面已经可以进行了一次判断,所以这里旧不重复再次执行判断来获取内容了
|
||||
# 崩坏3应为奖励列表和签到信息在一起了,加上上面已经可以进行了一次判断,所以这里旧不重复再次执行判断来获取内容了
|
||||
tools.log.info(f"舰长{i[0]}今天已经签到过了~")
|
||||
else:
|
||||
tools.log.warn("账号签到失败!")
|
||||
print (req.text)
|
||||
tools.log.warning("账号签到失败!")
|
||||
print(req.text)
|
||||
else:
|
||||
tools.log.warn("账号没有绑定任何崩坏3账号!")
|
||||
tools.log.warning("账号没有绑定任何崩坏3账号!")
|
||||
|
||||
7
index.py
7
index.py
@ -2,13 +2,14 @@ import main
|
||||
import main_multi
|
||||
|
||||
|
||||
def main_handler(event:dict, context:dict):
|
||||
def main_handler(event: dict, context: dict):
|
||||
main.main()
|
||||
print("云函数测试支持!")
|
||||
return 0
|
||||
|
||||
def main_handler_mulit(event:dict, context:dict):
|
||||
#多用户需要传递True表示自动执行,不需要手动进行确认
|
||||
|
||||
def main_handler_mulit(event: dict, context: dict):
|
||||
# 多用户需要传递True表示自动执行,不需要手动进行确认
|
||||
main_multi.main_multi(True)
|
||||
print("云函数多用户测试支持!")
|
||||
return 0
|
||||
|
||||
10
login.py
10
login.py
@ -3,20 +3,20 @@ import config
|
||||
import request
|
||||
import setting
|
||||
|
||||
|
||||
def login():
|
||||
if (config.mihoyobbs_Cookies == ''):
|
||||
if config.mihoyobbs_Cookies == '':
|
||||
log.error("请填入Cookies!")
|
||||
config.Clear_cookies()
|
||||
exit(1)
|
||||
temp_Cookies = {}
|
||||
#判断Cookie里面是否有login_ticket 没有的话直接退了
|
||||
# 判断Cookie里面是否有login_ticket 没有的话直接退了
|
||||
if "login_ticket" in config.mihoyobbs_Cookies:
|
||||
temp_Cookies = config.mihoyobbs_Cookies.split(";")
|
||||
for i in temp_Cookies:
|
||||
if i.split("=")[0] == " login_ticket":
|
||||
config.mihoyobbs_Login_ticket = i.split("=")[1]
|
||||
break
|
||||
#这里获取Stuid,但是实际是可以直接拿cookie里面的Uid
|
||||
# 这里获取Stuid,但是实际是可以直接拿cookie里面的Uid
|
||||
data = request.get(url=setting.bbs_Cookieurl.format(config.mihoyobbs_Login_ticket))
|
||||
if "成功" in data["data"]["msg"]:
|
||||
config.mihoyobbs_Stuid = str(data["data"]["cookie_info"]["account_id"])
|
||||
@ -32,4 +32,4 @@ def login():
|
||||
else:
|
||||
log.error("cookie中没有'login_ticket'字段,请重新登录米游社,重新抓取cookie!")
|
||||
config.Clear_cookies()
|
||||
exit(1)
|
||||
exit(1)
|
||||
|
||||
34
main.py
34
main.py
@ -8,39 +8,41 @@ import setting
|
||||
import mihoyobbs
|
||||
import honkai3rd
|
||||
|
||||
|
||||
def main():
|
||||
#初始化,加载配置
|
||||
# 初始化,加载配置
|
||||
config.Load_config()
|
||||
if config.enable_Config:
|
||||
#检测参数是否齐全,如果缺少就进行登入操作
|
||||
# 检测参数是否齐全,如果缺少就进行登入操作
|
||||
if config.mihoyobbs_Login_ticket == "" or config.mihoyobbs_Stuid == "" or config.mihoyobbs_Stoken == "":
|
||||
#登入
|
||||
# 登入
|
||||
login.login()
|
||||
time.sleep(random.randint(2, 8))
|
||||
#获取要使用的BBS列表,#判断是否开启bbs_Signin_multi
|
||||
# 获取要使用的BBS列表,#判断是否开启bbs_Signin_multi
|
||||
if config.mihoyobbs["bbs_Signin_multi"]:
|
||||
#速度快,但是无法设置主社区,主社区默认为第一个
|
||||
# 速度快,但是无法设置主社区,主社区默认为第一个
|
||||
'''
|
||||
for i in setting.mihoyobbs_List:
|
||||
if int(i["id"]) in config.mihoyobbs["bbs_Signin_multi_list"]:
|
||||
setting.mihoyobbs_List_Use.append(i)
|
||||
'''
|
||||
#用这里的方案可以实现当让id在第一个的时候为主社区
|
||||
# 用这里的方案可以实现当让id在第一个的时候为主社区
|
||||
for i in config.mihoyobbs["bbs_Signin_multi_list"]:
|
||||
for i2 in setting.mihoyobbs_List:
|
||||
if i == int(i2["id"]):
|
||||
setting.mihoyobbs_List_Use.append(i2)
|
||||
else:
|
||||
#关闭bbs_Signin_multi后只签到大别墅
|
||||
# 关闭bbs_Signin_multi后只签到大别墅
|
||||
for i in setting.mihoyobbs_List:
|
||||
if int(i["id"]) == 5:
|
||||
setting.mihoyobbs_List_Use.append(i)
|
||||
#米游社签到
|
||||
# 米游社签到
|
||||
if config.mihoyobbs["bbs_Global"]:
|
||||
bbs = mihoyobbs.mihoyobbs()
|
||||
if bbs.Task_do["bbs_Sign"] and bbs.Task_do["bbs_Read_posts"] and bbs.Task_do["bbs_Like_posts"] and bbs.Task_do["bbs_Share"]:
|
||||
if bbs.Task_do["bbs_Sign"] and bbs.Task_do["bbs_Read_posts"] and bbs.Task_do["bbs_Like_posts"] and \
|
||||
bbs.Task_do["bbs_Share"]:
|
||||
tools.log.info(f"今天已经全部完成了!一共获得{mihoyobbs.Today_have_getcoins}个米游币,目前有{mihoyobbs.Have_coins}个米游币")
|
||||
else:
|
||||
else:
|
||||
if config.mihoyobbs["bbs_Signin"]:
|
||||
bbs.Signin()
|
||||
if config.mihoyobbs["bbs_Read_posts"]:
|
||||
@ -50,11 +52,12 @@ def main():
|
||||
if config.mihoyobbs["bbs_Share"]:
|
||||
bbs.Share()
|
||||
bbs.Get_taskslist()
|
||||
tools.log.info(f"今天已经获得{mihoyobbs.Today_have_getcoins}个米游币,还能获得{mihoyobbs.Today_getcoins}个米游币,目前有{mihoyobbs.Have_coins}个米游币")
|
||||
tools.log.info(
|
||||
f"今天已经获得{mihoyobbs.Today_have_getcoins}个米游币,还能获得{mihoyobbs.Today_getcoins}个米游币,目前有{mihoyobbs.Have_coins}个米游币")
|
||||
time.sleep(random.randint(2, 8))
|
||||
else:
|
||||
tools.log.info("米游社功能未启用!")
|
||||
#原神签到
|
||||
# 原神签到
|
||||
if config.genshin_Auto_sign:
|
||||
tools.log.info("正在进行原神签到")
|
||||
genshin_Help = genshin.genshin()
|
||||
@ -62,7 +65,7 @@ def main():
|
||||
time.sleep(random.randint(2, 8))
|
||||
else:
|
||||
tools.log.info("原神签到功能未启用!")
|
||||
#崩坏3签到
|
||||
# 崩坏3签到
|
||||
if config.honkai3rd_Auto_sign:
|
||||
tools.log.info("正在进行崩坏3签到")
|
||||
honkai3rd_Help = honkai3rd.honkai3rd()
|
||||
@ -70,8 +73,9 @@ def main():
|
||||
else:
|
||||
tools.log.info("崩坏3签到功能未启用!")
|
||||
else:
|
||||
tools.log.warn ("Config未启用!")
|
||||
tools.log.warning("Config未启用!")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
pass
|
||||
pass
|
||||
|
||||
@ -7,20 +7,22 @@ import config
|
||||
import random
|
||||
import setting
|
||||
|
||||
#搜索配置文件
|
||||
def Fund_config() ->list:
|
||||
file_Name=[]
|
||||
|
||||
# 搜索配置文件
|
||||
def Fund_config() -> list:
|
||||
file_Name = []
|
||||
for files in os.listdir(config.path):
|
||||
if os.path.splitext(files)[1] == '.json':
|
||||
file_Name.append(files)
|
||||
return (file_Name)
|
||||
return file_Name
|
||||
|
||||
def main_multi(autorun:bool):
|
||||
|
||||
def main_multi(autorun: bool):
|
||||
tools.log.info("AutoMihoyoBBS Multi User mode")
|
||||
tools.log.info("正在搜索配置文件!")
|
||||
config_List = Fund_config()
|
||||
if len(config_List) == 0:
|
||||
tools.log.warn("未检测到配置文件,请确认config文件夹存在.json后缀名的配置文件!")
|
||||
tools.log.warning("未检测到配置文件,请确认config文件夹存在.json后缀名的配置文件!")
|
||||
exit(1)
|
||||
if autorun:
|
||||
tools.log.info(f"已搜索到{len(config_List)}个配置文件,正在开始执行!")
|
||||
@ -33,11 +35,12 @@ def main_multi(autorun:bool):
|
||||
for i in iter(config_List):
|
||||
tools.log.info(f"正在执行{i}")
|
||||
setting.mihoyobbs_List_Use = []
|
||||
config.config_Path= f"{config.path}/{i}"
|
||||
config.config_Path = f"{config.path}/{i}"
|
||||
main.main()
|
||||
tools.log.info(f"{i}执行完毕")
|
||||
time.sleep(random.randint(3, 10))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
if len(sys.argv) >= 2 and sys.argv[1] == "autorun":
|
||||
autorun = True
|
||||
@ -45,4 +48,4 @@ if __name__ == "__main__":
|
||||
autorun = False
|
||||
main_multi(autorun)
|
||||
exit(0)
|
||||
pass
|
||||
pass
|
||||
|
||||
46
mihoyobbs.py
46
mihoyobbs.py
@ -6,9 +6,10 @@ import setting
|
||||
from request import http
|
||||
|
||||
Today_getcoins = 0
|
||||
Today_have_getcoins = 0 #这个变量以后可能会用上,先留着了
|
||||
Today_have_getcoins = 0 # 这个变量以后可能会用上,先留着了
|
||||
Have_coins = 0
|
||||
|
||||
|
||||
class mihoyobbs:
|
||||
def __init__(self):
|
||||
self.headers = {
|
||||
@ -34,13 +35,13 @@ class mihoyobbs:
|
||||
"bbs_Share": False
|
||||
}
|
||||
self.Get_taskslist()
|
||||
#如果这三个任务都做了就没必要获取帖子了
|
||||
# 如果这三个任务都做了就没必要获取帖子了
|
||||
if self.Task_do["bbs_Read_posts"] and self.Task_do["bbs_Like_posts"] and self.Task_do["bbs_Share"]:
|
||||
pass
|
||||
else:
|
||||
self.postsList = self.Getlist()
|
||||
|
||||
#获取任务列表,用来判断做了哪些任务
|
||||
# 获取任务列表,用来判断做了哪些任务
|
||||
def Get_taskslist(self):
|
||||
global Today_getcoins
|
||||
global Today_have_getcoins
|
||||
@ -56,44 +57,44 @@ class mihoyobbs:
|
||||
Today_getcoins = data["data"]["can_get_points"]
|
||||
Today_have_getcoins = data["data"]["already_received_points"]
|
||||
Have_coins = data["data"]["total_points"]
|
||||
#如果当日可获取米游币数量为0直接判断全部任务都完成了
|
||||
# 如果当日可获取米游币数量为0直接判断全部任务都完成了
|
||||
if Today_getcoins == 0:
|
||||
self.Task_do["bbs_Sign"] = True
|
||||
self.Task_do["bbs_Read_posts"] = True
|
||||
self.Task_do["bbs_Like_posts"] = True
|
||||
self.Task_do["bbs_Share"] = True
|
||||
else:
|
||||
#如果第0个大于或等于62则直接判定任务没做
|
||||
# 如果第0个大于或等于62则直接判定任务没做
|
||||
if data["data"]["states"][0]["mission_id"] >= 62:
|
||||
tools.log.info(f"新的一天,今天可以获得{Today_getcoins}个米游币")
|
||||
pass
|
||||
else:
|
||||
tools.log.info(f"似乎还有任务没完成,今天还能获得{Today_getcoins}")
|
||||
for i in data["data"]["states"]:
|
||||
#58是讨论区签到
|
||||
# 58是讨论区签到
|
||||
if i["mission_id"] == 58:
|
||||
if i["is_get_award"]:
|
||||
self.Task_do["bbs_Sign"] = True
|
||||
#59是看帖子
|
||||
# 59是看帖子
|
||||
elif i["mission_id"] == 59:
|
||||
if i["is_get_award"]:
|
||||
self.Task_do["bbs_Read_posts"] = True
|
||||
else:
|
||||
self.Task_do["bbs_Read_posts_num"] -= i["happened_times"]
|
||||
#60是给帖子点赞
|
||||
# 60是给帖子点赞
|
||||
elif i["mission_id"] == 60:
|
||||
if i["is_get_award"]:
|
||||
self.Task_do["bbs_Like_posts"] = True
|
||||
else:
|
||||
self.Task_do["bbs_Like_posts_num"] -= i["happened_times"]
|
||||
#61是分享帖子
|
||||
# 61是分享帖子
|
||||
elif i["mission_id"] == 61:
|
||||
if i["is_get_award"]:
|
||||
self.Task_do["bbs_Share"] = True
|
||||
#分享帖子,是最后一个任务,到这里了下面都是一次性任务,直接跳出循环
|
||||
# 分享帖子,是最后一个任务,到这里了下面都是一次性任务,直接跳出循环
|
||||
break
|
||||
|
||||
#获取要帖子列表
|
||||
# 获取要帖子列表
|
||||
def Getlist(self) -> list:
|
||||
temp_List = []
|
||||
tools.log.info("正在获取帖子列表......")
|
||||
@ -104,24 +105,24 @@ class mihoyobbs:
|
||||
tools.log.info("已获取{}个帖子".format(len(temp_List)))
|
||||
return temp_List
|
||||
|
||||
#进行签到操作
|
||||
# 进行签到操作
|
||||
def Signin(self):
|
||||
if self.Task_do["bbs_Sign"]:
|
||||
tools.log.info("讨论区任务已经完成过了~")
|
||||
else:
|
||||
tools.log.info("正在签到......")
|
||||
for i in setting.mihoyobbs_List_Use:
|
||||
req = http.post(url=setting.bbs_Signurl.format(i["id"]), data="" ,headers=self.headers)
|
||||
req = http.post(url=setting.bbs_Signurl.format(i["id"]), data={}, headers=self.headers)
|
||||
data = req.json()
|
||||
if "err" not in data["message"]:
|
||||
tools.log.info(str(i["name"]+ data["message"]))
|
||||
tools.log.info(str(i["name"] + data["message"]))
|
||||
time.sleep(random.randint(2, 8))
|
||||
else:
|
||||
tools.log.info("签到失败,你的cookie可能已过期,请重新设置cookie。")
|
||||
config.Clear_cookies()
|
||||
exit(1)
|
||||
|
||||
#看帖子
|
||||
# 看帖子
|
||||
def Readposts(self):
|
||||
if self.Task_do["bbs_Read_posts"]:
|
||||
tools.log.info("看帖任务已经完成过了~")
|
||||
@ -134,7 +135,7 @@ class mihoyobbs:
|
||||
tools.log.info("看帖:{} 成功".format(self.postsList[i][1]))
|
||||
time.sleep(random.randint(2, 8))
|
||||
|
||||
#点赞
|
||||
# 点赞
|
||||
def Likeposts(self):
|
||||
if self.Task_do["bbs_Like_posts"]:
|
||||
tools.log.info("点赞任务已经完成过了~")
|
||||
@ -142,21 +143,22 @@ class mihoyobbs:
|
||||
tools.log.info("正在点赞......")
|
||||
for i in range(self.Task_do["bbs_Like_posts_num"]):
|
||||
req = http.post(url=setting.bbs_Likeurl, headers=self.headers,
|
||||
json={"post_id": self.postsList[i][0], "is_cancel": False})
|
||||
json={"post_id": self.postsList[i][0], "is_cancel": False})
|
||||
data = req.json()
|
||||
if data["message"] == "OK":
|
||||
tools.log.info("点赞:{} 成功".format(self.postsList[i][1]))
|
||||
#判断取消点赞是否打开
|
||||
# 判断取消点赞是否打开
|
||||
if config.mihoyobbs["bbs_Unlike"]:
|
||||
time.sleep(random.randint(2, 8))
|
||||
req = http.post(url=setting.bbs_Likeurl, headers=self.headers,
|
||||
json={"post_id": self.postsList[i][0], "is_cancel": True})
|
||||
json={"post_id": self.postsList[i][0], "is_cancel": True})
|
||||
data = req.json()
|
||||
if data["message"] == "OK":
|
||||
tools.log.info("取消点赞:{} 成功".format(self.postsList[i][1]))
|
||||
time.sleep(random.randint(2, 8))
|
||||
time.sleep(random.randint(2, 8))
|
||||
|
||||
# 分享操作
|
||||
|
||||
#分享操作
|
||||
def Share(self):
|
||||
if self.Task_do["bbs_Share"]:
|
||||
tools.log.info("分享任务已经完成过了~")
|
||||
@ -166,4 +168,4 @@ class mihoyobbs:
|
||||
data = req.json()
|
||||
if data["message"] == "OK":
|
||||
tools.log.info("分享:{} 成功".format(self.postsList[0][1]))
|
||||
time.sleep(random.randint(2, 8))
|
||||
time.sleep(random.randint(2, 8))
|
||||
|
||||
38
push_main-server.py
Normal file
38
push_main-server.py
Normal file
@ -0,0 +1,38 @@
|
||||
import sys
|
||||
import time
|
||||
import random
|
||||
import subprocess
|
||||
from request import http
|
||||
|
||||
SendKey = ""
|
||||
send_Url = f"https://sctapi.ftqq.com/{SendKey}.send"
|
||||
|
||||
python_Path = sys.executable
|
||||
|
||||
run_ShellCommand = python_Path + " main_multi.py autorun"
|
||||
|
||||
for i in range(2):
|
||||
opt_id, opt_info = subprocess.getstatusoutput(run_ShellCommand)
|
||||
if opt_id == 0:
|
||||
break
|
||||
time.sleep(random.randint(30, 70))
|
||||
|
||||
if opt_id != 0:
|
||||
print("Error!")
|
||||
http.post(
|
||||
url=send_Url,
|
||||
data={
|
||||
"title": "米游社脚本执行出错!",
|
||||
"desp": "这里是运行相关日志:\r\n" + opt_info
|
||||
}
|
||||
)
|
||||
else:
|
||||
http.post(
|
||||
url=send_Url,
|
||||
data={
|
||||
"title": "米游社脚本执行成功",
|
||||
"desp": "这里是运行相关日志:\r\n" + opt_info
|
||||
}
|
||||
)
|
||||
print("OK!")
|
||||
exit(0)
|
||||
20
request.py
20
request.py
@ -1,17 +1,21 @@
|
||||
try:
|
||||
#优先使用httpx,在httpx无法使用的环境下使用requests
|
||||
# 优先使用httpx,在httpx无法使用的环境下使用requests
|
||||
import httpx
|
||||
|
||||
http = httpx
|
||||
#当openssl版本小于1.0.2的时候直接进行一个空请求让httpx报错
|
||||
# 当openssl版本小于1.0.2的时候直接进行一个空请求让httpx报错
|
||||
import tools
|
||||
|
||||
if tools.Get_openssl_Version() <= 102:
|
||||
httpx.get()
|
||||
except:
|
||||
import requests
|
||||
|
||||
http = requests
|
||||
|
||||
#这里实际上应该加个"-> dict"但是考虑到请求可能失败的关系,所以直接不声明返回变量
|
||||
def get(url:str, **headers:dict):
|
||||
|
||||
# 这里实际上应该加个"-> dict"但是考虑到请求可能失败的关系,所以直接不声明返回变量
|
||||
def get(url: str, **headers: dict):
|
||||
try:
|
||||
req = http.get(url, headers=headers)
|
||||
return req.json()
|
||||
@ -19,7 +23,8 @@ def get(url:str, **headers:dict):
|
||||
print("请求失败,网络错误!")
|
||||
return ""
|
||||
|
||||
def post(url:str, data:dict, **headers:dict):
|
||||
|
||||
def post(url: str, data: dict, **headers: dict):
|
||||
try:
|
||||
req = http.post(url, data=data, headers=headers)
|
||||
return req.json()
|
||||
@ -27,10 +32,11 @@ def post(url:str, data:dict, **headers:dict):
|
||||
print("请求失败,网络错误!")
|
||||
return ""
|
||||
|
||||
def post_json(url:str, json, **headers:dict):
|
||||
|
||||
def post_json(url: str, json, **headers: dict):
|
||||
try:
|
||||
req = http.post(url, json=json, headers=headers)
|
||||
return req.json()
|
||||
except:
|
||||
print("请求失败,网络错误!")
|
||||
return ""
|
||||
return ""
|
||||
|
||||
@ -1,2 +1,2 @@
|
||||
httpx==0.19.0
|
||||
httpx==0.20.0
|
||||
requests==2.26.0
|
||||
92
setting.py
92
setting.py
@ -1,68 +1,68 @@
|
||||
#米游社的Salt
|
||||
# 米游社的Salt
|
||||
mihoyobbs_Salt = "fd3ykrh7o1j54g581upo1tvpam0dsgtf"
|
||||
mihoyobbs_Salt_web = "14bmu1mz0yuljprsfgpvjh3ju2ni468r"
|
||||
mihoyobbs_Salt_web_old = "h8w582wxwgqvahcdkpvdhbh2w9casgfl"
|
||||
#米游社的版本
|
||||
mihoyobbs_Version = "2.7.0" #Slat和Version相互对应
|
||||
# 米游社的版本
|
||||
mihoyobbs_Version = "2.7.0" # Slat和Version相互对应
|
||||
mihoyobbs_Version_old = "2.3.0"
|
||||
#米游社的客户端类型
|
||||
mihoyobbs_Client_type = "2" #1为ios 2为安卓
|
||||
mihoyobbs_Client_type_web = "5" #4为pc web 5为mobile web
|
||||
#米游社的分区列表
|
||||
# 米游社的客户端类型
|
||||
mihoyobbs_Client_type = "2" # 1为ios 2为安卓
|
||||
mihoyobbs_Client_type_web = "5" # 4为pc web 5为mobile web
|
||||
# 米游社的分区列表
|
||||
mihoyobbs_List = [{
|
||||
"id": "1",
|
||||
"forumId": "1",
|
||||
"name": "崩坏3",
|
||||
"url": "https://bbs.mihoyo.com/bh3/"
|
||||
},{
|
||||
"id": "2",
|
||||
"forumId": "26",
|
||||
"name": "原神",
|
||||
"url": "https://bbs.mihoyo.com/ys/"
|
||||
},{
|
||||
"id": "3",
|
||||
"forumId": "30",
|
||||
"name": "崩坏2",
|
||||
"url": "https://bbs.mihoyo.com/bh2/"
|
||||
},{
|
||||
"id": "4",
|
||||
"forumId": "37",
|
||||
"name": "未定事件簿",
|
||||
"url": "https://bbs.mihoyo.com/wd/"
|
||||
},{
|
||||
"id": "5",
|
||||
"forumId": "34",
|
||||
"name": "大别野",
|
||||
"url": "https://bbs.mihoyo.com/dby/"
|
||||
},{
|
||||
"id": "6",
|
||||
"forumId": "52",
|
||||
"name": "崩坏:星穹铁道",
|
||||
"url": "https://bbs.mihoyo.com/sr/"
|
||||
}]
|
||||
"id": "1",
|
||||
"forumId": "1",
|
||||
"name": "崩坏3",
|
||||
"url": "https://bbs.mihoyo.com/bh3/"
|
||||
}, {
|
||||
"id": "2",
|
||||
"forumId": "26",
|
||||
"name": "原神",
|
||||
"url": "https://bbs.mihoyo.com/ys/"
|
||||
}, {
|
||||
"id": "3",
|
||||
"forumId": "30",
|
||||
"name": "崩坏2",
|
||||
"url": "https://bbs.mihoyo.com/bh2/"
|
||||
}, {
|
||||
"id": "4",
|
||||
"forumId": "37",
|
||||
"name": "未定事件簿",
|
||||
"url": "https://bbs.mihoyo.com/wd/"
|
||||
}, {
|
||||
"id": "5",
|
||||
"forumId": "34",
|
||||
"name": "大别野",
|
||||
"url": "https://bbs.mihoyo.com/dby/"
|
||||
}, {
|
||||
"id": "6",
|
||||
"forumId": "52",
|
||||
"name": "崩坏:星穹铁道",
|
||||
"url": "https://bbs.mihoyo.com/sr/"
|
||||
}]
|
||||
|
||||
#Config Load之后run里面进行列表的选择
|
||||
mihoyobbs_List_Use= []
|
||||
# Config Load之后run里面进行列表的选择
|
||||
mihoyobbs_List_Use = []
|
||||
|
||||
#米游社的API列表
|
||||
# 米游社的API列表
|
||||
bbs_Cookieurl = "https://webapi.account.mihoyo.com/Api/cookie_accountinfo_by_loginticket?login_ticket={}"
|
||||
bbs_Cookieurl2 = "https://api-takumi.mihoyo.com/auth/api/getMultiTokenByLoginTicket?login_ticket={}&token_types=3&uid={}"
|
||||
bbs_Taskslist = "https://bbs-api.mihoyo.com/apihub/sapi/getUserMissionsState" #获取任务列表
|
||||
bbs_Taskslist = "https://bbs-api.mihoyo.com/apihub/sapi/getUserMissionsState" # 获取任务列表
|
||||
bbs_Signurl = "https://bbs-api.mihoyo.com/apihub/sapi/signIn?gids={}" # post
|
||||
bbs_Listurl = "https://bbs-api.mihoyo.com/post/api/getForumPostList?forum_id={}&is_good=false&is_hot=false&page_size=20&sort_type=1"
|
||||
bbs_Detailurl = "https://bbs-api.mihoyo.com/post/api/getPostFull?post_id={}"
|
||||
bbs_Shareurl = "https://bbs-api.mihoyo.com/apihub/api/getShareConf?entity_id={}&entity_type=1"
|
||||
bbs_Likeurl = "https://bbs-api.mihoyo.com/apihub/sapi/upvotePost" # post json
|
||||
|
||||
#原神自动签到相关的设置
|
||||
# 原神自动签到相关的设置
|
||||
genshin_Act_id = "e202009291139501"
|
||||
genshin_Account_info_url = "https://api-takumi.mihoyo.com/binding/api/getUserGameRolesByCookie?game_biz=hk4e_cn"
|
||||
genshin_Signlisturl = "https://api-takumi.mihoyo.com/event/bbs_sign_reward/home?act_id={}"
|
||||
genshin_Is_signurl = "https://api-takumi.mihoyo.com/event/bbs_sign_reward/info?act_id={}®ion={}&uid={}"
|
||||
genshin_Signurl = "https://api-takumi.mihoyo.com/event/bbs_sign_reward/sign"
|
||||
|
||||
#崩坏3自动签到相关的设置
|
||||
honkai3rd_Act_id = "e202104072769"
|
||||
# 崩坏3自动签到相关的设置
|
||||
honkai3rd_Act_id = "ea20211026151532"
|
||||
honkai3rd_Account_info_url = "https://api-takumi.mihoyo.com/binding/api/getUserGameRolesByCookie?game_biz=bh3_cn"
|
||||
honkai3rd_Is_signurl = "https://api-takumi.mihoyo.com/common/euthenia/index?act_id={}®ion={}&uid={}"
|
||||
honkai3rd_SignUrl = "https://api-takumi.mihoyo.com/common/euthenia/sign"
|
||||
honkai3rd_Is_signurl = "https://api-takumi.mihoyo.com/common/eutheniav2/index?act_id={}®ion={}&uid={}"
|
||||
honkai3rd_SignUrl = "https://api-takumi.mihoyo.com/common/eutheniav2/sign"
|
||||
|
||||
50
tools.py
50
tools.py
@ -8,33 +8,39 @@ import logging
|
||||
import hashlib
|
||||
import setting
|
||||
|
||||
#Log输出,这里提供了自定义logging输出的机会,只需要创建一个logging.ini并且写入配置文件即可自定义输出
|
||||
# Log输出,这里提供了自定义logging输出的机会,只需要创建一个logging.ini并且写入配置文件即可自定义输出
|
||||
if os.path.exists(f"{config.path}/logging.ini"):
|
||||
import logging.config
|
||||
|
||||
logging.config.fileConfig(f"{config.path}/logging.ini")
|
||||
log = logging.getLogger("AutoMihoyoBBS")
|
||||
else:
|
||||
logging.basicConfig(
|
||||
level=logging.INFO,
|
||||
format='%(asctime)s %(levelname)s %(message)s',
|
||||
datefmt='%Y-%m-%dT%H:%M:%S')
|
||||
log = logger = logging
|
||||
|
||||
log = logger = logging
|
||||
|
||||
#md5计算
|
||||
def MD5(text:str) -> str:
|
||||
# md5计算
|
||||
def MD5(text: str) -> str:
|
||||
md5 = hashlib.md5()
|
||||
md5.update(text.encode())
|
||||
return md5.hexdigest()
|
||||
|
||||
#随机文本
|
||||
def Random_text(num:int) -> str:
|
||||
return''.join(random.sample(string.ascii_lowercase + string.digits, num))
|
||||
|
||||
#时间戳
|
||||
# 随机文本
|
||||
def Random_text(num: int) -> str:
|
||||
return ''.join(random.sample(string.ascii_lowercase + string.digits, num))
|
||||
|
||||
|
||||
# 时间戳
|
||||
def Timestamp() -> int:
|
||||
return int(time.time())
|
||||
|
||||
#获取请求Header里的DS 当web为true则生成网页端的DS
|
||||
def Get_ds(web:bool, web_old:bool) -> str:
|
||||
|
||||
# 获取请求Header里的DS 当web为true则生成网页端的DS
|
||||
def Get_ds(web: bool, web_old: bool) -> str:
|
||||
if web:
|
||||
if web_old:
|
||||
n = setting.mihoyobbs_Salt_web_old
|
||||
@ -47,31 +53,35 @@ def Get_ds(web:bool, web_old:bool) -> str:
|
||||
c = MD5("salt=" + n + "&t=" + i + "&r=" + r)
|
||||
return f"{i},{r},{c}"
|
||||
|
||||
#生成一个device id
|
||||
|
||||
# 生成一个device id
|
||||
def Get_deviceid() -> str:
|
||||
return str(uuid.uuid3(uuid.NAMESPACE_URL, config.mihoyobbs_Cookies)).replace(
|
||||
'-', '').upper()
|
||||
'-', '').upper()
|
||||
|
||||
#获取签到的奖励名称
|
||||
def Get_item(raw_data:dict) ->str:
|
||||
|
||||
# 获取签到的奖励名称
|
||||
def Get_item(raw_data: dict) -> str:
|
||||
temp_Name = raw_data["name"]
|
||||
temp_Cnt = raw_data["cnt"]
|
||||
return f"{temp_Name}x{temp_Cnt}"
|
||||
|
||||
#获取明天早晨0点的时间戳
|
||||
|
||||
# 获取明天早晨0点的时间戳
|
||||
def Nextday() -> int:
|
||||
now_time = int(time.time())
|
||||
nextday_time = now_time - now_time % 86400 + time.timezone + 86400
|
||||
return nextday_time
|
||||
|
||||
#获取Openssl版本
|
||||
def Get_openssl_Version() ->int:
|
||||
|
||||
# 获取Openssl版本
|
||||
def Get_openssl_Version() -> int:
|
||||
try:
|
||||
import ssl
|
||||
except ImportError:
|
||||
log.error("Openssl Lib Error !!")
|
||||
#return -99
|
||||
#建议直接更新Python的版本,有特殊情况请提交issues
|
||||
# return -99
|
||||
# 建议直接更新Python的版本,有特殊情况请提交issues
|
||||
exit(-1)
|
||||
temp_List = ssl.OPENSSL_VERSION_INFO
|
||||
return int(f"{str(temp_List[0])}{str(temp_List[1])}{str(temp_List[2])}")
|
||||
return int(f"{str(temp_List[0])}{str(temp_List[1])}{str(temp_List[2])}")
|
||||
|
||||
Loading…
Reference in New Issue
Block a user