我有一台远程 Linux 计算机,一个树莓派,它每分钟拍摄两张照片并将它们上传到 Linux 服务器。照片的名称是这样的:SITE-03-22-16-091543.jpeg。文件名的格式如下:Sitename-month-day-year-hourminutesecond.jepg。在发送照片之前,通过 scp,我使用 exiv2 将一些本地天气日期嵌入到每张照片中。这样,天气状况就会存储在每张照片中。所有这些都工作正常。我希望其中大约 15 个都每分钟向服务器发回两个快照。
在服务器端,这些照片存储在它们自己的 SITE 文件夹中。这个想法是从每个站点制作延时视频。我们感兴趣的延时有四种类型:
1) 24 小时循环,从中午 12:00 到晚上 11:59。
2) 日出循环,从日出前 30 分钟到日出后 2 小时
3) 日落循环,从日落前 2 小时到日落后 30 分钟
4) 日光循环,从日出前 30 分钟到日落后 30 分钟
24 小时循环很简单。
日出和日落循环有点棘手。我从 SourceForge 上的 Ian Craig (https://sourceforge.net/projects/sunwait4windows/) 下载并编译了“sunwait”程序。使用命令“sunwait list rise 35.1174N 89.9711W | gawk -F: '{ print $1$2 }'” 产生输出 0700, sun rise at my location。并使用“设置”选项,在我的位置生成 1913,日落。因为我不住在赤道,所以日出和日落时间从早上 5:30 到早上 7:30。视季节而定。当然。
我有代码可以将图像列表编译到移动中,添加叠加层,并添加嵌入式天气数据。问题是如何创建日出前 30 分钟 + 2 小时照片的列表。然后是日落前 2 小时 + 30 分钟后。最后,从日出前 30 分钟一直到日落 + 30 分钟。
我确定答案是数学!有人可以在黄砖路上启动我吗?
最佳答案
awk
助您一臂之力!
在此处通过回显替换您的脚本以生成时间
$ echo 07:10 |
awk -F: -v offset=30 -v path="$filepath" '{
h=$1-int(offset/60);
m=$2-offset%60;
if(m<0) {m=m+60; h--}
for(i=0;i<=150;i++)
{m++;
if(m>59) {m=m%60; h++};
printf path"%02d%02d.jpeg\n",h,m}}'
创建一个 151 步的计数器,从给定小时分钟的偏移量(以分钟为单位)开始。对于另一种情况,将偏移量输入为 120。假设开始/结束时间不会更改日期。在北极附近可能不是真的!
我认为一些变量可以简化,但可以作为进一步改进的工作基础。
更新:int() 缺失,已修复,您也可以将路径作为另一个变量传递
关于linux - 根据时间计算的文件名处理文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36225250/