INT 21h

Hi, I am Vladimir Smagin, sysadmin. Telegram Email GPG

Bash + PHP + imagemagick + ffmpeg: карта звездного неба

№ 9074 В разделе "Программирование" от July 30th, 2018,

Захотел я сделать красивый видос как по небу двигаются звезды. Захотел и сделал. Карту взял отсюда http://www.astronet.ru/db/map/.

Скрипт запуска

#!/bin/bash

rm -f *.jpg *.gif *.mp4

php -f get-images.php $(date +%d) $(date +%m) $(date +%Y)

COUNTER=0
for gif in $(ls -w1 *.gif)
do
    echo "Converting $gif"
    convert $gif -resize 2560x1440 -gravity center -extent 2560x1440 -fill white -gravity South-West -pointsize 45 \
      -annotate +50+35 "$(date +%d-%m-%Y) ${gif%.*} (UTC)" -gravity South-East -pointsize 45 -annotate +50+35 \
      "Звездная карта Томска\nhttp://blindage.org" $(printf '%04d' $COUNTER).jpg
    let COUNTER=COUNTER+1
done

ffmpeg -framerate 12 -i %04d.jpg Stars-$(date +%d-%m-%Y).mp4

rm -f *.gif

Скрипт получения файлов

Чтобы понервировать тех, кто не любит PHP сделал скрипт на PHP. Ну чисто по приколу, он же у меня стоит, почему бы и нет? Зря место чтоли занимает 😀 Изысканные ценители могут с легкостью перенести все это на bash.

<?php

$dateD = $argv[1];
$dateM = $argv[2];
$dateY = $argv[3];

function getHourPart($minute) {
    $t = mktime(0,$minute,0) % 3600;
    return $t / 3600;
}

$url_o = "http://www.astronet.ru/cgi-bin/skyc.cgi?ut=%HPART%&day=%DD%&month=%DM%&year=%DY%&
longitude=-84.9167&latitude=56.5000&azimuth=0&height=90&m=5.0&dgrids=0&dcbnd=0&
dfig=1&colstars=1&names=1&xs=1600&theme=0&dpl=1&drawmw=1&pdf=0&lang=1";

for($hour = 0; $hour<=23; $hour++) {
    for($minute = 0; $minute<=59; $minute++) {
        $hPart = $hour + getHourPart($minute);
        $timestamp = sprintf('%02d',$hour).':'.sprintf('%02d',$minute);
        echo $timestamp."\n";
        $url = str_replace('%HPART%',$hPart, $url_o);
        $url = str_replace('%DD%',$dateD, $url);
        $url = str_replace('%DM%',$dateM, $url);
        $url = str_replace('%DY%',$dateY, $url);
        file_put_contents(''.$timestamp.'.gif', file_get_contents($url));
    }
}

Нет комментариев »

Leave a Reply

Your email address will not be published. Required fields are marked *

*

Яндекс.Метрика