批量下载音视频
背景:
剪辑音视频时,需下载源文件进行处理,单源文件仅提供了Excel形式的网络链接,需进行下载使用。
使用工具:
本想使用批量下载工具Motrix,提供链接直接进行下载。后发现下载后,文件名为乱码,后续剪辑寻找文件耗费时间。
后经由AI确认,使用Python代码,进行根据Excel文件进行下载,并根据每行名称进行下载文件重命名。
代码:
import pandas as pd
import requests
import os
import time
# ================= 配置区域 =================
# 1. Excel 文件名 (确保文件在旁边)
EXCEL_FILE = "list.xlsx"
# 2. Excel 里的列名 (一定要和 Excel 第一行对应!)
COL_NAME = "名字" # 你的 A 列标题
COL_LINK = "链接" # 你的 B 列标题
# 3. 保存文件的文件夹
SAVE_FOLDER = "批量下载结果"
# 4. 伪装头 (防封必加)
HEADERS = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36"
}
# ================= 代码逻辑 =================
def download_from_excel():
# 1. 检查 Excel 是否存在
if not os.path.exists(EXCEL_FILE):
print(f"❌ 找不到文件: {EXCEL_FILE}")
print("请确保 Excel 文件和代码在同一个文件夹里!")
return
# 2. 创建下载文件夹
if not os.path.exists(SAVE_FOLDER):
os.makedirs(SAVE_FOLDER)
print("正在读取 Excel...")
# 3. 读取 Excel 数据
try:
df = pd.read_excel(EXCEL_FILE)
except Exception as e:
print(f"❌ 读取 Excel 失败: {e}")
return
print(f"读取成功!准备下载 {len(df)} 个文件...\n")
# 4. 循环每一行进行下载
# index 是行号,row 是这一行的数据
for index, row in df.iterrows():
name = str(row[COL_NAME]) # 获取名字
url = str(row[COL_LINK]) # 获取链接
# 简单的文件名清洗(去掉非法字符)
clean_name = "".join(c for c in name if c.isalnum() or c in (' ','.','_','-')).rstrip()
# 自动判断后缀,如果是mp3链接就存为mp3
if url.endswith(".mp3"):
filename = clean_name + ".mp3"
elif url.endswith(".mp4"):
filename = clean_name + ".mp4"
else:
# 如果链接里看不出后缀,就默认给一个
filename = clean_name + ".mp3"
file_path = os.path.join(SAVE_FOLDER, filename)
print(f"[{index+1}/{len(df)}] 正在下载: {filename}")
# 如果链接是空的(Excel里有空行),跳过
if not url or url == "nan":
print(" -> 跳过:链接为空")
continue
try:
res = requests.get(url, headers=HEADERS, stream=True, timeout=30)
if res.status_code == 200:
with open(file_path, "wb") as f:
for chunk in res.iter_content(chunk_size=1024):
f.write(chunk)
print(" -> ✅ 下载成功")
else:
print(f" -> ❌ 失败: 服务器返回 {res.status_code}")
except Exception as e:
print(f" -> ❌ 出错: {e}")
# 稍微歇一下,防止太快
# time.sleep(0.5)
if __name__ == "__main__":
download_from_excel()
input("\n全部处理完毕,按回车退出...")
使用步骤:
创建一个文件夹,其内放入Excel文件,分为两列,A列:名字、B列:链接。重命名为:list.xlsx,也可以修改python代码中相应名称。 Windows设备,在该文件夹内,创建一个文本文档,粘贴上述代码,后缀保存为[.py],双击运行即可。