PyNGA Package

High-level API

PyNGA

class pynga.NGA(authentication=None, max_retries=5, timeout=5, max_workers=1)[source]

NGA 基础类.

Parameters:
  • authentication (dict) – 登陆信息, 支持的 key 包括 uid, username, cid. 其中 cid 为必须的 key, uid 和 username 至少需要指定一个.
  • max_retries (int) – 最大重试次数. 默认: 5.
  • timeout (int) – 超时时间, 以秒为单位. 默认: 5.
  • max_workers (int) – 并行度. 默认: 1.
Forum[source]

定义一个版面.

Parameters:
  • fid (int) – 版面的 FID.
  • page_limit (int) – 最大页面数量. 默认: 20.
Returns:

定义的版面对象.

Return type:

Forum

Post[source]

定义一个回复.

Parameters:pid (int) – 回复的 PID.
Returns:定义的回复对象.
Return type:Post
SubForum[source]

定义一个合集.

Parameters:stid (int) – 合集的 STID.
Returns:定义的合集对象.
Return type:SubForum
Thread[source]

定义一个帖子.

Parameters:tid (int) – 帖子的 TID.
Returns:定义的帖子对象.
Return type:Thread
User[source]

定义一个 NGA 用户.

用户的 uid 和 username 至少需要指定一个, 否则是匿名用户.

Parameters:
  • uid (int) – 用户的 UID.
  • username (str) – 用户的用户名. 默认: None.
Returns:

定义的用户对象.

Return type:

User

reset_cache()[source]

Forum

class pynga.forum.Forum(fid, session=None, page_limit=20)[source]

NGA 版面基础类.

Parameters:
  • fid (int) – 版面 FID.
  • session (Session) – 获取数据所使用的 session.
  • page_limit (int) – 最大页面数量. 默认: 20.
page_limit

int – 最大页面数量.

threads

获取当前版面的帖子, 按照发帖时间降序排列.

Returns:当前版面的帖子. 最多不超过 page_limit.
Return type:OrderedDict(tid, Thread)
class pynga.forum.SubForum(stid, session=None, page_limit=20)[source]

NGA 合集基础类.

Parameters:
  • fid (int) – 版面 FID.
  • session (Session) – 获取数据所使用的 session.
  • page_limit (int) – 最大页面数量. 默认: 20.
page_limit

int – 最大页面数量.

threads

获取当前合集的帖子, 按照发帖时间降序排列.

Returns:当前版面的帖子. 最多不超过 page_limit.
Return type:OrderedDict(tid, Thread)

Thread

class pynga.thread.Thread(tid, session=None, page_limit=inf)[source]

NGA 帖子基础类.

Parameters:
  • tid (int) – 帖子的 TID.
  • session (Session) – 获取数据所使用的 session.
  • page_limit (int) – 最大页面数量. 默认: 无限.
alterinfo

获取帖子的修改/加分/处罚信息.

Returns:该帖子的所有修改/加分/处罚信息.
Return type:list of dict
attachments

获取帖子的附件.

Returns:
Return type:list of dict
content

获取帖子的内容.

注意: 只有主楼的内容会被返回.

Return type:str
forum

获取帖子的所在版面.

Returns:
Return type:Forum
move(target_forum, pm=True, pm_message='', push=True)[source]

移动帖子.

注意: 需要 Moderator 权限.

Parameters:
  • target_forum (Forum) – 帖子将要移动的目标版面.
  • pm (bool) – 是否 PM. 默认: True.
  • pm_message (str) – PM 消息内容. 默认: 空字符串.
  • push (bool) – 是否提前帖子. 默认: True.
Returns:

服务器返回的 JSON, 以 dict 的形式

Return type:

dict.

n_pages

获取帖子的总页数.

Return type:int
posts

获取帖子的回复.

注意: 不包括主楼.

Returns:帖子的回复.
Return type:OrderedDict(帖子楼层, Post)
subject

获取帖子的标题.

Return type:str
user

获取帖子的发帖人.

Return type:User

Post

class pynga.post.Post(pid=None, session=None)[source]

NGA 回复基础类.

如果一个回复不存在 PID, 则定义其为未知回复(例如: 贴条). 其 PID 定义为 None

Parameters:
  • pid (int) – 回复的 PID. 默认: None.
  • session (Session) – 获取数据所使用的 session.
add_point(value, info='', options=None)[source]

回复加分.

Parameters:
  • value (int) – 加分声望值.
  • info (str) – 加分说明. 默认: 空字符串.
  • options (list of str) – 加分相关选项. 可选项包括: 增加/扣除金钱, 增加威望, 给作者发送PM, 主题加入精华区. 默认: None
alterinfo

获取回复的修改/加分/处罚信息.

Returns:该回复的所有修改/加分/处罚信息.
Return type:list of dict
attachments

获取回复的附件.

Returns:
Return type:list of dict
content

获取回复的内容.

Return type:str
fid

获取回复对应的帖子的版面的 FID.

Return type:int
subject

获取回复的标题.

Return type:str
tid

获取回复对应的帖子的 TID.

Return type:int
user

获取回复的回复人.

Return type:User

User

class pynga.user.User(uid=None, username=None, session=None)[source]

NGA 用户基础类.

支持根据 UID 或用户名来指定用户. 如果二者都没有进行指定, 则定义为匿名用户. 匿名用户的 UID 和用户名定义为 None, 反之亦然.

Parameters:
  • uid (int) – 用户的 UID. 默认: None.
  • username (str) – 用户的用户名. 默认: None.
  • session (Session) – 获取数据所使用的 session.
buy_item(item_id)[source]

从系统商店购买物品.

Parameters:item_id (int.) – 购买的物品 ID.
Returns:服务器返回的 JSON, 以 dict 的形式.
Return type:dict
get_admin_log(type=None)[source]

获取当前用户的操作记录.

Parameters:type (str) – 操作记录类型名称.
Yields:AdminLog. – 操作记录对象.
is_anonymous

获取用户的匿名状态.

Return type:bool
register_date

获取用户的注册日期及时间.

Return type:datetime
sign

获取用户的签名.

也可以通过 setter 来设置签名.

Return type:str
undo_admin_log(admin_log)[source]

撤销操作记录.

Parameters:admin_log (AdminLog) – 需要撤销的操作记录.
use_item(inventory_id, user)[source]

使用物品.

Parameters:
  • inventory_id (int) – 仓库内物品 ID.
  • user (User) – 使用物品的目标用户对象.

Low-level API

Session

class pynga.session.Session(authentication=None, max_retries=5, timeout=5, max_workers=1)[source]

NGA Session 基础类.

Parameters:
  • authentication (dict) – 登陆信息, 支持的 key 包括 uid, username, cid. 其中 cid 为必须的 key, uid 和 username 至少需要指定一个.
  • max_retries (int) – 最大重试次数. 默认: 5.
  • timeout (int) – 超时时间, 以秒为单位. 默认: 5.
  • max_workers (int) – 并行度. 默认: 1.
get_html(*args, **kwargs)[source]

发送 GET 请求并获取 HTML 返回.

Return type:BeautifulSoup
get_json(*args, **kwargs)[source]

发送 GET 请求并获取 JSON 返回.

Return type:dict
get_text(*args, **kwargs)[source]

发送 GET 请求并获取纯文本返回.

Return type:str
post_read_json(*args, **kwargs)[source]

发送 POST 请求并获取 JSON 返回.

Return type:dict

AdminLog

class pynga.user.AdminLog(data, admin_log_type_mapper=None)[source]

NGA 操作记录基础类.

Parameters:
  • data (str or dict) – 操作记录 JSON, 以 str 或 dict 的形式.
  • admin_log_type_mapper (dict) – 操作记录映射表, 一般由服务器提供.
log_id

操作记录 ID.

Return type:int
message

操作信息.

Return type:str
source_uid

操作人 UID.

Return type:int
target_uid

被操作人 UID.

Return type:int
tid

操作记录对应的 TID.

Return type:int
time

操作时间.

Return type:datetime
type

操作记录类型.

Return type:str