Вместо вступления. Сегодня увидел эту статью и как-то стало грустно, так как в пятницу увидел пост про himawari8 и загорелся идеей написать скрипт и статью на хабр. Со скриптом успел, а вот со статьей немного не успел, но решил все же написать сюда.
Согласно wiki, himwari8 — это японский метеорологический спутник, 8-й по счету из геостационарных метеорологических спутников Himawari, эксплуатируемых японским метеорологическим агентством. Himawari 8 введен в эксплуатацию 7 июля 2015 и является преемником MTSAT-2 (Himawari 7), который был запущен в 2006 году. Пример фото от 8.02.2016:
У меня, как и предыдущего автора, также установлен XFCE, поэтому скрипт пишу под этот DE. В репозитории первоначального скрипта в коментариях я наткнулся на ссылку: himawari8-dl.nict.go.jp/himawari8/img/D531106/latest.json
Это json с информацией о последнем фото. В своей версии я решил брать информацию с него. Финальное фото формируется с помощью пакета imagemagick из 16 изображений, которые помещаются во временную папку и после окончания работы скрипта удаляются, а результат сохраняется в папку ~/Pictures/Himawari8.
Хотел сделать так, чтобы скрипт работал через таймер в systemd, но есть небольшие пока проблемы. Для других X-систем не делал реализаций, но скрипт находится на github, так что welcome, если кто-то захочет что-то добавить или пофиксить баг. А они там точно есть (например, предполагается, что в директории пользователя есть папка Pictures).
Что хотелось бы добавить:
По умолчанию сейчас zoomed.
Сам скрипт:
Аналоги. Уже было упомянуто о существующих решения, я хочу добавить еще:
github.com/JohnnieFucker/EarthLive4Mac
github.com/boramalper/himawaripy/tree/master/himawaripy (более комплексное решение)
P.S.: Так как фото сохраняются в папку, то потом можно собрать гифку. Скрипт на bash я пишу первый раз (в смысле, нормальный скрипт, а не на 3 строки), так что жду вашей критики.
Продублирую ссылку на github: github.com/yatsenko-ihor/himawari8-wallaper.
Согласно wiki, himwari8 — это японский метеорологический спутник, 8-й по счету из геостационарных метеорологических спутников Himawari, эксплуатируемых японским метеорологическим агентством. Himawari 8 введен в эксплуатацию 7 июля 2015 и является преемником MTSAT-2 (Himawari 7), который был запущен в 2006 году. Пример фото от 8.02.2016:
У меня, как и предыдущего автора, также установлен XFCE, поэтому скрипт пишу под этот DE. В репозитории первоначального скрипта в коментариях я наткнулся на ссылку: himawari8-dl.nict.go.jp/himawari8/img/D531106/latest.json
Это json с информацией о последнем фото. В своей версии я решил брать информацию с него. Финальное фото формируется с помощью пакета imagemagick из 16 изображений, которые помещаются во временную папку и после окончания работы скрипта удаляются, а результат сохраняется в папку ~/Pictures/Himawari8.
Хотел сделать так, чтобы скрипт работал через таймер в systemd, но есть небольшие пока проблемы. Для других X-систем не делал реализаций, но скрипт находится на github, так что welcome, если кто-то захочет что-то добавить или пофиксить баг. А они там точно есть (например, предполагается, что в директории пользователя есть папка Pictures).
Что хотелось бы добавить:
- изменения расширения
- сохранение в произвольную папку
- варианты для разных DE
- работу по таймеру
- стиль картинки(zoomed,centered,etc) — что бы не приходилось зумить, можно по краям сделать черные вставки.
По умолчанию сейчас zoomed.
Сам скрипт:
#!/bin/bash
width=550
level="4d" #Level can be 4d, 8d, 16d, 20d
numblocks=4 #this apparently corresponds directly with the level, keep this exactly the same as level without the 'd'
time_stamp=$(date +'%Y%m%d%H%M%S')
short_time_stamp=$(date +'%H%M%S')
#get lastest.json with information about last photo
latest_info_url="http://himawari8-dl.nict.go.jp/himawari8/img/D531106/latest.json"
#extract from json date and time
date_time_photo_str=`curl $latest_info_url |grep -Eo '[[:digit:]]{4}-[[:digit:]]{2}-[[:digit:]]{2} [[:digit:]]{2}:[[:digit:]]{2}:[[:digit:]]{2}' `
#extract from json time
time_photo_str=`echo $date_time_photo_str |grep -Eo '[[:digit:]]{2}:[[:digit:]]{2}:[[:digit:]]{2}' `
#debug info
echo "Time photo: $time_photo_str"
echo "The last photo was took: $date_time_photo_str"
#convert date_time_photo_str to url format
#example: from 2016-02-09 22:40:00 to 2016/02/09/224000
date_time_url=`echo $date_time_photo_str | sed 's/[- ]/\//g' | sed 's/[:]//g'`
#convert date_time_photo_str to url format
#example: from 22:40:00 224000
time_url=`echo $time_photo_str | sed 's/[:]//g'`
#url with parameters to photo
base_url="http://himawari8-dl.nict.go.jp/himawari8/img/D531106/$level/$width/$date_time_url"
#temporary folder for save parts of photo
tmp_folder="$HOME/tmp$time_stamp"
echo $tmp_folderhttps://github.com/yatsenko-ihor/himawari8-wallaper
file_ext=".png"
outfile="result_$time_stamp$file_ext"
echo "Outfile: $outfile"
current_path=$(pwd)
cd ~/Pictures/
mkdir -p Himawari8 || exit
cd $current_path
wallaper_path="$HOME/Pictures/Himawari8/"
mkdir $tmp_folder
cd $tmp_folder
count=0
for ((i=0; i < $numblocks; i++))
do
for ((j=0; j < $numblocks; j++))
do
real_url=$base_url"_"$i"_"$j$file_ext
echo "Real url: $real_url"
wget -i -P -q $real_url
echo "Download to: $tmp_folder"
file_name=$short_time_stamp"_"$j"_"$i$file_ext
echo "Image name: $file_name"
done
done
count=0
output_fileset_str=""
result_fileset_str=""
for ((i=0; i < $numblocks; i++))
do
output_fileset_str=""
for ((j=0; j < $numblocks; j++))
do
file_name=$tmp_folder/$time_url"_"$i"_"$j$file_ext
output_fileset_str=$output_fileset_str" "$file_name
done
echo "Output fileset: $output_fileset_str"
montage $output_fileset_str -mode Concatenate -tile 1x4 output$i.png
result_fileset_str=$result_fileset_str" "output$i.png
done
echo "Result fileset: $result_fileset_str"
echo "Result file: $outfile"
montage $result_fileset_str -mode Concatenate -tile 4x1 $wallaper_path$outfile
echo "cureent path $current_path"
cd $current_path
rm -rf $tmp_folder
#Number of worspaces
workspace_count=$(xfconf-query -v -c xfwm4 -p /general/workspace_count)
connected_monitor=$(xrandr -q | awk '/ connected/{print $1}')
xfce_desktop_prop_prefix=/backdrop/screen0/monitor$connected_monitor
echo "Wallaper path: $wallaper_path"
echo "Outfile: $outfile"
#Set wallaper for all worspaces(only for XFCE)
for ((i=1; i <= $workspace_count; i++))
do
xfconf-query -c xfce4-desktop -p $xfce_desktop_prop_prefix/workspace$i/last-image -s $wallaper_path$outfile
xfconf-query -c xfce4-desktop -p $xfce_desktop_prop_prefix/workspace$i/image-style -s 5
echo "Set $wallaper_path$outfile for workspace $i"
done
Аналоги. Уже было упомянуто о существующих решения, я хочу добавить еще:
github.com/JohnnieFucker/EarthLive4Mac
github.com/boramalper/himawaripy/tree/master/himawaripy (более комплексное решение)
P.S.: Так как фото сохраняются в папку, то потом можно собрать гифку. Скрипт на bash я пишу первый раз (в смысле, нормальный скрипт, а не на 3 строки), так что жду вашей критики.
Продублирую ссылку на github: github.com/yatsenko-ihor/himawari8-wallaper.