Delete the Live Photo MOV file that corresponds to a non-existent Live photo.
代码
为什么有这个脚本
iPhone的Live Photo照片由一张照片+一个小于5秒的MOV视频组成。
通过工具或者手机App将iPhone照片上传到QNAP里,会自动分解成2个文件。
当在QNAP中,通过QuMagie AI相册删除Live Photo照片,系统仅仅删除了照片文件本身,配套的Live Photo MOV文件还保留。
ChatGPT 讲解工作原理
这个脚本的目的是搜索同名的图片是否存在Live Photo MOV文件,如果存在,则跳过检测,因为Live Photo通常包含一个MOV视频文件和一个同名的JPG或HEIC图像文件。如果只有视频文件而没有图片文件,则检测视频的时长是否小于5秒,小于5秒则表示这个视频不是必须的,可以删除。
具体来说,这段代码的执行过程如下:
-
将目录路径"/share/Photo/手机相册备份/"和ffprobe程序路径"/share/CACHEDEV1_DATA/.qpkg/MediaSignPlayer/CodexPackExt/static/bin/ffprobe"分别赋值给变量DIR_PATH和FFPROBE_PATH。
-
将空字符串的内容写入名为"short_videos.txt"的文件。
-
使用"find"命令在指定目录下查找所有扩展名为.mov的文件,同时使用"! -path"参数排除掉包含字符串"@Recycle"和".@__thumb"的文件夹。然后使用一个for循环遍历所有查找到的视频文件。
-
使用if条件语句判断视频文件是否存在与其同名的JPG或HEIC格式的图片文件。如果不存在,则执行以下步骤:
使用ffprobe程序获取视频文件的时长。 -
判断视频时长是否小于5秒,如果小于5秒,则将该视频文件记录到输出文件find-5s-mov.shshort_videos.txt中,并标记为绿色。
对于无法获取时长的视频文件(例如由于文件格式错误等原因),将其记录到输出文件find-5s-mov.ERROR_videos.txt中,并标记为红色。
注意
用这个代码的前提是已经安装CAYIN MediaSign Player,并且购买了11.9USD的H.265授权。
其中文件short_videos.txt里面是搜索到的MOV文件绝对路径,为了安全起见,可以手动查看生成的文件列表是否正确,查看对应MOV文件是否有同名的JPG/HEIC照片,如果没有,证明生成的文件是正确的。
对于无法获取时长/损坏/不可识别的视频文件,会在窗口显示红色文字,并且输出到find-5s-mov.ERROR_videos.txt中,可以手动查看该文件或删除。
脚本会保存已经检测过的视频文件名,下次运行会跳过这些文件,检测新的文件。
之后在shell里运行 short_videos.txt 里面的代码即可删除对应MOV文件。
感谢分享,正需要啊
看about感觉内容有点熟悉,看了老评论之前id是bbis,这个就想起来了,哈哈。
牛的,困扰多时,威联通有大佬用户真好
@ZR +1,支持大佬。