我正在使用 Arch Linux。
要下载播客,我使用 gPodder 3。
为了收听我的播客,我在 iPod Classic 上使用 Rockbox。
问题是,我的 iPod 上的播客无法很好地排序:所有内容都会按字母顺序排序。为了克服这个问题,我想在下载后立即将播客名称更改为:
YYYYMMDD_Podcast_Name.mp4
例如:
20130828_Easy_Linux_Remote_Desktop_LAS_s28e03.mp4
这样,即使按字母顺序排序,播客也会按正确的顺序排列。
我怎样才能完成这件事?我知道有一个名为 的插件rename_downlad.py
,它将把播客名称转换为<episode_title>.<ext>
,但这并不是我想要的。我尝试在以下位置修改此扩展/usr/share/gpodder/extensions/rename_download.py
:
第 45 行:
new_filename = str(datetime.datetime.now().strftime("%Y%b%d_")) + os.path.join(dirname, new_basename)
但由于某种原因,这不起作用。
我怎样才能完成这件事?请注意,在我的示例中,添加到标题中的唯一内容是当前日期。如果这可以是该集的发布日期,那就太好了,但我已经很高兴只添加当前日期了。
答案1
如果您只是想重命名文件以使其包含 YYMMDD_Podcast_Name.mp4,您可以使用以下 Bash 脚本来执行此操作:
$ for i in *.mp4; do
dateString=$(date +"%Y%m%d" --date @$(stat -c %Z "$i"))
mv "$i" "${dateString}_$i"
done
例子
假设我有以下文件。
$ ls | paste - -
file1.mp4 file2.mp4
file3.mp4 file4.mp4
file5.mp4 file6.mp4
file7.mp4 file8.mp4
file9.mp4
将上述命令作为一行运行:
$ for i in *.mp4; do dateString=$(date +"%Y%m%d" \
--date @$(stat -c %Z "$i")); mv "$i" "${dateString}_$i"; done
现在文件的命名如下:
$ ls | paste - -
20130828_file1.mp4 20130828_file2.mp4
20130828_file3.mp4 20130828_file4.mp4
20130828_file5.mp4 20130828_file6.mp4
20130828_file7.mp4 20130828_file8.mp4
20130828_file9.mp4
细节
上述技术是使用stat
命令来获取文件自纪元以来最后一次更改的时间(以秒为单位)。
%Z Time of last change as seconds since Epoch
然后命令使用该秒数date
来确定YYNNDD
这些秒数的时间。
date +"%Y%m%d" --date @...seconds...
笔记:这个@
标志很重要,它告诉date
我们正在发出的命令秒。
一旦我们计算出来,YYMMDD
我们就可以使用一个简单的mv
命令来重命名文件。
另一种选择 - 在 Rockbox 中排序
使用日期前缀重命名文件的另一种方法是配置 Rockbox,以便它根据日期对文件进行排序。您还可以根据目录名称对目录进行排序。
这些设置位于菜单层次结构下:
摇滚盒->设置->常规设置->文件查看
2 个关键设置是:
- 排序目录- 设置为*按字母顺序”
- 对文件进行排序- 设置为“按日期”
笔记:这“对文件进行排序”也可以设置为“按最新日期”。
您可以在 Rockbox 网站上标题为的页面上查看有关上述设置的更多信息:8 常规设置。