【问题标题】:Working with files based on filename calulated from time根据从时间计算的文件名处理文件
【发布时间】:2016-03-27 03:20:27
【问题描述】:

我有一台远程 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 小时循环很简单。

日出和日落循环有点棘手。我从 Ian Craig 在 SourceForge (https://sourceforge.net/projects/sunwait4windows/) 下载并编译了“sunwait”程序。使用命令“sunwait list raise 35.1174N 89.9711W | gawk -F: '{ print $1$2 }'” 产生输出 0700,太阳在我的位置升起。并使用“设置”选项,在我的位置产生 1913 年日落。由于我不住在赤道,所以日出和日落时间从早上 5 点 30 分到早上 7 点 30 分不等。视季节而定。当然。

我有代码将图像列表编译到移动中,添加叠加层,并添加嵌入的天气数据。问题是如何创建日出前 30 分钟 + 2 小时的照片列表。然后在日落前 2 小时 + 过去 30 分钟。最后,在日出前 30 分钟一直到日落 + 30 分钟。

我确定答案是数学!有人可以在黄砖路上启动我吗?

【问题讨论】:

    标签: linux bash awk filesystems raspberry-pi


    【解决方案1】:

    awk 来救援!

    通过 echo here 替换您的脚本以生成时间

    $ 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() 丢失,已修复,您也可以将路径作为另一个变量传递

    【讨论】:

    • 谢谢。看起来如果日出发生在半小时之后,比如 06:35,这会减去 1 小时 30 分钟。不是30分钟。你很亲密。另外,我想在 printf 命令中嵌入图片的路径和站点名称,但它在输出 $homediir/site/$sitefilename0821*.jpeg 上显示了这一点。再次感谢。我们很接近。
    • 确实解决了时间问题。我可以问你几个问题吗,因为代码执行了我的要求。我需要再添加一件事。
    • 问吧。如果是通用问题,您可能需要创建一个新问题来征求更多答案。
    • 谢谢。该代码的目的是生成一个文件列表,其中列出了 SITE 文件夹中的所有照片,这些照片是在日出前 30 分钟和日出后 2 小时拍摄的。此代码确实会生成这些照片的部分可能文件名列表。我在 "printf path"%02d%02d*.jpeg\n",h,m}} 行中添加了一个 *,并将结果输出到一个名为 filelist.txt 的单独文件中。该文件中的一行如下所示: /home/server/webcam/sites/HOME/HOME-03-28-16-0623*.jpeg. 因为每分钟有 2 张照片
    • 当我不知道该照片的剩余 2 位数字是什么时,我如何收集所有可能文件的完整列表?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多