这个问题来自这里但不同的是
好的,我有这些网址
https://www.ppppppppppp.com/it/yyyy/911-omicidio-al-telefono/stagione-1-appesa-a-un-filo
https://www.ppppppppppp.com/it/yyyy/avamposti-dispacci-dal-confine/stagione-1-cerignola
https://www.ppppppppppp.com/it/yyyy/belle-da-morire/stagione-1-bellezza-stalking
我尝试用这些名称创建这些文件夹
911-omicidio-al-telefono
avamposti-dispacci-dal-confine
belle-da-morire
从 url 中提取名称
例如我想要 url 中的文件
https://www.ppppppppppp.com/it/yyyy/911-omicidio-al-telefono/stagione-1-appesa-a-un-filo
直接下载从url中提取的文件夹名称
911-omicidio-al-telefono
但这似乎有问题,因为没有提取文件夹名称,并且每个文件都是在其文件夹URL名称之外下载的
为了解决这个问题我尝试这样做:
script.sh
使用此代码创建一个
#!/bin/bash
url=$1
folder_name=$(echo "$url" | sed -E 's/^https:\/\/www\.ppppppppppp\.com\/it\/video\/(.+)\/.*$/\1/')
mkdir -p "$folder_name"
file_path=$(echo "$url" | sed -E "s/^(.+)\.fdash.*$/\1\.mp4/")
ffmpeg -i "$file_path.fdash-video=6157520.mp4" -i "$file_path.fdash-audio_eng=160000.m4a" -c copy "$file_path"
mv "$file_path" "$folder_name/$(echo $file_path | cut -f1 -d '.').mp4"
然后从 bash 终端我这样称呼它
yt-dlp --referer "https://www.ppppppppppp.com/" --add-header "Cookie:COOKIE" --batch-file links_da_scaricare.txt -o '%(title)s.%(ext)s' --exec "/home/appbox/Downloads/dplay/script.sh {}"
问题是什么?
所有文件都下载到同一个文件夹中,而不是下载到其文件夹中,换句话说,不会下载到名称从下载文件的 url 中提取的文件夹中
答案1
您面临的问题是由文件的保存方式引起的。脚本中的 ffmpeg 命令正在当前工作目录中创建文件,而不是在“$folder_name”指定的文件夹中。
要解决此问题,您可以更改 ffmpeg 命令以使用 -y 选项指定输出目录,如下所示:
ffmpeg -i "$file_path.fdash-video=6157520.mp4" -i "$file_path.fdash-audio_eng=160000.m4a" -c copy -y "$folder_name/$(echo $file_path | cut -f1 -d '.').mp4"
这会将输出文件直接保存在 $folder_name 指定的文件夹中并使用所需的文件名。
此外,您不再需要将文件从命令中的位置移动 mv "$file_path" "$folder_name/$(echo $file_path | cut -f1 -d '.').mp4"
。
通过对脚本进行这些更改,您现在应该能够将文件下载到各自的文件夹中,因为 ffmpeg 命令会将文件直接保存到 $folder_name 指定的文件夹中。