Вывод погоды в Conky (Настройка с помощью скриптов)

Любые разговоры которые хоть как-то связаны с тематикой форума

Модератор: Модераторы разделов

Sleeep
Сообщения: 104
Статус: crw-rw-rw-
ОС: Arch

Re: Вывод погоды в Conky

Сообщение Sleeep »

на awesome-wiki самый первый скрипт погоды - мне понравился)
здесь вроде не поминали еще

UPD: Пост Davinel
Стал чуть добрее - и ты уже цундере
Спасибо сказали:
Аватара пользователя
Dunris
Сообщения: 295
Статус: ...
ОС: Archlinux

Re: Вывод погоды в Conky

Сообщение Dunris »

Вот, выкладываю свой Perl-скрипт. Объективная критика с радостью принимается;) Уже довольно долго его не модифицировал, как знать, может он уже созрел? На скрине его вывод в панели Awesome.
Скрипт:

Код:

#! /usr/bin/perl # Код города $SITY=RSXX1366; if (@rss=`curl -s http://weather.yahooapis.com/forecastrss?p...Y&u=f`) { # Берем для действий нужную строку @line=split (/,/,$rss[32]); # Перевод из градусов по фаренгейту в градусы по цельсию @far=split (/ /,$line[1]); $temp=int(($far[1]-32)*5/9); # Информация о погоде $_=$line[0]; if (/Cloudy/){ $weather='Облачно'} if (/Rain/){ $weather='Дождливо'} if (/Mist/){ $weather='Туманно'} if (/Sunny/){ $weather='Солнечно'} if (/Clear/){ $weather='Ясно'} # Вывод результатов print "$weather, $temp°C "; } else { print 'Проверьте подключение '; } exit 0;


В rc.lua пишем:

Код:

Создаем виджет: -- Create a weather widget weather = widget({ type = "textbox", align = "right" }) function get_wea() local wea = awful.util.pread("/home/koc/.config/awesome/weather.pl") weather.text = " " .. wea .. "" end Далее в нужном месте конфига: get_wea() awful.hooks.timer.register(3600, function () get_wea() end)


Уфф... вроде все. Теперь остается только надеяться, что разработчики Авесома не будут изменять формат конфига в ближайшее время:)
Спасибо сказали:
Аватара пользователя
Grafin
Сообщения: 30
ОС: Gentoo

Re: Вывод погоды в Conky

Сообщение Grafin »

Хе) /me допилил погоду до состояния "мне нравится" как и коньки в целом)
Вот что получилось ^_____________^
Изображение
теперь заточен под шрифт Conky Weather.ttf
В скрипте
существенных изменений нет, только крошечные костылики из-за того, что я использовал два шрифта, один из которых не умел выводить цифры, в связи с чем в последнем скрипте вывод разделен в зависимости от требования (какой шрифт используется)

Код: Выделить всё

TEXT
${font ConkyWeather:size=50}${execi 10800 ~/.conky/conditions.sh}
${font FreeMono:size=16}${execi 10800 ~/.conky/pogodynka.sh say}, ${execi 10800 ~/.conky/pogodynka.sh grad}C

* в самом начале секции TEXT лучше вызвать скрипт "pogodinka.sh" чтобы он сформировал файл с данными для conditions, может получиться,
что conditions возьмет данные из файла, лежавшего в /tmp во время прошлого выключения компьютера, и в итоге вы увидите
иконку "с грозой в начале мая" и надпись под ней "Солнечно, + 25°С))"
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Спасибо сказали:
mudrik
Сообщения: 109

Re: Вывод погоды в Conky

Сообщение mudrik »

Dunris писал(а):
28.05.2009 15:26
По предложению butch`a решил попробовать прикрутить проверку на ошибки. Правда, использовать || нормально я так и не научился:) Пошел обходным путем. Ведь если у curl`а будут проблемы с отображением страницы, в качестве вывода он не передаст iconv ничего, значит cat запишет пустой файл. На этом я и строил дальнейшие действия. Изменил существующие скрипты и что в итоге.
.conkyrc:

Код:

${execi 3400 curl -s http://informer.gismeteo.ru/rss/27347.xml | iconv -f CP1251 -t UTF-8 | cat > $HOME/.conky/temp}${font weather:size=25}${execi 3600 $HOME/.conky/weather.sh}${font}${execi 3600 $HOME/.conky/test.sh}

Здесь собстно, изменений 2: время обновления файла немного уменьшено на всякий пожарный - 2 конки обновляет файл и вывод погоды секунда в секунду, значит неизвестно что обновиться все-таки первее:) Пусть лучше сначала перезальется файл а через несколько секунд обновится и вывод погоды... Вывод погоды проходит через небольшой скрипт, вот его содержание:

Код:

#! /bin/bash test=$(sed -n 1p $HOME/.conky/temp | awk '{print$1}') wea='Невозможно получить информацию' case $test in '<?xml') wea=$(sed -n 18p $HOME/.conky/temp | awk '{print$5" °C"$8" мм"$12,$13" м/с"}') ;; esac echo $wea exit

То бишь перед выводом проверяется имеет ли файл нужное содержание по первому слову. Если нет - вывод ошибки.
Ну скрипт Sleeep`a остался почти без изменений. Для тех кто в танке вот он (почти в оригинале:)):

Код:

#!/bin/bash cloud=$(sed -n 18p .conky/temp | awk '{print$1$2$3}' | cut -c14-) icon=' ' #Необходим weather.ttf case $cloud in 'ясно,безосадков,'|'малооблачно,безосадков,') icon='A' ;; 'облачно,безосадков,'|'пасмурно,безосадков,') icon='e' ;; 'облачно,снег'|'малооблачно,снег,') icon='e' ;; 'пасмурно,снег,') icon='k' ;; 'облачно,дождь,'|'малооблачно,дождь,') icon='h' ;; 'пасмурно,дождь,') icon='h' ;; 'облачно,ливень'|'пасмурно,ливень,') icon='g' ;; 'пасмурно,гроза,') icon='i' ;; esac echo $icon exit

Вот вроде и все. На закуску скрины:

могли бы вы поподробней описать, как это сделать? как второй скрипт называется?
Спасибо сказали:
mudrik
Сообщения: 109

Re: Вывод погоды в Conky

Сообщение mudrik »

вот что у меня выдет

bash-3.2$ conky
Conky: use_spacer should have an argument of left, right, or none. 'yes' seemsto be some form of 'true', so defaulting to right.
Conky: can't parse X color ''
Conky: forked to background, pid is 7689
bash-3.2$
Conky: desktop window (13b) is root window
Conky: drawing to desktop window
Conky: drawing to double buffer
iconv: недопустимая входная последовательность в позиции 621
sh: /home/admin/.conky/weather.sh: /bin/bash^M: bad interpreter: Нет такого файла или каталога
sh: /home/admin/.conky/test.sh: /bin/bash^M: bad interpreter: Нет такого файла или каталога
Спасибо сказали:
Аватара пользователя
Dunris
Сообщения: 295
Статус: ...
ОС: Archlinux

Re: Вывод погоды в Conky

Сообщение Dunris »

mudrik писал(а):
29.09.2009 22:21
могли бы вы поподробней описать, как это сделать? как второй скрипт называется?

Проверка на ошибки, которая описано в моем прошлом посте, не совсем верна:-[
Кстати, и страничка с гисметео, с которой берет информацию скрипт уже давно не работает (хотя хз, может уже починили?)
В общих чертах работало так: сам конки периодически сохраняет страничку в файл, вызывает скрипты - один отвечает за численное значение температуры, другой - выводит символы в соответствие со шрифтом weather. С помощью этого шрифта можно показывать всякие тучки, солнце и тд.
Я сейчас пользуюсь своим perl-скриптом. Проверка на ошибки там более правильна имхо, только с weather-шрифтом я не связывался...

P.S. Если что не понятно, попробую завтра объяснить я сейчас уж спать пойду:)
Спасибо сказали:
mudrik
Сообщения: 109

Re: Вывод погоды в Conky

Сообщение mudrik »

да, что-то при выполнении скрипта он ничего не выдаёт :(
Спасибо сказали:
Аватара пользователя
Dunris
Сообщения: 295
Статус: ...
ОС: Archlinux

Re: Вывод погоды в Conky

Сообщение Dunris »

mudrik писал(а):
30.09.2009 00:11
да, что-то при выполнении скрипта он ничего не выдаёт :(

Вообщем, не работало скорее всего потому, что gismeteo переделали страничку, с которой бралась погода. Кстати, она наконец обновляется:)
Вот 2 подогнанных под новую страницу скрипта.
Сам срипт:

Код: Выделить всё

#!/bin/bash

# Код города
SITY=27347
temp=$(curl -s http://informer.gismeteo.ru/rss/$SITY.xml | sed -n 18p | awk '{print $3"°C",$6" мм",$9,$10,$11 "м/с"}')
if [[ -n $temp ]]; then
echo $temp
else
echo "Проверьте подключение..."
fi
exit


Иконка:

Код: Выделить всё

#!/bin/bash

# Код города
SITY=27347
cloud=$(curl -s http://informer.gismeteo.ru/rss/27347.xml | sed -n 18p | awk '{print$1}' | cut -c14-)
icon=' '
#Необходим weather.ttf
case $cloud in
'Ясно,')
   icon='A'
;;
'Безосадков,')
   icon='e'
;;
'Снег,')
   icon='e'
;;
'Пасмурно,')
   icon='k'
;;
'Облачно,'|'Малооблачно,')
   icon='h'
;;
'Ливень,')
   icon='g'
;;
'Гроза,')
   icon='i'
;;
esac
echo $icon
exit

Установите шрифт weather.ttf, замените код города на свой - должно работать. Сам конки не юзаю сейчас, проверял в терминале - скрипты выполняются.
P.S. от промежуточного файла отказался... впринципе особой разницы думаю нет - от загрузки нескольких килобайт трафик особо не пострадает, да и по скорости почти то же самое.
Спасибо сказали:
mudrik
Сообщения: 109

Re: Вывод погоды в Conky

Сообщение mudrik »

а как там узнать код города, что-то так и не нашел? к примеру тверь?

и через сколько обновляется инфа о погоде? и как прогноз на следующий день организовать чтоб показывался?

также как настроить время обновления? а то когда комп включаю инета нету и он не кажет..

зы. спасибо большое за скрипт!
Спасибо сказали:
Аватара пользователя
Dunris
Сообщения: 295
Статус: ...
ОС: Archlinux

Re: Вывод погоды в Conky

Сообщение Dunris »

mudrik писал(а):
30.09.2009 18:32
а как там узнать код города, что-то так и не нашел? к примеру тверь?

и через сколько обновляется инфа о погоде? и как прогноз на следующий день организовать чтоб показывался?

также как настроить время обновления? а то когда комп включаю инета нету и он не кажет..

зы. спасибо большое за скрипт!

Для Твери - 27402
Для информеров у них видимо другая нумерация городов. В разделе информеров выбрал Тверь, "получить html код" - там и увидел.
Ко времени обновления срипт отношения не имеет вовсе. Когда его вызовите - тогда и обновит. Организуется это например так (в .conkyrc, скрипт погоды - weather.sh, для иконки - icon.sh):

Код: Выделить всё

${font weather:size=72}${execi 3600 bash $HOME/.conky/icon.sh}${font}
${execi 3600 bash $HOME/.conky/weather.sh}

Для этого примера скрипты должны лежать в /home/user/.conky

П.С. чтобы настроить показ погоды на следующий день нужно править weather.sh. Как - можно разными путями. Если заинтересовались - погуглите по словам "bash-скриптинг", "sed", "awk".
Спасибо сказали:
mudrik
Сообщения: 109

Re: Вывод погоды в Conky

Сообщение mudrik »

этой переменной execi 3600 означает через какое время скрипт будет перезагружаться?
Спасибо сказали:
Yrii
Сообщения: 68

Re: Вывод погоды в Conky

Сообщение Yrii »

да
Спасибо сказали:
Аватара пользователя
AlexYeCu
Сообщения: 1137
ОС: fedora

Re: Вывод погоды в Conky

Сообщение AlexYeCu »

Так и не смог ни нормально распарсить xml в bash`е, ни ещё как-то запихнуть погоду в коньки. Написал флэшку, кот. таскает погоду с гисметео, через gnash прицепил к bash-скрипту…
Спасибо сказали:
mudrik
Сообщения: 109

Re: Вывод погоды в Conky

Сообщение mudrik »

всё работает нормально. см. скрин в картинках рабочих столов за октябрь.
Спасибо сказали:
null3d0
Сообщения: 0
ОС: Ubuntu Linux

Re: Вывод погоды в Conky

Сообщение null3d0 »

у меня тут беда , не могу понять в чем проблема (наверно в моих кривых руках )

Изображение
conky-weather:

Код: Выделить всё

#!/bin/bash

# Код города
SITY=29430
temp=$(curl -s http://informer.gismeteo.ru/rss/$SITY.xml | sed -n 18p | awk '{print $3"°C",$6" мм",$9,$10,$11 "м/с"}')
if [[ -n $temp ]]; then
echo $temp
else
echo "Проверьте подключение..."
fi
exit


Код: Выделить всё

#!/bin/bash

# Код города
SITY=27347
cloud=$(curl -s http://informer.gismeteo.ru/rss/27347.xml | sed -n 18p | awk '{print$1}' | cut -c14-)
icon=' '
#Необходим weather.ttf
case $cloud in
'Ясно,')
   icon='A'
;;
'Безосадков,')
   icon='e'
;;
'Снег,')
   icon='e'
;;
'Пасмурно,')
   icon='k'
;;
'Облачно,'|'Малооблачно,')
   icon='h'
;;
'Ливень,')
   icon='g'
;;
'Гроза,')
   icon='i'
;;
esac
echo $icon
exit


.conkyrc

Код: Выделить всё

# conky configuration


# set to yes if you want Conky to be forked in the background
background no

# X font when Xft is disabled, you can pick one with program xfontsel
#font 5x7
#font 6x10
#font 7x13
#font 8x13
#font 9x15
#font *mintsmild.se*
#font -*-*-*-*-*-*-34-*-*-*-*-*-*-*


# Use Xft?
use_xft yes

# Xft font when Xft is enabled
#xftfont Bitstream Vera Sans Mono:size=8
xftfont Terminus:size=6

# Text alpha when using Xft
xftalpha 0.8

# Print everything to console?
# out_to_console no

# mail spool
#mail_spool $MAIL

# Update interval in seconds
update_interval 1.0

# This is the number of times Conky will update before quitting.
# Set to zero to run forever.
total_run_times 0

# Create own window instead of using desktop (required in nautilus)
own_window yes
own_window_type override
own_window_transparent yes
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager

# Use double buffering (reduces flicker, may not work for everyone)
double_buffer yes

# Minimum size of text area
minimum_size 1000 5

# Draw shades?
draw_shades yes

# Draw outlines?
draw_outline no

# Draw borders around text
draw_borders no

# Stippled borders?
stippled_borders 8

# border margins
border_margin 4

# border width
border_width 1

# Default colors and also border colors
default_color white
default_shade_color black
default_outline_color white

# Text alignment, other possible values are commented
#alignment top_left
alignment top_right
#alignment bottom_left
#alignment bottom_right

# Gap between borders of screen and text
# same thing as passing -x at command line
gap_x 450
gap_y 1

# Subtract file system buffers from used memory?
no_buffers yes

# set to yes if you want all text to be in uppercase
uppercase no

# number of cpu samples to average
# set to 1 to disable averaging
cpu_avg_samples 2

# number of net samples to average
# set to 1 to disable averaging
net_avg_samples 2

# Force UTF8? note that UTF8 support required XFT
override_utf8_locale no


# Add spaces to keep things from moving about? This only affects certain objects.
use_spacer yes
#Note: doesn't work in conky 1.2 =(

# mldonkey_hostname Hostname for mldonkey stuff, defaults to localhost
# mldonkey_port Mldonkey port, 4001 default
# mldonkey_login Mldonkey login, default none
# mldonkey_password Mldonkey password, default none


# Possible variables to be used:
#
# Variable Arguments Description

# addr (interface) IP address for an interface
# acpiacadapter ACPI ac adapter state.
# acpifan ACPI fan state
# acpitemp ACPI temperature.
# adt746xcpu CPU temperature from therm_adt746x
# adt746xfan Fan speed from therm_adt746x
# alignr (num) Right-justify text, with space of N
# alignc Align text to centre
# battery (num) Remaining capasity in ACPI or APM
# battery. ACPI battery number can be
# given as argument (default is BAT0).
# buffers Amount of memory buffered
# cached Amount of memory cached
# color (color) Change drawing color to color
# cpu CPU usage in percents
# cpubar (height) Bar that shows CPU usage, height is
# bar's height in pixels
# cpugraph (height),(width) (gradient colour 1) (gradient colour 2)
# CPU usage graph, with optional colours in hex,
# minus the #.
# downspeed net Download speed in kilobytes
# downspeedf net Download speed in kilobytes with one
# decimal
# downspeedgraph net (height),(width) (gradient colour 1) (gradient colour 2)
# Download speed graph, colours defined in
# hex, minus the #.
# exec shell command Executes a shell command and displays
# the output in conky. warning: this
# takes a lot more resources than other
# variables. I'd recommend coding wanted
# behaviour in C and posting a patch :-).
# execbar shell command Same as exec, except if the first value
# return is a value between 0-100, it
# will use that number for a bar.
# The size for the bar is currently fixed,
# but that may change in the future.
# execgraph shell command Same as execbar, but graphs values
# execi interval, shell command
# Same as exec but with specific interval.
# Interval can't be less than
# update_interval in configuration.
# font font Specify a different font. Only applies
# to one line.
# fs_bar (height), (fs)Bar that shows how much space is used on
# a file system. height is the height in
# pixels. fs is any file on that file
# system.
# fs_free (fs) Free space on a file system available
# for users.
# fs_free_perc (fs) Free percentage of space on a file
# system available for users.
# fs_size (fs) File system size
# fs_used (fs) File system used space
# hr (height) Horizontal line, height is the height in
# pixels
# i2c (dev), type, n I2C sensor from sysfs (Linux 2.6). dev
# may be omitted if you have only one I2C
# device. type is either in (or vol)
# meaning voltage, fan meaning fan or
# temp/tempf (first in C, second in F)
# meaning temperature. n is number of the
# sensor. See /sys/bus/i2c/devices/ on
# your local computer.
# if_running (process) if PROCESS is running, display
# everything if_running and the matching $endif
# if_existing (file) if FILE exists, display everything between
# if_existing and the matching $endif
# if_mounted (mountpoint) if MOUNTPOINT is mounted, display everything between
# if_mounted and the matching $endif
# else Text to show if any of the above are not true

# linkstatus (interface) Get the link status for wireless connections
# loadavg (1), (2), (3) System load average, 1 is for past 1
# minute, 2 for past 5 minutes and 3 for
# past 15 minutes.
# machine Machine, i686 for example
# mails Mail count in mail spool. You can use
# program like fetchmail to get mails from
# some server using your favourite
# protocol. See also new_mails.
# mem Amount of memory in use
# membar (height) Bar that shows amount of memory in use
# memmax Total amount of memory
# memperc Percentage of memory in use
#
# metar_ob_time
# metar_temp
# metar_tempf Temp in F
# metar_windchill
# metar_dew_point There are a bunch of these
# metar_rh and they are self-explanatory
# metar_windspeed
# metar_winddir
# metar_swinddir
# metar_cloud
# metar_u2d_time
#
# ml_upload_counter total session upload in mb
# ml_download_counter total session download in mb
# ml_nshared_files number of shared files
# ml_shared_counter total session shared in mb, buggy
# in some mldonkey versions
# ml_tcp_upload_rate tcp upload rate in kb/s
# ml_tcp_download_rate tcp download rate in kb/s
# ml_udp_upload_rate udp upload rate in kb/s
# ml_udp_download_rate udp download rate in kb/s
# ml_ndownloaded_files number of completed files
# ml_ndownloading_files number of downloading files
#
# mpd_artist Artist in current MPD song
# (must be enabled at compile)
# mpd_album Album in current MPD song
# mpd_bar (height) Bar of mpd's progress
# mpd_bitrate Bitrate of current song
# mpd_status Playing, stopped, et cetera.
# mpd_title Title of current MPD song
# mpd_vol MPD's volume
# mpd_elapsed Song's elapsed time
# mpd_length Song's length
# mpd_percent Percent of song's progress
# new_mails Unread mail count in mail spool.
# nodename Hostname
# outlinecolor (color) Change outline color
# pre_exec shell command Executes a shell command one time before
# conky displays anything and puts output
# as text.
# processes Total processes (sleeping and running)
# running_processes Running processes (not sleeping),
# requires Linux 2.6
# shadecolor (color) Change shading color
# stippled_hr (space), Stippled (dashed) horizontal line
# (height)
# swapbar (height) Bar that shows amount of swap in use
# swap Amount of swap in use
# swapmax Total amount of swap
# swapperc Percentage of swap in use
# sysname System name, Linux for example
# offset pixels Move text over by N pixels
# tail logfile, lines (interval)
# Displays last N lines of supplied text
# text file. If interval is not supplied,
# Conky assumes 2x Conky's interval.
# Max of 30 lines.
# Max of 30 lines can be displayed.
# time (format) Local time, see man strftime to get more
# information about format
# totaldown net Total download, overflows at 4 GB on
# Linux with 32-bit arch and there doesn't
# seem to be a way to know how many times
# it has already done that before conky
# has started.
# top type, num This takes arguments in the form:
# top
# Basically, processes are ranked from
# highest to lowest in terms of cpu
# usage, which is what represents.
# The types are: "name", "pid", "cpu", and
# "mem".
# There can be a max of 10 processes listed.
# top_mem type, num Same as top, except sorted by mem usage
# instead of cpu
# totalup net Total upload, this one too, may overflow
# updates Number of updates (for debugging)
# upspeed net Upload speed in kilobytes
# upspeedf net Upload speed in kilobytes with one
# decimal
# upspeedgraph net (height),(width) (gradient colour 1) (gradient colour 2)
# Upload speed graph, colours defined in
# hex, minus the #.
# uptime Uptime
# uptime_short Uptime in a shorter format
#
# seti_prog Seti@home current progress
# seti_progbar (height) Seti@home current progress bar
# seti_credit Seti@hoome total user credit


# variable is given either in format $variable or in ${variable}. Latter
# allows characters right after the variable and must be used in network
# stuff because of an argument

# stuff after 'TEXT' will be formatted on screen

TEXT



${offset 240}${color slate grey}UpTime: ${color }$uptime
${offset 240}${color slate grey}CPU:${color } $cpu% ${acpitemp}C
${offset 240}${cpugraph 20,130 000000 ffffff}
${offset 240}${color slate grey}Load: ${color }$loadavg
${offset 240}${color slate grey}Processes: ${color }$processes
${offset 240}${color slate grey}Running: ${color }$running_processes

${offset 240}${color slate grey}Highest CPU:
${offset 240}${color #ddaa00} ${top name 1}${top_mem cpu 1}
${offset 240}${color lightgrey} ${top name 2}${top cpu 2}
${offset 240}${color lightgrey} ${top name 3}${top cpu 3}
${offset 240}${color lightgrey} ${top name 4}${top cpu 4}

${offset 240}${color slate grey}Highest MEM:
${offset 240}${color #ddaa00} ${top_mem name 1}${top_mem mem 1}
${offset 240}${color lightgrey} ${top_mem name 2}${top_mem mem 2}
${offset 240}${color lightgrey} ${top_mem name 3}${top_mem mem 3}
${offset 240}${color lightgrey} ${top_mem name 4}${top_mem mem 4}

${offset 240}${color slate grey}MEM: ${color } $memperc% $mem/$memmax
${offset 240}${membar 3,100}
${offset 240}${color slate grey}SWAP: ${color }$swapperc% $swap/$swapmax
${offset 240}${swapbar 3,100}

${offset 240}${color slate grey}ROOT: ${color }${fs_free /}/${fs_size /}
${offset 240}${fs_bar 3,100 /}
${offset 240}${color slate grey}HOME: ${color }${fs_free /home}/${fs_size /home}
${offset 240}${fs_bar 3,100 /home}

${offset 240}${color slate grey}NET:
${offset 240}${color}Up: ${color }${upspeed eth0} k/s
${offset 240}${upspeedgraph eth0 20,130 000000 ffffff}
${offset 240}${color}Down: ${color }${downspeed eth0}k/s${color}
${offset 240}${downspeedgraph eth0 20,130 000000 ffffff}
${color white}${font weather:size=5}${execi 3600 $HOME/.conky/conky-weather.sh}${font} ${color white}${execi 3600 sed -n 18p .conky/temp | awk '{print"\n",$5"°C\n",$8"мм\n",$12,$13"м/с"}



помогите не могу понять в чем загвоздка :)
Спасибо сказали: