将youtube播放列表中的单个文件大小相加可获得总文件大小值



我可以获得youtube播放列表中每个文件的文件大小,但如何将所有单独的文件大小相加,以获得所有文件加在一起的总大小(MB或GB(

示例:Linux/Uubuntu命令

youtube-dl --get-filename -o "File size for %(id)s (%(format_id)s): %(filesize)s = 125*%(duration)s*%(tbr)s" -f "22/best" --ignore-config  "https://www.youtube.com/watch?v=b26ZBgspv7M&list=PLLYQF5WvJdJXE-aP7oF5ucXcCfHmub34A" | (IFS='='; while read -r a b; do echo "$a = $(echo "$b" | bc)"; done)
File size for b26ZBgspv7M (22): NA  = 632016.000
File size for nPr3qtZ5FVE (18): NA  = 47577837.000
File size for 8FCsS6s1Z0k (18): NA  = 67788616.500
File size for TZANoOWFX1M (18): 62402644  = 62393587.750
File size for XA5eobevGv8 (22): NA  = 117960449.500
File size for lDplUpPoCcI (22): NA  = 175676293.75
File size for a7TUIkn3qjY (22): NA  = 299391049.125
File size for HFPObieGamg (22): NA  = 270756696.875
File size for PiiDs8dzSXk (22): NA  = 55946363.250
File size for tth0p7nK18A (22): NA  = 31281180.00
File size for Z_xj9ZTV8ak (22): NA  = 126366879.000
File size for Y_YHqM5nTHA (22): NA  = 42328527.000
File size for BjV-fRCPgAM (22): NA  = 42225633.375

您似乎已经知道如何分割输入了——只需对其求和即可。

youtube-dl ..... | (
sum=0
while IFS='=' read -r a b; do
sum=$(echo "$sum + $b" | bc)
done
echo "The sum: $sum"
)

awk感兴趣,它是一个非常方便的工具。您可以搜索";如何在awk中求和列;你肯定会得到很多例子。

您几乎完成了:

youtube-dl ...args...  |
{ while IFS='=' read -r a b; do printf '%s + ' "$b"; done; echo 0; }  | bc

或者使用cuttr:

youtube-dl ...args...  |
{ cut -d= -f2 | tr 'n' +; echo 0; } | bc

或使用sed

youtube-dl ...args...  |
sed 's/.*=//;H;$!d;g;s/.//;s/n/+/g' | bc

编写整个算法以提供给bc:

#!/usr/bin/env sh
echo "125*(0$(youtube-dl --get-filename -o "+(%(duration)s*%(tbr)s)" -f "22/best" --ignore-config  "https://www.youtube.com/watch?v=b26ZBgspv7M&list=PLLYQF5WvJdJXE-aP7oF5ucXcCfHmub34A"))" |
{ tr -d 'n'; echo;} |
bc -l

首先打印125*(0然后CCD_ 7打印连续的CCD_,则添加尾随的CCD_ 9导致类似于:

125*(0+(duration*tbr)
+(duration*tbr)
+(duration*tbr)
)

为了将其转换为有效的bc计算语法,需要使用tr -d 'n'丢弃换行符,并使用echo添加最后一个换行符

包括单个文件大小,最后加上总和。

youtube-dl --get-filename -o "File size for %(id)s (%(format_id)s): %(filesize)s = 125*%(duration)s*%(tbr)s" -f "22/best" --ignore-config  "https://www.youtube.com/watch?v=b26ZBgspv7M&list=PLLYQF5WvJdJXE-aP7oF5ucXcCfHmub34A" | (
sum=0
while IFS='=' read -r a b; do
echo "$a = $(echo "$b" | bc)"
sum=$(echo "$sum + $b" | bc)
done
echo "The sum: $sum"
)

输出:

File size for b26ZBgspv7M (22): NA  = 632016.000
File size for nPr3qtZ5FVE (18): NA  = 47577837.000
File size for 8FCsS6s1Z0k (18): NA  = 67788616.500
File size for TZANoOWFX1M (18): 62402644  = 62393587.750
File size for XA5eobevGv8 (22): NA  = 117960449.500
File size for lDplUpPoCcI (22): NA  = 175676293.75
File size for a7TUIkn3qjY (22): NA  = 299391049.125
File size for HFPObieGamg (22): NA  = 270756696.875
File size for PiiDs8dzSXk (22): NA  = 55946363.250
File size for tth0p7nK18A (22): NA  = 31281180.00
File size for Z_xj9ZTV8ak (22): NA  = 126366879.000
File size for Y_YHqM5nTHA (22): NA  = 42328527.000
File size for BjV-fRCPgAM (22): NA  = 42225633.375
The sum: 1340325129.125

相关内容

最新更新