Files
bangumi-mail-notification/app.py
范胜发 4092217a8f test
2024-01-09 14:21:07 +08:00

108 lines
2.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import sys
import re
from urllib.parse import quote
import bgmTVApi
import mail
from generateMailContent import generate
from loadYaml import loadYaml
import toRss
# 获取 qBittorrent 传递的参数
name = sys.argv[1]
path = sys.argv[2]
# 根据路径参数获取分类与番剧名称
category = path.split('/')[2]
subject_name = quote(path.split('/')[3], 'utf-8')
# 番剧信息
subjectInfo = {}
isGetSubjectInfo = False
# 剧集信息
episodeInfo = {}
isGetEpisodeInfo = False
# 错误信息 用于发生请求或者其他错误时,可以通过邮件告知到管理员
errorMsgs = []
# 读取配置文件
config = loadYaml('config.yaml')
mediaUrl = config.get('mediaUrl')
mediaIcon = config.get('mediaIcon')
# 是否是番剧分类用于判断是否能够在bgmtv中获取信息
isBangumi = category == config.get('bangumiCategory')
# 从标题获取集号的规则
rules = [
r"(.*) - (\d{1,4}|\d{1,4}\.\d{1,2})(?:v\d{1,2})?(?: )?(?:END)?(.*)",
r"(.*)[\[ E](\d{1,3}|\d{1,3}\.\d{1,2})(?:v\d{1,2})?(?: )?(?:END)?[\] ](.*)",
r"(.*)\[第(\d*\.*\d*)话(?:END)?\](.*)",
r"(.*)\[第(\d*\.*\d*)話(?:END)?\](.*)",
r"(.*)第(\d*\.*\d*)话(?:END)?(.*)",
r"(.*)第(\d*\.*\d*)話(?:END)?(.*)",
]
if isBangumi:
# 获取集号
episodeNo = 1
for rule in rules:
match_obj = re.match(rule, name, re.I)
if match_obj is not None:
episodeNo = match_obj.group(2)
# 获取番剧信息
subjectRes = bgmTVApi.fetchSubjectInfo(subject_name)
subjectInfo = subjectRes['data']
isGetSubjectInfo = subjectRes['status']
if not isGetSubjectInfo:
errorMsgs.append(subjectRes['message'])
# 获取剧集信息
episodeRes = bgmTVApi.fetchEpisodeInfo(subjectInfo.get('id'), episodeNo)
episodeInfo = episodeRes['data']
isGetEpisodeInfo = episodeRes['status']
if not isGetEpisodeInfo:
errorMsgs.append(episodeRes['message'])
# 确认邮件标题
mailSubject = ''
if isGetSubjectInfo:
mailSubject = subjectInfo.get('name_cn') + ' 更新啦!'
else:
mailSubject = name + ' 下载完成'
# 生成邮件内容
mailContent = ''
if isGetSubjectInfo & isGetEpisodeInfo:
data = {
'title': mailSubject,
'name': episodeInfo.get('name_cn'),
'image': subjectInfo.get('images').get('large'),
'summary': subjectInfo.get('summary'),
'desc': episodeInfo.get('desc'),
'mediaUrl': mediaUrl,
'mediaIcon': mediaIcon
}
mailContent = generate('./template/email1.html', data)
elif len(errorMsgs) > 0:
data = {
'title': mailSubject,
'name': name,
'path': path,
'errorMsgs': errorMsgs
}
mailContent = generate('./template/email2.html', data)
else:
data = {
'title': mailSubject,
'name': name,
'path': path
}
mailContent = generate('./template/email3.html', data)
mail.send(mailSubject, mailContent, isBangumi)
toRss.send(mailSubject, mailContent, mediaUrl)