我使用命令行实用程序youtube-dl
从youtube下载视频,并使用avconv
从它们制作mp3。我在Ubuntu 14.04下这样做,非常满意。
实用程序下载文件并使用以下名称方案保存它们:
TITLE(artist-track)-ID.mp3
所以实际的文件名看起来像EPIC RAP BATTLE of MANLINESS-_EzDRpkfaO4.mp3
。
文件夹中的其他文件名如下:
EPIC RAP BATTLE of MANLINESS-_EzDRpkfaO4.mp3
Martin Garrix - Animals (Official Video)-gCYcHz2k5x0.mp3
Stromae - Papaoutai-oiKj0Z_Xnjc.mp3
起初,这不是问题。当我在Rhythmbox里听音乐时,它没有打扰我。但是当移动到手机或其他设备时,看到这么长的名字是相当令人困惑的,有些播放器,比如三星的播放器,把名字的最后一部分(第二个虚线后面的id)当作专辑或其他东西。
所以我想创建一个Bash脚本,删除所有文件名称中第二个破折号之后的内容,即转换名称Martin Garrix - Animals (Official Video)-gCYcHz2k5x0.mp3
到名称
Martin Garrix - Animals (Official Video).mp3.
我认为有可能写这样一个Bash文件,用某种循环和sed
或grep
和mv。
还有,是否可以指示youtube-dl
从现在开始排除ID ?我正在下载命令
youtube-dl --extract-audio --audio-quality 0 --audio-format mp3 URL
使用bash脚本:
#!/bin/bash
shopt -s extglob
for A in *.mp3; do
B=${A/%-+([[:alnum:]_]).mp3/.mp3}
[[ $A != "$B" ]] && mv "$A" "$B"
done
这将修复已经下载的文件的文件名
查看这里的文档:http://rg3.github.io/youtube-dl/documentation.html,您应该能够完全使用youtube-dl执行以下操作:
youtube-dl --extract-audio --audio-quality 0 --audio-format mp3 URL -o %(title)s.%(ext)s