Kaptain.
Telegram /
LinkedIn /
Email /
GIT /
RSS /
GPG /
Заказ печатных плат

№ 9074 В разделе
Programming
от July 30th, 2018,
В подшивках: Bash, PHP
Захотел я сделать красивый видос как по небу двигаются звезды. Захотел и сделал. Карту взял отсюда 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));
}
}
Репозиторий с кодом https://git.blindage.org/21h/star-map-video-generator
Fortune cookie: For flavor, instant sex will never supercede the stuff you have to peel and cook. -- Quentin Crisp
Leave a Reply