Skip to content

Commit

Permalink
多账号可使用不同的配置
Browse files Browse the repository at this point in the history
  • Loading branch information
chen310 committed Dec 27, 2021
1 parent e9d7dc9 commit 84ea76d
Show file tree
Hide file tree
Showing 6 changed files with 81 additions and 39 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@
**/tempCodeRunnerFile.py
**/__pycache__/
/.user_data/
**/test.py
32 changes: 31 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ REGION 默认为`ap-guangzhou` ,可不更改,可选的地域详见[地域列

每个账号每天最多只计算 300 首的听歌量,而且必须是没有听过的歌曲。`enable`表示开启刷听歌量的任务,`full_stop`表示满级后自动停止任务,无需手动将`enable`设为`false``song_number`表示每次要刷的歌曲数量,账号等级较低的时候可以设置得小一点,不然等级高的时候就难刷了,可能较难刷满 300 首。

`auto`设置为`true`的话表示开启自动模式,程序将自动调整每次打卡的歌曲数,`song_number`参数将失效。此时,每天0点时定时触发器会自动运行代码,获取当前的听歌数,并写入环境变量中,这样的话就可以比较精确地计算每次打卡的歌曲数。`tolerance`表示对打卡误差的容忍度,在自动打卡模式下有效,如果设置为0表示必须要达到300首才停止打卡,10表示达到290首就可以停止打卡
`auto`设置为`true`的话表示开启自动模式,程序将自动调整每次打卡的歌曲数,`song_number`参数将失效。此时,每天 0 点时定时触发器会自动运行代码,获取当前的听歌数,并写入环境变量中,这样的话就可以比较精确地计算每次打卡的歌曲数。`tolerance`表示对打卡误差的容忍度,在自动打卡模式下有效,如果设置为 0 表示必须要达到 300 首才停止打卡,10 表示达到 290 首就可以停止打卡

#### 云贝任务

Expand Down Expand Up @@ -365,6 +365,36 @@ REGION 默认为`ap-guangzhou` ,可不更改,可选的地域详见[地域列

多账号需要删除第二个账号前后的`\*``*\`注释,如上所示。如果不会使用,可以每个账号创建一个相应的云函数。

假如多个账号配置不同可以参照下面

```json5
"users": [
{
"username": "188xxxx8888",
"md5": false,
"password": "mypassword"
},
{
"username": "166xxxx6666",
"md5": false,
"password": "anotherpassword",
"setting": {
"serverChan": {
"KEY": "xxxxxxxxxx"
},
"yunbei_task": {
"云贝推歌": {
"songId": [25707139],
}
},
}
}
],
// ...
```

如上所示,在第二个账号中加入了 `setting` 字段,并填写与公共配置不同的地方。这样一来,两个账号就使用了不同的server酱推送,并使用不同的歌曲进行云贝推歌。

#### 关注作者

```json5
Expand Down
9 changes: 6 additions & 3 deletions index.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
from utils import updateConfig
import time
import requests
import json
Expand All @@ -7,6 +8,8 @@
import os
from user import User
from wecom import WeComAlert
import sys
sys.path.append("..")


def md2text(data):
Expand Down Expand Up @@ -50,10 +53,10 @@ def start(event, context):
for user_config in config['users']:
user_count += 1

user_setting = setting
if "setting" in user_config:
for key in user_config['setting']:
user_setting[key] = user_config['setting'][key]
user_setting = updateConfig(user_config["setting"], setting)
else:
user_setting = setting

user = User()
user.setUser(username=user_config['username'], password=user_config['password'], isMd5=user_config['md5'],
Expand Down
48 changes: 14 additions & 34 deletions serverless/loadconfig.py
Original file line number Diff line number Diff line change
@@ -1,43 +1,23 @@
import json
import json5
import re
import copy
import sys
sys.path.append("..")
from utils import jsonDumps
from utils import updateConfig

key_list = ['version', 'desp']


def copy_config(src, dst):
target = copy.deepcopy(dst)
if isinstance(src, dict):
for key in src:
if key in target:
if key not in key_list:
target[key] = copy_config(src[key], target[key])
else:
target[key] = src[key]
elif isinstance(src, list):
if len(src) == 0:
target = src
if len(src) > 0:
if len(target) == 0:
target = copy.deepcopy(src)
else:
if isinstance(src[0], dict):
t = target[0]
target = []
for item in src:
target.append(copy_config(item, t))
else:
target = copy.deepcopy(src)
else:
target = copy.deepcopy(src)
return target
def before(src, dst):
key_list = ['version', 'desp']
for key in src:
if key in dst:
if key in key_list:
src[key] = dst[key]


config = json5.load(open(sys.argv[1], 'r', encoding='utf-8'))
oldconfig = json5.load(open(sys.argv[2], 'r', encoding='utf-8'))

data = copy_config(oldconfig, config)
before(oldconfig, config)

data = updateConfig(oldconfig, config)

with open(sys.argv[1], 'w', encoding='utf-8') as f:
f.write(json.dumps(data, indent=4, ensure_ascii=False))
f.write(jsonDumps(data))
2 changes: 1 addition & 1 deletion user.py
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,7 @@ def auto_daka(self):

time.sleep(15)
resp = self.music.user_detail(self.uid)
self.title = self.title + '本次听歌' + \
self.title = self.title + '今天听歌' + \
str(resp['listenSongs']-self.songnumber) + \
'首,累计听歌'+str(resp['listenSongs'])+'首'
self.taskInfo("本次实际打卡数", str(daka_number) + '首')
Expand Down
28 changes: 28 additions & 0 deletions utils.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import copy
import json

def updateConfig(src, dst):
target = copy.deepcopy(dst)
if isinstance(src, dict):
for key in src:
target[key] = updateConfig(src[key], target[key])
elif isinstance(src, list):
if len(src) == 0:
target = src
else:
if len(target) == 0:
target = copy.deepcopy(src)
else:
if isinstance(src[0], dict):
t = target[0]
target = []
for item in src:
target.append(updateConfig(item, t))
else:
target = copy.deepcopy(src)
else:
target = copy.deepcopy(src)
return target

def jsonDumps(data):
return json.dumps(data,indent=4,ensure_ascii=False)

0 comments on commit 84ea76d

Please sign in to comment.