文件不会下载到名称从下载文件的 URL 中提取的文件夹中

文件不会下载到名称从下载文件的 URL 中提取的文件夹中

这个问题来自这里但不同的是

好的,我有这些网址

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 指定的文件夹中。

相关内容