Skip to content
This repository has been archived by the owner on Aug 18, 2020. It is now read-only.

Commit

Permalink
6.0.13 Update
Browse files Browse the repository at this point in the history
  • Loading branch information
MskAdr committed Jun 10, 2020
1 parent 211a475 commit c1e6273
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 66 deletions.
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
因为应援会放弃使用owhat平台,所以开发仅完成了获取排名和项目信息的部分,并没有开发获取订单的部分。如果有需要欢迎提出issue。

## 更新日志
### 2020年6月10日更新
适配了口袋48 6.0.13
### 2020年4月17日更新
修改了PK播报的模块
### 2020年3月28日更新
Expand Down
41 changes: 30 additions & 11 deletions pocket48.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
import base64
import hashlib
import json
import logging
import random
import time

import requests
Expand All @@ -9,6 +12,15 @@
logger = logging.getLogger('QQBot')


def get_pa():
timestamp = int(time.time())*1000
randomnum = random.randint(1000, 9999)
salt = 'K4bMWJawAtnyyTNOa70S'
hashstr = hashlib.md5(f'{timestamp}{randomnum}{salt}'.encode('utf-8')).hexdigest()
pa = base64.b64encode(f'{timestamp},{randomnum},{hashstr}'.encode('utf-8'))
return pa


def send_request(url: str, data: dict, has_login: bool = False) -> dict:
"""向口袋48服务器发送请求
### Args:
Expand All @@ -19,15 +31,16 @@ def send_request(url: str, data: dict, has_login: bool = False) -> dict:
"""
header = {
'Host': 'pocketapi.48.cn',
'accept': '*/*',
'Accept': '*/*',
'Accept-Language': 'zh-Hans-CN;q=1',
'User-Agent': 'PocketFans201807/6.0.10 (iPhone; iOS 13.3; Scale/2.00)',
'Accept-Encoding': 'gzip, deflate',
'appInfo': ('{"vendor":"apple","deviceId":"0","appVersion":"6.0.10",'
'"appBuild":"200120","osVersion":"13.3.1","osType":"ios",'
'"deviceName":"iPhone XS Max","os":"ios"}'),
'User-Agent': 'PocketFans201807/6.0.13 (iPhone; iOS 13.5; Scale/3.00)',
'Accept-Encoding': 'gzip, deflate, br',
'appInfo': ('{"vendor":"apple","deviceId":"0","appVersion":"6.0.13",'
'"appBuild":"200513","osVersion":"13.5.0","osType":"ios",'
'"deviceName":"unknown","os":"ios"}'),
'Content-Type': 'application/json;charset=utf-8',
'Connection': 'keep-alive'
'Connection': 'keep-alive',
'pa': get_pa()
}
if has_login:
header['token'] = setting.read_config('pocket48', 'token')
Expand All @@ -54,15 +67,21 @@ def set_token() -> bool:


def get_messages() -> list:
owner_id = int(setting.read_config('pocket48', 'ownerid'))
room_id = int(setting.read_config('pocket48', 'roomid'))
return _deal_messages(owner_id, room_id)


def _deal_messages(owner_id: int, room_id: int) -> list:
"""返回口袋48主页面的信息
### Result:
``message_list``: 格式化的口袋消息列表.
"""
# 发送请求获取消息列表
url = "https://pocketapi.48.cn/im/api/v1/chatroom/msg/list/homeowner"
data = {
'ownerId': int(setting.read_config('pocket48', 'ownerid')),
'roomId': int(setting.read_config('pocket48', 'roomid'))
'ownerId': owner_id,
'roomId': room_id
}
response = send_request(url, data, True)
if response['status'] >= 401000:
Expand Down Expand Up @@ -114,12 +133,12 @@ def get_messages() -> list:
elif message_ext['messageType'] == 'FLIPCARD':
message = (
f'{message_ext["user"]["nickName"]}: '
f'{message_ext["answer"]}\n'
f'{message_ext["text"]}\n'
f'问题内容: {message_ext["question"]}\n'
f'{message_time}'
)
logger.info('收到一条翻牌消息: %s, 问题: %s',
message_ext["answer"],
message_ext["text"],
message_ext["question"])
elif message_ext['messageType'] == 'LIVEPUSH':
idol_nickname = setting.read_config("system", "nickname")
Expand Down
67 changes: 12 additions & 55 deletions setting.conf
Original file line number Diff line number Diff line change
@@ -1,101 +1,58 @@
[system]
# 偶像名称,初始化时可能会用到
idolname = 苏杉杉
# 偶像昵称,在信息播报时可能会用到
nickname = 杉杉
idolgroup = bej
# 数据库保存位置,当前项目使用SQLite3
database = Database.db
# 日志文件保存位置
log = log.log
# 补档和偶像介绍弹出的对应文字
# 为了防止发言太长,采用$字符进行分割,拆成多段发送
intro = intro.txt

[QQgroup]
# 配置用于播报集资信息等的QQ群
id = 367765646,609913800,1029856946
# 用于测试的QQ群,集资信息不会在里面播报
dev_id = 1025039615
# 新人加群时的欢迎词
welcome = 欢迎聚聚加入苏杉杉的应援群!
# 关键词禁言,用英文逗号分割
shutword =

[fund]
# 集资播报时间间隔,单位是秒,为0表示不播报
interval = 20
# 自动检测集资项目的时间间隔,单位是秒,为0表示不检测
autofind = 1800
# 播报集资信息的模版,如果有有关其他信息的需求,请自行更改fund/__init__.py
# title: 项目标题
# nickname: 集资用户的昵称
# amount: 该笔订单的金额
# user_amount: 该用户在当前项目的集资总数
# ranking: 排名
# amount_distance: 和前一名的金额差距(第一名的这个数值被设定为0)
# total_amount: 项目总的集资额
# average_amount: 项目平均集资额
# time_to_end: 项目的剩余时间,大于一天的会显示XX天,小于一天的会显示XX.XX小时
# link: 项目的链接
pattern = 感谢{nickname}在项目{title}中集资{amount}元,共{user_amount}元。
排名第{ranking},目前与前一名还差{amount_distance}元。
本项目目前集资{total_amount}元,有{supporter_num}人参加,人均{average_amount}元。
当前剩余时间:{time_to_end},神秘地址: {link}
排名第{ranking},目前与前一名还差{amount_distance}元。
本项目目前集资{total_amount}元,有{supporter_num}人参加,人均{average_amount}元。
当前剩余时间:{time_to_end},神秘地址: {link}

[card]
# 抽卡阈值, 若为0则表示关闭抽卡功能
threshold = 4.33
# 不同稀有度卡牌的名称
rarity = 普通,精良,史诗,传说
# 播报抽卡信息的模版,如果有有关其他信息的需求,请自行更改fund/__init__.py
# nickname: 用户的昵称
# rarity: 卡牌的稀有度
# name: 卡牌的名字
# context: 卡牌的文本
# user_amount: 该用户在当前稀有度下收集到的卡牌数
# total_amount: 当前稀有度总的卡牌数
# image: CQ码格式的图片
pattern = {nickname}抽取到了一张{rarity}卡:{name}。
{context}
当前{rarity}卡牌收集进度:{user_amount}/{total_amount}。
{image}
{context}
当前{rarity}卡牌收集进度:{user_amount}/{total_amount}。
{image}

[modian]
# 应援会的摩点id,用于自动搜索项目
userid = 1094709

[taoba]
# 桃叭的用户名和密码以及token
# 登录之后可以查看每个项目的详细订单信息,并且可以自动搜索添加项目
username = username
password = password
signature = none

[pk]
# PK播报时间间隔,单位是秒
interval = 1800
# PK缓存文件存放文件夹,详细可以看PK配置篇
cache_folder = pkcache
# PK配置文件存放文件夹,详细可以看PK配置篇
config_folder = pkconfig
# PK项目的列表
pk_lists = sample.json

[pocket48]
# 口袋48消息播报时间间隔,单位是秒,为0表示不播报
interval = 20
# 口袋48房间的roomId和ownerId,可以手动设置,也可以通过init.py自动设置
roomid = 67362271
ownerid = 327597
# 口袋48的用户名,密码和token
# 如果要获取消息,必须有一个账号才可以,但是对具体的账号没有要求
username = 13333333333
password = password
token = none
# 最后接手消息的时间,初次可以设置为0
message_time = 0

[weibo]
# 微博消息播报时间间隔,单位是秒,为0表示不播报,建议稍长一点避免被微博屏蔽
interval = 90
# 小偶像的微博用户id
id = 5886998602
# 最后一条微博的id,可以自动生成
last_weibo = 4485435436742106
last_weibo = 4511089939682947

0 comments on commit c1e6273

Please sign in to comment.