برای فهمیدن مدت زمان کلی یک پلیلیست یوتوب از دستور زیر استفاده کنید:
yt-dlp --flat-playlist -qJ "URL" | jq -r '.entries[].duration' | perl -nle '$s += $_; END { printf "%d hours, %d minutes\n", $s/3600, ($s%3600)/60 }'
برای مثال:
yt-dlp --flat-playlist -qJ "https://youtube.com/playlist?list=PLpPMD23DomFWXIGEGdvdsJjtgdAUEEML4&si=rLhJDwqCwNk3BJVi" | jq -r '.entries[].duration' | perl -nle '$s += $_; END { printf "%d hours, %d minutes\n", $s/3600, ($s%3600)/60 }'
نیازمندیها:
- yt-dlp
- jq
- perl
توضیحات قسمت پرل (باقیش واضحه و توضیح نیاز نداره)
فلگ n- به معنی لوپ، مشابه while
فلگ l- برای پاک کردن New Line
فلگ e- برای اجرا مانند اسکریپت
متغیر s$ برای ذخیره مدت زمان
متغیر پیشفرض پرل _$ که همیشه مقدار خط فعلی رو ذخیره میکنه که در این مورد میشه زمان خروجی از jq
بلوک END بعد از اتمام Iteration اجرا میشه
قسمت printf مجموع دقایق رو به ساعت و در نهایت مقدار باقیمونده رو با عملیات پیمانه (Modulo) به دقیقههای بعد از محاسبه ساعت اختصاص میده و در نهایت با فرمت H Hours, M Minutes اون رو چاپ می کنه.
از awk هم میشد استفاده کرد که در اون صورت دستور این شکلی میشد:
awk '{s+=$1} END {printf "%d hours, %d minutes\n", s/3600, (s%3600)/60}'
ولی پرل باحالتره 😎
#آموزش
yt-dlp --flat-playlist -qJ "URL" | jq -r '.entries[].duration' | perl -nle '$s += $_; END { printf "%d hours, %d minutes\n", $s/3600, ($s%3600)/60 }'
برای مثال:
yt-dlp --flat-playlist -qJ "https://youtube.com/playlist?list=PLpPMD23DomFWXIGEGdvdsJjtgdAUEEML4&si=rLhJDwqCwNk3BJVi" | jq -r '.entries[].duration' | perl -nle '$s += $_; END { printf "%d hours, %d minutes\n", $s/3600, ($s%3600)/60 }'
نیازمندیها:
- yt-dlp
- jq
- perl
توضیحات قسمت پرل (باقیش واضحه و توضیح نیاز نداره)
فلگ n- به معنی لوپ، مشابه while
فلگ l- برای پاک کردن New Line
فلگ e- برای اجرا مانند اسکریپت
متغیر s$ برای ذخیره مدت زمان
متغیر پیشفرض پرل _$ که همیشه مقدار خط فعلی رو ذخیره میکنه که در این مورد میشه زمان خروجی از jq
بلوک END بعد از اتمام Iteration اجرا میشه
قسمت printf مجموع دقایق رو به ساعت و در نهایت مقدار باقیمونده رو با عملیات پیمانه (Modulo) به دقیقههای بعد از محاسبه ساعت اختصاص میده و در نهایت با فرمت H Hours, M Minutes اون رو چاپ می کنه.
از awk هم میشد استفاده کرد که در اون صورت دستور این شکلی میشد:
awk '{s+=$1} END {printf "%d hours, %d minutes\n", s/3600, (s%3600)/60}'
ولی پرل باحالتره 😎
#آموزش