- 作者: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),向日志中写入消息,无需用户自行调用。