# 方案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`字典追加多行即可 - 可以先浏览器打开封面链接确认图片正常,再填入脚本,减少失败 要不要我再给你写一个**一键批量修改权限