для podarok66:
Не понял как можно подставить в строку fetch не название местности, а её координаты ?
Погода в терминале: ну совсем не нужное, но иногда хочется чего-то этакого...
Правила форума
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
-
- Сообщения: 1657
- Зарегистрирован: 15 сен 2017, 09:03
- podarok66
- Модератор
- Сообщения: 4402
- Зарегистрирован: 11 фев 2012, 18:49
- Откуда: МО
http://wttr.in/:help Так вот же man. Что не получается?
Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
-
- Сообщения: 1657
- Зарегистрирован: 15 сен 2017, 09:03
Спасибо, разобрался. А скобки для координат в fetch http://wttr.in/[25.88984877637389,23.87025117874146] надо экранировать слешами ?
фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
viewtopic.php?f=14&t=13947
- podarok66
- Модератор
- Сообщения: 4402
- Зарегистрирован: 11 фев 2012, 18:49
- Откуда: МО
Вот честно, не пробовал... В bash разок запустил, а вот в ROS не стал...
Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
-
- Сообщения: 1657
- Зарегистрирован: 15 сен 2017, 09:03
Спасибо, все работает. Квадратные скобки при указании координат через запятую вообще не нужны.
Всё оказывается есть в http://wttr.in/:help
Всё оказывается есть в http://wttr.in/:help
фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
viewtopic.php?f=14&t=13947
-
- Сообщения: 1657
- Зарегистрирован: 15 сен 2017, 09:03
С этого ресурса погоду также можно получать в формате json.
Пробовал - работает. В переменную попадает огромный массив вложенных данных. Тип переменной именно array, проверял.
Получаем вот такой массив данных:
Наверное это многомерный ключевой массив ... Как извлечь из этой громадины требуемые данные ? Например, давление текущее хочу получить ... Пробовал так - не работает. Где не прав в ключе ?
:log info [:typeof $weatherj1]
:log info ((($weatherj1->"data")->"current_condition")->"pressure")
Пробовал - работает. В переменную попадает огромный массив вложенных данных. Тип переменной именно array, проверял.
Код: Выделить всё
:do {
:global weatherj1 [tool fetch url=("http://wttr.in/"."26.88984877637389,38.87025117874146"."\?format=j1") as-value output=user];
:delay 5s;
} on-error={
:global weatherj1 "<- The weather is smiling at us ->"
}
:global weatherj1;
:log info $weatherj1;
Код: Выделить всё
data={
"current_condition": [
{
"FeelsLikeC": "16",
"FeelsLikeF": "60",
"cloudcover": "0",
"humidity": "100",
"localObsDateTime": "2020-06-19 12:18 AM",
"observation_time": "09:18 PM",
"precipMM": "0.0",
"pressure": "1019",
"temp_C": "15",
"temp_F": "59",
"uvIndex": 1,
"visibility": "10",
"weatherCode": "113",
"weatherDesc": [
{
"value": "Clear"
}
],
"weatherIconUrl": [
{
"value": ""
}
],
.... и еще кучищу элементов массива ...
;downloaded=44;status=finished
:log info [:typeof $weatherj1]
:log info ((($weatherj1->"data")->"current_condition")->"pressure")
фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
viewtopic.php?f=14&t=13947
-
- Сообщения: 164
- Зарегистрирован: 23 июл 2013, 18:47
Начну и закончу с замечаний
1- твой код не копируемый, так как он не отображается в обёртке code через кнопку </>
то есть без потерь в адресе его на прямую не извлечь
Если вы его заворачивали в code то такие движки форума как этот требуют трёх пустых строк после [/code]
2- по самой ссылке идёт много барахла. Надо смотреть синтаксис запросов - 99% движок wttr даст запросить более конкретизируемые данные - вплоть до одного значения.
3- json это не массив :)
По правильному нужен целый скрипт, который будет парсить json в массив.
По плохому - сверху идёт первый элемент массива "data" который содержит строку, можно поискать нужное значение через :find
1- твой код не копируемый, так как он не отображается в обёртке code через кнопку </>
то есть без потерь в адресе его на прямую не извлечь
Если вы его заворачивали в code то такие движки форума как этот требуют трёх пустых строк после [/code]
2- по самой ссылке идёт много барахла. Надо смотреть синтаксис запросов - 99% движок wttr даст запросить более конкретизируемые данные - вплоть до одного значения.
3- json это не массив :)
По правильному нужен целый скрипт, который будет парсить json в массив.
По плохому - сверху идёт первый элемент массива "data" который содержит строку, можно поискать нужное значение через :find
Код: Выделить всё
:log info [:len ($weatherj1->"data")]
:log info [:typeof ($weatherj1->"data")]
-
- Сообщения: 164
- Зарегистрирован: 23 июл 2013, 18:47
Вот запрос того чего просишь:
Опция format задаёт написание любой последовательности на стороне сервера, вам лишь остаётся принять её :)
сам синтаксис хорошо описан здесь
Код: Выделить всё
:do {
:global weatherj1 [tool fetch url=("http://wttr.in/moscow?format=\"%p\"") as-value output=user];
:delay 5s;
} on-error={
:global weatherj1 "<- The weather is smiling at us ->"
}
:global weatherj1;
:set $weatherj1 ($weatherj1->"data")
:log info $weatherj1;
Опция format задаёт написание любой последовательности на стороне сервера, вам лишь остаётся принять её :)
сам синтаксис хорошо описан здесь
-
- Сообщения: 1657
- Зарегистрирован: 15 сен 2017, 09:03
1. Товарищ, вы как будто из другого мира, нельзя понять как правило ничего из того что Вы пишите. И давно ли мы перешли с Вами на ты ?Начну и закончу с замечаний
1- твой код не копируемый, так как он не отображается в обёртке code через кнопку </>
то есть без потерь в адресе его на прямую не извлечь
Если вы его заворачивали в code то такие движки форума как этот требуют трёх пустых строк после [/code]
2- по самой ссылке идёт много барахла. Надо смотреть синтаксис запросов - 99% движок wttr даст запросить более конкретизируемые данные - вплоть до одного значения.
3- json это не массив :)
По правильному нужен целый скрипт, который будет парсить json в массив.
По плохому - сверху идёт первый элемент массива "data" который содержит строку, можно поискать нужное значение через :find
2. Это был никакой не код для копирования, а просто я так выделил данные для чтения на форуме.
3. Мне нужно получить именно данные в переменную в виде полного набора данных json, так как их отдает ресурс, что это такое я знаю, товарищ ! не нужно приводить ссылки где и что можно найти по этому ресурсу, вы перечитайте этот пост там всё уже расписано было, зачем Вы всё повторяете ? Мы же уже все прочитали сами, раз к Вам за помощью обращаемся ...
4. Я попросил Вас помочь, выудить из того что я дал определенные данные. То, что можно сузить запрос это понятно, но мне это не нужно. Мне нужно один раз обратиться к серверу с помощью фетч, всё считать в виде json и из него взять. json - это не массив, согласен, но он получен был в переменную whether не мной, заметьте, а инструментом fetch и имеет тип :array - значит это массив, и из него данные надо извлекать по ключам.
Не надо тут никого критиковать, Вас просили помочь - можете, помогите, не можете - не надо.
5. Видимо Вы действительно настоящий программист, потому, что голова у Вас завернута совсем в другую сторону, Вы мыслите какими-то другими категориями, чем обычные люди. Больше обращаться за помощью не буду, так как физики должны общаться с физиками, а лирики с лириками. Обидеть не хотел, но Вы абсолютно с другой планеты, чем я
По делу - попробую использовать скрипт Чупакабры https://habr.com/ru/post/337978/
Думаю, он как раз то что надо в моем случае
фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
viewtopic.php?f=14&t=13947
-
- Сообщения: 164
- Зарегистрирован: 23 июл 2013, 18:47
Уж извините если чем то обидел.1. Товарищ, вы как будто из другого мира, нельзя понять как правило ничего из того что Вы пишите. И давно ли мы перешли с Вами на ты ?
Я попросил Вас помочь, выудить из того что я дал определенные данные.
Не совсем - точнее совсем - я не программист, я автоэлектрик, просто современные автомобили стали настолько сложны, что без знания программирования, уже не возможно в них сунутся. Для подключения к авто приходится разбираться в IP, масках, маршрутах, и т.д. так как бортовая электроника стала сидеть на чистом TCP/IP. А в виде диагностических приборов в чистую можно использовать любой роутер.5. Видимо Вы действительно настоящий программист, потому, что голова у Вас завернута совсем в другую сторону, Вы мыслите какими-то другими категориями, чем обычные люди.
это правильное решение, я об этом вам намекнул. Именно намекнул, потому-что в моей профессии существует правило- "дать начисто списать, значит навредить". И 20 лет в профессии дают о себе знать, очень сложно себя перестроить. А вот занимаясь программированием принято давать готовые решения, но давать их надо в правильном написании, а я это не готов, т.к. ваш код мне не нравится семантикой, вижу что его можно сделать более наглядно. И замечание я вам сделал не просто так. По тому что в среде программистов существуют свои правила к созданию вопросов. и мои вопросы много раз оставались без ответов, пока я правильно не научился создавать форматированный текст на том же stackoverflow.По делу - попробую использовать скрипт Чупакабры
А теперь по факту:
У тебя ("у вас" если вам так более удобно) есть не до понимание. Массив образуется не после запроса fetch, а после аргумента as-value, который возвращает результат работы fetch как массив. В ключе data содержится результат возврата с сервера в виде str. Это и есть то что надо обрабатывать. Значение data вам надо отправить на скрипт парсера, который превратит строку в массив (структуру) и потом уже можно будет обращаться с аргументам по ключам.но он получен был в переменную whether не мной, заметьте, а инструментом fetch и имеет тип :array - значит это массив, и из него данные надо извлекать по ключам.
Я так понимаю, что вы не преследуете конкретной цели, а берёте данный пример в качестве самообразования. И тут возникает недопонимание, т.к. автор ресурса wttr всё уже сделал за вас, и парсить ответ сервера не требуется, по этому я и не понял что вам нужно.