Merge remote-tracking branch 'origin/main'

# Conflicts:
#	.idea/Bangumi_Auto_Rename.iml
#	.idea/misc.xml
#	auto_bangumi/core/download_client.py
#	requirements.txt
This commit is contained in:
EstrellaXD
2022-06-08 09:24:52 +08:00
8 changed files with 115 additions and 18 deletions

2
.gitignore vendored
View File

@@ -163,5 +163,5 @@ cython_debug/
/auto_bangumi/const_dev.py
/config/bangumi.json
/auto_bangumi/tester.py
/source/names.txt
/resource/names.txt

View File

@@ -31,6 +31,7 @@ def load_data_file():
bangumi_data["bangumi_info"] = []
bangumi_data["first_run"] = True
bangumi_data["rss_link"] = settings.rss_link
logger.info("Rebuilding data information...")
return bangumi_data

View File

@@ -33,7 +33,7 @@ class FullSeasonGet:
season = ""
else:
season = self.season
search_str = re.sub(r"[& ]", "+",
search_str = re.sub(r"[\W_]", "+",
f"{self.group} {self.bangumi_name} {season} {self.subtitle} {self.source} {self.dpi}")
season = requests.get(
f"https://mikanani.me/RSS/Search?searchstr={search_str}"

View File

@@ -63,7 +63,18 @@ class QbDownloader:
self._client.rss_remove_item(item_path)
except Conflict409Error as e:
logger.exception(e)
logger.info("Add new RSS")
raise ConflictError()
def rss_set_rule(self, rule_name, rule_def):
self._client.rss_set_rule(rule_name, rule_def)
if __name__ == "__main__":
try:
from const_dev import DEV_SETTINGS
except ModuleNotFoundError:
logger.debug("Please copy `const_dev.py` to `const_dev.py` to use custom settings")
settings.init(DEV_SETTINGS)
client = QbDownloader(settings.host_ip, settings.user_name, settings.password)
client.rss_remove_item("Mikan_RSS")

View File

@@ -7,3 +7,8 @@
- 检查宿主机器是否可以 `ping` 通蜜柑计划
- 更改宿主机器或者容器的 `DNS` 选项设置
- 订阅番组太多mikanani 无法快速解析,推荐一个番组只订阅一个字幕组。
## 下载错误番剧,重命名失败
- 目前不支持合集剧场版OVA 等订阅。
- 检查订阅是否错误。
- 订阅时请遵循:一个番剧订阅一个字幕组的一种语言

View File

@@ -168,22 +168,22 @@ docker run -d \
2022-06-05 16:49:32 INFO: Finished rename process.
```
## `AutoBangumi` 环境变量说明
| 环境变量 | 作用 | 参数 |
| ------------------------ |----------------------------|------------------|
| `TZ` | 时区 | `Asia/Shanghai` |
| `AB_INTERVAL_TIME` | 间隔时间 | `1800` |
| `AB_DOWNLOADER_HOST` | qBittorrent 的地址和端口号 | `localhost:8080` |
| `AB_DOWNLOADER_USERNAME` | qBittorrent 的用户名 | `admin` |
| `AB_DOWNLOADER_PASSWORD` | qBittorrent 的密码 | `adminadmin` |
| `AB_METHOD` | 重命名方法 | `pn` |
| `AB_GROUP_TAG` | 是否在下载规则中添加组名 | `False` |
| `AB_DOWNLOAD_PATH` | qBittorrent 中的下载路径 | 必填项 |
| `AB_RSS` | RSS 订阅地址 | 必填项 |
| `AB_NOT_CONTAIN` | 输入想要过滤的元素 | `720` |
| `AB_DEBUG_MODE` | 调试模式 | `False` |
| `AB_EP_COMPLETE` | 历史番剧下载 | `False` |
| `AB_SEASON_ONE`| 开启后如果没有 Season 信息自动添加为 S01 | `True` |
| `AB_REMOVE_BAD_BT`| 碰到无法重命名的合集等,自动删除种子 | `False` |
| 环境变量 | 作用 | 参数 |
| ------------------------ |---------------------------------------|------------------|
| `TZ` | 时区 | `Asia/Shanghai` |
| `AB_INTERVAL_TIME` | 间隔时间 | `1800` |
| `AB_DOWNLOADER_HOST` | qBittorrent 的地址和端口号 | `localhost:8080` |
| `AB_DOWNLOADER_USERNAME` | qBittorrent 的用户名 | `admin` |
| `AB_DOWNLOADER_PASSWORD` | qBittorrent 的密码 | `adminadmin` |
| `AB_METHOD` | 重命名方法 `normal` 保留字幕组信息, `pn` 为纯净模式 | `pn` |
| `AB_GROUP_TAG` | 是否在下载规则中添加组名 | `False` |
| `AB_DOWNLOAD_PATH` | qBittorrent 中的下载路径 | 必填项 |
| `AB_RSS` | RSS 订阅地址 | 必填项 |
| `AB_NOT_CONTAIN` | 输入想要过滤的元素 | `720` |
| `AB_DEBUG_MODE` | 调试模式 | `False` |
| `AB_EP_COMPLETE` | 历史番剧下载 | `False` |
| `AB_SEASON_ONE`| 开启后如果没有 Season 信息自动添加为 S01 | `True` |
| `AB_REMOVE_BAD_BT`| 碰到无法重命名的合集等,自动删除种子 | `False` |
# FAQ
@@ -199,6 +199,10 @@ docker run -d \
- 设置 >> RSS >> 启用获取 RSS 订阅
- Options >> RSS >> Enable fetching RSS feeds
- 检查 qb 配置,看是否有权限新建文件夹
- 没有自动重命名怎么办:
- 首次运行会等待十分钟等待下载完成才会开始重命名。
- 如果 `Finished checking` 后有文件个数,但是无法重命名请重新部署。
- `rename failed` 通常是碰到带有文件夹的合集,目前并不支持这类重命名
- [错误排查](https://github.com/EstrellaXD/Auto_Bangumi/blob/main/docs/常见错误解决.md)
**出现错误请先检查文档再提问!!!!!!**

76
resource/anidb.py Normal file
View File

@@ -0,0 +1,76 @@
#! /usr/bin/python
import re
import requests
from bs4 import BeautifulSoup
from utils import json_config
header = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) ApplewebKit/537.36 (KHtml, like Gecko) Chrome/80.0.3987.163 Safari/537.36',
}
def get_html(url):
requests.adapters.DEFAULT_RETRIES = 5 # 增加重连次数
s = requests.session()
s.keep_alive = False # 关闭多余连接
html = s.get(url=url, headers=header).text
print("get html success")
return html
def get_list(year, season):
season = ["spring", "summer", "autumn", "winter"][season - 1]
url = "https://anidb.net/anime/season/%s/%s/" % (year, season)
html = get_html(url)
ids = re.findall("<a href=\"/anime/(\d+)\"><picture>", html)
return ids
def get_title(id):
url = "https://anidb.net/anime/%s" % id
soup = BeautifulSoup(get_html(url), "lxml")
titles = soup.find("div", id="tab_2_pane")
g = titles.findAll("th")
v = titles.findAll("td")
t_dic = {
"id": id,
"main": None,
"verified": None,
"en": None,
"chs": None,
"cht": None,
"jp": None,
"synonym": None,
"kana": None
}
for i in range(0, len(g)):
if g[i].text == "Main Title":
t_dic["main"] = re.sub("\(a\d+\)", "", v[i].text).strip("\n\t")
elif g[i].text == "Official Title":
if re.search("verified", str(v[i])):
t_dic["verified"] = v[i].find("label").text
if re.search("language: english", str(v[i])):
t_dic["en"] = v[i].find("label").text
elif re.search("span>zh-Hant", str(v[i])):
t_dic["cht"] = v[i].find("label").text
elif re.search("span>zh-Hans", str(v[i])):
t_dic["chs"] = v[i].find("label").text
elif re.search("language: japanese", str(v[i])):
t_dic["jp"] = v[i].find("label").text
elif g[i].text == "Synonym":
t_dic["synonym"] = v[i].text
elif g[i].text == "Kana":
t_dic["kana"] = v[i].text
return t_dic
if __name__ == "__main__":
print("start")
# 年份,季度
id_list = (get_list(2022, 1))
for i in id_list:
url = f"http://api.anidb.net:9001/httpapi?request=anime&client=autobangumi&clientver=1&protover=1&aid={i}"
req = requests.get(url)
soup = BeautifulSoup(req.text, "xml")
titles = soup.find("titles")["official"]
for item in titles:
print(item)