blog404de / regenradarvideo
根据DWD提供的雷达图像为个人主页创建降雨雷达视频
Requires
- php: ^8.0
- ext-curl: *
- ext-mbstring: *
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- roave/security-advisories: dev-latest
- sebastian/phpcpd: ^6.0
- squizlabs/php_codesniffer: ^3.6
- wapmorgan/php-deprecation-detector: dev-master
README
降雨雷达脚本
重要提示
由于DWD的基础服务接入设置更改和转向OpenData,2.x版本及其以下不再支持。因此,请在“发布”部分下载3.0.0或更高版本或“开发”分支以获取OpenData支持。
简介
该降雨雷达脚本用于根据德国气象局提供的德国全国或单个地区的基本服务降雨雷达图像创建视频或动画GIF文件。有关基本服务的详细信息,请参阅NeuthardWetterScripts 主页。
降雨雷达说明
要求
- Linux(已在Debian上测试过)
- PHP 8.0(或更高版本)且启用了curl模块
- 安装ffmpeg或libav-tools(用于mp4/webm视频)
- Shell访问以设置Cron作业
准备
-
安装除PHP之外所需的额外包
Debian/Ubuntu/Mint
apt-get update apt-get install ffmpeg
如果您收到ffmpeg不可用的消息(在Debian Jessie / old-stable上),则可以使用ffmpeg的分支libav-tools。
RHEL/CentOS/Fedora
yum install ffmpeg
-
通过Composer/Packagist在稳定版本中加载必要的库
composer create-project --no-dev blog404de/regenradarvideo
配置 (新)
实际的脚本用于获取天气警告是genRegenRadar.php
文件。脚本本身通过config.local.php
文件进行控制。要创建此文件,请复制config.sample.php
并将其重命名为config.local.php
。
在config.local.php中需要调整的配置参数如下
-
用于创建视频所需控制台程序的路径
// Pfade zu Konsolenprogramme: $converter["video"] = "/usr/bin/ffmpeg"; $converter["gif"] = "copy";
对于
$converter["video"]
,需要libav-tool或ffmpeg二进制文件的路径。这是创建webm/mp4视频所需的。$converter["gif"]
目前仅支持"copy"方法,因此除非您想生成GIF文件,否则不应更改GIF支持的配置参数。如果您想禁用GIF文件生成,请将参数更改为以下值:$converter["gif"] = false;
-
要创建的视频文件的配置(数组)
该数组包含要创建的各个降雨雷达视频的配置(例如,对于德国和/或各个联邦州)。
$config[] = [ "remoteURL" => "https://www.dwd.de/DWD/wetter/radar/radfilm_brd_akt.gif", "posterURL" => "https://www.dwd.de/DWD/wetter/radar/rad_brd_akt.jpg", "localFolder" => "/srv/webspacepfad/tmp/radarDaten/de", "output" => [ "webm" => "/srv/webspacepfad/htdocs/img/regenradar_de.webm", "mp4" => "/srv/webspacepfad/htdocs/img/regenradar_de.mp4", "gif" => "/srv/webspacepfad/htdocs/img/regenradar_de.gif", "poster" => "/srv/webspacepfad/htdocs/img/regenradar_southwest.de", ], "forceRebuild" => false ];
数组值
"remoteURL"
包含 DWD 相应视频文件的 URL。您可以通过 DWD 主页在 https://www.dwd.de/DE/leistungen/radarbild_film/radarbild_film.html 查找。为此,请在指定页面上选择德国或所需联邦州,然后点击图形下的 "Radarfilm"。加载雷达电影后,用右键单击并选择 复制图片地址(Safari/Chrome)或 复制图形地址(Firefox)。第二个数组值
"posterURL"
再次包含最后一张雷达图片的 URL,该图片同样在 DWD 主页上提供。步骤与查找视频 URL 类似。唯一不同的是,选择 "Radarbild" 而不是 "Radarfilm"。确定图形 URL 的步骤与前面的步骤类似。与 FTP 服务器上的路径相对应的是
"localFolder"
。此数组值包含一个本地文件夹,用于临时存储下载的雷达视频。"output"
是创建视频的关键点,包含一个数组,该数组一方面包含要创建的格式(webm、mp4、gif)和每个文件应存储的目标路径。在示例中,将创建所有三种可用的格式。如果您不需要动画 GIF 文件,请将目标路径替换为 false。在此数组中,除了 webm/mp4 和 gif,还有输出格式 "poster"。这是用于所需雷达图像的海报图形的输出路径。如果不需要此类海报文件,请也使用 false 作为参数。
"forceRebuild"
仅用于测试目的,用于指示脚本无论如何都应重新创建所有视频,而不管是否添加了新的雷达图像。默认情况下,此参数应设置为 false。注意:要为德国的多个区域创建视频,请相应地扩展
$config[]
数组。示例配置中包含两个数组元素 - 分别代表西南德国和整个德国。
使 PHP 脚本可执行并将其作为 Cronjob 保留
-
启动已配置的脚本
chmod +x genRegenRadar.php
-
作为 Cronjob 调用的 Shell 脚本。不建议直接调用,否则可能会出现脚本并行调用的现象。这可能导致系统出现不期望的效果,直至完全挂起。
为了防止这种情况,建议使用锁文件,如下例所示
#!/bin/bash LOCKFILE=/tmp/$(whoami)_$(basename $0).lock [ -f ${LOCKFILE} ] && { echo "$(basename $0) läuft schon"; exit 1; } lock_file_loeschen() { rm -f ${LOCKFILE} } trap "lock_file_loeschen ; exit 1" 2 9 15 # Lock-Datei anlegen echo $$ > ${LOCKFILE} # Starte Script /pfad/zum/script/genRegenRadar.php # Lösche Lockfile lock_file_loeschen exit 0
在此脚本中,您当然需要根据需要调整到雨雷达脚本的路径。
对于视频的更新频率,每 15 分钟进行一次更新已被证明是合适的,尽管 DWD 每隔 5 分钟就添加新的图像。在所需的更新频率中,应注意视频生成可能需要一些时间(尤其是动画 GIF 文件)。如果每 15 分钟执行一次 Cronjob,则 Cronjob 行将如下所示:
*/15 * * * * /pfad/zum/script/cron.genRegenRadar.sh
,其中必须根据步骤 2 中的 Shell 脚本路径进行调整。
--
许可信息
版权所有 Jens Dutzi 2015-2020 / 状态:2020 年 10 月 20 日 / 本作品根据 [MIT 许可] 许可(https://open-source.org.cn/licenses/mit-license.php)