commit all

This commit is contained in:
CrazyJasonwell
2026-10-09 22:06:40 +08:00
commit e97be9ac8c
2062 changed files with 2438686 additions and 0 deletions

View File

@@ -0,0 +1,93 @@
# 方案2:批量脚本下载喜马拉雅专辑封面,自动生成 cover.jpg
> 适用场景:批量处理喜马拉雅英语专辑,ABS扫描文件夹自动读取`cover.jpg`,彻底避0开ABS插件`Invalid content type`的bug。 脚本:Python,单文件,支持批量,自动保存为`cover.jpg`,配合你的ABS目录结构。 前置:安装Python,需要`requests`库。
## 脚本 `xm_cover_download.py`
```
import requests
import os
# ========== 配置区,修改这里 ==========
# ABS有声书根目录,你的专辑文件夹都放在这个路径
ROOT_DIR = "/mnt/abs_audio"
# 专辑列表:【专辑文件夹名称】:【喜马拉雅封面原图url】
album_list = {
"新概念英语第一册": "http://imagev2.xmcdn.com/storages/531f-audiofreehighqps/0F/0B/CMCoOSYEhMILAAGNCACxBHag",
# 在这里继续增加更多专辑,格式复制上面一行
# "专辑文件夹名": "封面url",
}
# ======================================
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
}
def download_cover(folder_name, img_url):
folder_path = os.path.join(ROOT_DIR, folder_name)
os.makedirs(folder_path, exist_ok=True)
cover_path = os.path.join(folder_path, "cover.jpg")
try:
resp = requests.get(img_url, headers=headers, timeout=15)
resp.raise_for_status()
with open(cover_path, "wb") as f:
f.write(resp.content)
print(f"✅ {folder_name} 封面下载成功 -> {cover_path}")
except Exception as e:
print(f"❌ {folder_name} 下载失败: {str(e)}")
if __name__ == "__main__":
for album_name, url in album_list.items():
download_cover(album_name, url)
print("\n全部任务执行完毕,请去ABS资料库扫描!")
```
## 使用步骤
1. 安装依赖
```
pip install requests
```
2. 修改脚本配置区
- `ROOT_DIR`:改成你宿主机存放ABS有声书的目录
- `album_list`:添加专辑文件夹名,以及对应的喜马拉雅封面链接
> ⚠️ 文件夹名称**必须**和ABS里面的专辑目录完全一致,脚本会在这个目录生成`cover.jpg`
3. 运行脚本
```
python xm_cover_download.py
```
4. 回到 Audiobookshelf 网页端 → 资料库 → **扫描库** ABS会自动读取每个专辑文件夹内的`cover.jpg`作为封面,不再调用插件远程下载图片,不会报那个Content-Type错误。
## 进阶:如果想自动从喜马拉雅专辑页面提取封面链接(可选)
如果你不想手动复制封面url,可以加爬虫解析专辑页面提取图片地址,需要的话我给你扩展版本。
## ABS重要注意事项
1. 权限:docker的ABS容器,`cover.jpg`文件权限建议 `chmod 644 cover.jpg`,`chown 你的uid:gid cover.jpg`,否则ABS读不到本地封面
```
# 示例,替换为你的专辑目录
chown -R 1000:1000 /mnt/abs_audio
```
2. 生效逻辑:**本地cover.jpg优先级高于元数据插件远程封面**,扫描后直接加载,不会再去拉取xmcdn图片。
3. 如果你是用Alist挂载网盘存放音频:
> 部分网盘不支持直接上传文件到挂载目录,这种情况脚本需要运行在Alist宿主机,保存到本地再上传网盘对应专辑文件夹。
## 批量操作小技巧
- 一次性添加几十条专辑,直接在`album_list`字典追加多行即可
- 可以先浏览器打开封面链接确认图片正常,再填入脚本,减少失败
要不要我再给你写一个**一键批量修改权限