- 作者:Evyde(ForeverOpp)
- 实现校内通知的自动获取
- 将通知内容及标题通过ServerChan推送至微信或SMTP发送至邮箱或通过Bark推送或本地输出。
- 对于附件,则附上链接
- 缓存更新时,会出现错误,具体是更新完列表之后,不知道怎么回事会出现列表中的列表,我设计的时候默认是列表套字典的,所以访问会出现问题。
- 爬虫
- HTTP GET POST
- 文本处理
- lxml
- requests
- time
- datetime
- operator
- functools
- urllib
- smtplib
-
Class
GetAnnounce
负责获取通知内容GetAnnounce.__init__(text, logger)
,初始化方法,可传入文本型通知域名/IP,该方法会尝试连接传入地址(传入""或" "则默认oa.jlu.edu.cn),若无法连接则抛出NetworkError异常,logger
则为通知类引用。GetAnnounce.createListCache
,创建标题列表缓存,该页面缓存不会自动更新,需要通过GetAnnounce.freshCache()
方法进行刷新,同样会抛出NetworkError异常。GetAnnounce.freshCache()
,刷新页面和标题列表缓存,同样会抛出NetworkError异常。。GetAnnounce.get()
,返回缓存。GetAnnounce.getContentCache(target)
,按照指定的列表缓存获取内容,返回一个列表。GetAnnounce.createContentCache()
,创建内容缓存,该方法仅第一次创建缓存时使用,更新缓存时不采用。
-
Class
ProcessText
负责处理发送的消息ProcessText.__init__(text)
,初始化方法,传入一个字典。ProcessText.getNormalText()
,返回一个只有标题和完整内容的字典,没有作者等信息。ProcessText.getFullText()
,返回一个加入作者等信息的字典。ProcessText.getSimpleText()
,返回一个只有标题、作者和30字摘要的字典。ProcessText.getFullTextMD()
,返回一个加入作者等信息,且少量内容使用Markdown格式化后的字典。
-
Class
MessageSender
负责消息发送该类可扩展,故设置了一个
__init__(method)
方法用以选择发送方法,支持smtp邮件发送,ServerChan微信推送,控制台输出和iOS端的软件Bark推送,关于ServerChan的介绍,请移步ServerChan,关于Bark的介绍,请移步Bark。MessageSender.__init__(method)
,该方法传入一个method
文本,可从serverChan
、smtp
、console
、Bark
中选一个。MessageSender.config(config)
,该方法传入一个config
字典,以下是两种方式的配置字典格式:-
ServerChan
格式:
{"SCKEY":"你的SCKEY"}
。 -
SMTP
格式:
{"host":"主机IP或域名","port":"端口,一般是25","fromAddr":"用以发送的邮箱","toAddr":"接收邮箱","fromName":"发送者名称","toName":"接收者名称", "user": "用户名", "pwd": "密码"}
。 -
Console 无需配置,config方法直接return
-
Bark 格式:
{"apiKey": "你的APIKEY"}
-
MessageSender.send(msg)
,发送消息,发送失败会在控制台输出日志,不会抛出异常。MessageSender.getMethod()
,返回发送的方法。
-
Class
ServerChan
负责向ServerChan发送消息。ServerChan.__init__(text)
,传入SCKEY。ServerChan.send(msg)
,发送消息(支持Markdown格式),直接返回发送状态。
-
Class
SMTPSender
负责通过SMTP发送消息。SMTPSender.__init__(list)
,传入上述配置字典。SMTPSender.send(msg)
,发送消息,直接返回发送成功的文本。
-
Class
ConsoleSender
负责通过控制台输出消息。ConsoleSender.send(msg)
,发送消息,直接返回发送成功的文本。
-
Class
BarkSender
负责通过Bark发送消息。BarkSender.__init__(apikey)
,传入APIKEY。BarkSender.send(msg)
,发送消息,直接返回发送状态。
-
Class
Logger
负责生成日志。该类中,有三大消息类型,分别是Error、Notice、Info。 同时,如果需要关闭日志,请将isClose设置为True。另外,可以选择控制台或者文件输出。
Logger.__init__()
,初始化,可扩展。Logger.error(text)
,向日志中写入一条内容为text的Error类型消息。Logger.notice(text)
,向日志中写入一条内容为text的Notice类型消息。Logger.info(text)
,向日志中写入一条内容为text的Info类型消息。Logger.__write(text)
,向日志中写入消息,无需用户自行调用。