Что необходимо получить и изучить, чтобы начать получать прогноз погоды на 5 дней?  Во-первых,  определиться с поставщиком погодных данных. Во-вторых, разобрать, в  каком виде поставляются данные и как мы их можем собирать и отображать с  помощью языка программирования C#.  В качестве поставщика погодных данных я выбрал сервис Accuweather.  В бесплатной учётной записи на данный момент можно сделать 50 запросов в  сутки. Этого достаточно, чтобы можно было посмотреть данные о погоде  несколько раз в сутки (даже можно поделиться с другом!).  Для регистрации необходимо пройти по ссылке: https://developer.accuweather.com. После регистрации нужно нажать на кнопку "Add a new App" и заполнить небольшую анкету. По итогу, вы получите ваш личный ApiKey с помощью которого в дальнейшем можно получать обновлённые данные.  Далее начинается самое интересно. Будем разбирать, как и в каком виде приходит информация и что нужно, чтобы получать погодные данные по конкретному городу.  В разделе "API Reference" самым первым списке установлен раздел "Locations API" с него и начнём. Забегая вперёд, скажу сразу, нельзя так просто взять и отправить в GET запросе название города. Для этого, нам нужно сперва получить Location Key конкретного города. Это значение представлено в виде цифр и уникально для каждого города.  Итак, в разделе Locations API нас интересует метод City Search. Читаем краткое описание к нему: Returns information for an array of cities that match the search text. Сразу берём себе на заметку, что нам возвращается массив с названиями городов.  В странице для запроса вставляем ApiKey, название интересующего города и ставим RU, если хотим получать локализованные данные.  После нажатия на кнопку "Send this request" ниже на странице вы получите результат выполнения. В моём случае он выглядит так: Как видим, нам вернулся массив из одного города. Как будет выглядеть результат, если городов с одинаковым названием два и больше: Как видно, нам вернулся массив уже из большего количества городов. Как я говорил раньше, нужно получить уникальное значение Key, чтобы получать данные о погоде нужного нам города. Это значение установлено вторым в каждом городе. Итак, представление о том, с чем нам нужно работать с начала есть. Теперь, осталось переложить всё в C#. Для большего интереса, я буду программировать на языке C# и используя редактор VSCodium. Всё это работает на OpenSuSe Leap 15.2. Для начала, чтобы не заморачиваться каждый раз со вводом очень длинного ApiKey, реализуем метод, который запишет ApiKey на диск и ещё один метод, который этот ApiKey будет восстанавливать в памяти. Класс, который описывает UserApi: Далее, создаю класс, который будет реализовывать методы чтения и записи: Да, мне лично XML кажется более читаемым и удобным, поэтому все данные, которые утилита будет хранить на компьютере, она будет записывать в виде XML. Сделано. Дальше, начинается та часть работы, которая требует внимательного подхода к ней. Нужно реализовать класс, который будет соответствовать получаемому Json объекту. Любая ошибка в переносе может привести к тому, что утилита будет падать с ошибками. Итак, что мы видим в верхушке получаемого объекта: Мы видим версию API в виде числа, уникальный ключ города в виде числа, тип населённого пункта в виде строки, Ранг (не смог найти, что это значит) в виде числа, оригинальное и локализованное название города в виде строки и почтовый индекс. Почтовый индекс вернулся пустой, поэтому, беру строку из-за её универсальности.  Следовательно, реализовываем эту часть так: Так же, в json объекте присутствует и другие сведения об искомом городе: Поэтому, там же реализуем классы для Region, Country, AdministrativeArea примерно так: Итоговый класс должен выглядеть примерно так: Дальше, описываем класс, который реализует метод получения списка городов: Реализую метод, который выводит  на экран полученный список: Метод, который реализует запись списка со всеми отслеживаемыми городами на диск (чтобы при повторном запуске не тратить драгоценный APIKey) Отлично. Всё необходимое сделано для того, что бы перейти к следующей части реализации работы утилиты - получение информации и погоде на следующие 5 дней. Поскольку данные о погоде это отдельный Json объект, то по аналогии с тем, как была разобрана информация о искомом городе, нужно разобрать информацию о погоде в этом городе. Accuweather может предоставить информацию на 1 текущий день, 5, 10 и 15 дней. В ответ будет приходить json объект одного и того же типа. Разница будет только в Get запросе и количестве возвращаемых дней. Пример того, что возвращается в json объекте: Следовательно, класс должен выглядеть примерно так: Исходим из того, что пользователь может добавить (и уже добавил) один или несколько городов. Для того, чтобы показать погоду по интересующему городу, сперва выведем на экран все города, какие уже есть: А затем получаю информацию о погоде: Таким образом будет получена и напечатана информация о погоде на следующие 5 дней. В заключении: в этой статье я показал основные моменты, которые были необходимы для того, чтобы данные о погоде были показаны. Полный исходный код утилиты вы сможете найти на ГитЛаб и ГитХаб. Так же, я буду рад любой критике по делу и совету от старших программистов. https://gitlab.com/rammfire/habraweatherappconsole https://github.com/rammfire/habraweatherappconsole Спасибо за уделённое время, удачи! Системный администратор