Как стать автором
Обновить

Комментарии 29

Это что за позорище у вас в скрипте?
nowtime=$(date +%H%M | sed -r 's/.$//')
nowtime=$nowtime"000"
nowyear=$(date +%Y)
nowmonth=$(date +%m)
nowday=$(date +%d -d -1day)
...
url="$site/$level/$width/$nowyear/$nowmonth/$nowday/$nowtime"

Что будет 1 марта? nowday будет вычислен в предыдущий день — 29 (февраля). А вот месяц и год будут браться без сдвига времени, получим в итоге timestamp для 29 марта, для которого фото ещё, вестимо, нет.

И удручающе неффективно, куча лишних форков, когда можно сделать всё за раз:

timestamp=$(date -d -1day +%Y/%m/%d/%H%M | sed -r 's/.$/000/')
...
url="$site/$level/$width/$timestamp"


Ваш скрипт уже достаточно велик, чтобы имело смысл создать под него репу, чтоб слать туда пулреквесты.
Ну, я решил, что бог с ним… Пофиксил кодом от SleepingLion
Как то странно, пишете
Для xfce4

xfconf-query -c xfce4-desktop....

потом:
Другие X-системы
и опять в скрипте
...xfconf-query -c xfce4-desktop...

Что значит «Другие X-системы»?
Вставьте уж тогда проверку, если хфце, то так, если гном, то такая команда, если кеды, то сякая…
Я ток «за», но мне не на чем проверить работоспособность команд.
Для гнома работает:
gconftool-2 -t str -s /desktop/gnome/background/picture_filename $workdir/out_$numblocks.png

KDE под рукой нет проверить.
Гномовские переменные на всякий случай:
DESKTOP_SESSION=gnome
GDMSESSION=gnome
WINDOWMANAGER=/usr/bin/gnome
А, вчера не было. Эх, ладно, сообщество быстро)
Pullrequest:
Fixed: Корректная сборка больших разрешений (16d, 20d);
Fixed: Поправлена работа по первым числам каждого месяца;
Added: Возможность указания размера обоев из коммандной строки (например script.sh 8 — чб 4400x4400).
Code
#!/bin/bash

delay=900 # seconds

while true
do
	width=550
	numblocks=${1:-4}
	level=$numblocks'd' #Level can be 4d, 8d, 16d, 20d 
	
	nowtime=$(date +%H%M | sed -r 's/.$//')
	nowtime=$nowtime"000"
	nowyear=$(date +%Y -d -1day)
	nowmonth=$(date +%m -d -1day)
	nowday=$(date +%d -d -1day)
	
	workdir="/home/cutemaj/.earthwallpaper"

	if [ ! -d $workdir ]; then
		mkdir -p $workdir
	fi

	cd $workdir

	site="http://himawari8-dl.nict.go.jp/himawari8/img/D531106"

	url="$site/$level/$width/$nowyear/$nowmonth/$nowday/$nowtime"

		for (( i=0; i<=$numblocks-1; ++i))
		do
		    for (( j=0; j<=$numblocks-1; ++j))
			do
				sourceurl="$url"$(printf '_%d_%d.png' "$i" "$j")
				desturl="piece_"$numblocks"_"$(printf '%02d_%02d.png' "$i" "$j")
				echo Downloading $sourceurl to $desturl
			    wget $sourceurl -O $workdir/$desturl
			done
			convert -append piece_$numblocks*_*.png img_$numblocks"_"$(printf '%02d' "$i").png
			rm piece_$numblocks*_*.png
		done
	convert +append img_$numblocks"_"*.png "out_"$numblocks".png"
	rm img_*.png

	xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitorVGA-0/workspace0/last-image -s $workdir/out_$numblocks.png 

	sleep $delay
done

Правки старался делать минимальные.
Ещё пара фиксов + правка предложенная Self_Perfection:
Заголовок спойлера
#!/bin/bash

delay=900 # seconds

while true
do
	width=550
	numblocks=${1:-4}
	level=$numblocks'd' #Level can be 4d, 8d, 16d, 20d
	
	timestamp=$(date -d -1day +%Y/%m/%d/%H%M | sed -r 's/.$/000/')
	
	workdir="/home/cutemaj/.earthwallpaper"

	if [ ! -d $workdir ]; then
		mkdir -p $workdir
	fi

	cd $workdir

	site="http://himawari8-dl.nict.go.jp/himawari8/img/D531106"

	url="$site/$level/$width/$timestamp"

		for (( i=0; i<=$numblocks-1; ++i))
		do
		    for (( j=0; j<=$numblocks-1; ++j))
			do
				sourceurl="$url"$(printf '_%d_%d.png' "$i" "$j")
				#sourceurl="$url$dash$i$dash$j.png"
				#desturl="$url$dash"
				desturl="piece_"$numblocks"_"$(printf '%02d_%02d.png' "$i" "$j")
				echo Downloading $sourceurl to $desturl
			    wget $sourceurl -O $workdir/$desturl
			done
			convert -append piece_$numblocks*_*.png img_$numblocks"_"$(printf '%02d' "$i").png
			rm piece_$numblocks*_*.png
		done
	convert +append img_$numblocks"_"*.png "out_"$numblocks".png"
	rm img_$numblocks"_"*.png

	xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitorVGA-0/workspace0/last-image -s $workdir/out_$numblocks.png 

	sleep $delay
done

Код заменил, благодарю за фиксы)
По мелочи: сервер не всегда загружает изображения прямо совсем новые, так что есть шанс наткнуться на пустоту. Поэтому в скрипте я получаю фотки прошлого дня

Может дело в тайм-зоне? ;-)
Кажись, неподалёку от Токио. Точно узнать не получится, думаю.
Наверное сохраняется по GTM
Вот так работает и с виду более похоже на правду:
timestamp=$(date -d -4hours +%Y/%m/%d/%H%M | sed -r 's/.$/000/') 
Кстати, да: автор недавно добавил в PowerShell-скрипт строку

$ts = New-TimeSpan -Hours -2 -Minutes -30 #Number of hours and minutes to add/subtract to the date. Adjust this to offset your system date to around about GMT (I think?)
$now = ((Get-Date -Second 00) + $ts)
Ну так и я про то же…
Ещё с долготой разобраться бы.
Ну, в Арче (хз, как в других linux) есть куча файлов /usr/share/zoneinfo/%Zone%/%SubZone%, которые используются для определения временных настроек. SubZone — это крупный город, по его имени теоретически можно определить примерные координаты юзера.
Я не про таймзону, я про ракурс съёмки, днём не видел ещё что там получается.
Сделал минутное видео последних десяти дней — могу выложить.
Какое место снимается, Америка или Европа?
было бы интересно посмотреть, ждемс ссылку :)
Спутник геостационарный, если менять ракурс — надо искать другой. Я поспрашиваю знакомых астрономов, но ничо не обещаю)
Установка поверх i3wm:

```
sudo apt-get install -y feh
feh --bg-scale ~/Pictures/image.jpg #для установки
echo «exec feh --bg-scale ~/Pictures/image.jpg» >> ~/.config/i3/config #для автоустановки при загрузке
```
Кинул коммит, проверь, работает ли.
Обновлять картинку по крону мне кажется лучшим решением чем таймер на 900 секунд в скрипте.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации