Опять чинил PogodaStatusBar

Сегодня участвовал в довольно скучной видеоконференции. Моё участие там было хоть и необходимое, но небольшое. А чтобы не одуреть от безделья, пока я слушал всю эту скуку, решил чем-то занять руки. Давно хотел починить свой плагин для «Саблайма» «PogodaStatusBar», этим и занялся.

Строка состояния редактора кода: город Казань, температура 29°C, иконка солнца с облаком, число 3, зелёный индикатор, строка 127, столбец 1.
Внешний вид плагина на настоящий момент

Плагин в строке статуса показывает текущую погоду и пробки в вашем городе. Много лет данные для этого я брал с неофициального урла «Яндекса», но компания решила коммерциализировать погоду и, сколько я не искал новый способ получить её бесплатно, так и не нашёл.

Пробки, кстати, тоже перестали нормально работать. Когда-то регион определялся автоматически, но это сломали. Я чинил это через парсинг страницы погоды, но теперь и это не работает — «Яндекс» борется с автоматическими роботами. Поэтому пришлось искать другой способ.

Я перебрал несколько малоизвестных сервисов, пока, наконец, не увидел, что страница yandex.ru/tune/geo/ содержит в себе необходимый номер. Этого хватило, чтобы починить показ пробок.

С «Гисметео» пришлось повозиться. Не нашёл официальную информацию о каких-либо АПИ, которые можно вызвать без токена, но внутри погодного плагина для браузера нашёлся адрес services.gismeteo.ru/inform-service/inf_chrome/forecast. В нём есть всё что нужно — текущая температура и закодированная иконка погоды.

Определить номер города в формате «Гисметео» помогает сервис www.gismeteo.ru/rmq/search/{название}/1/, куда я подставляю название, полученное от «Яндекс.Пробок» — там он возвращается вместе с остальными данными.

Оставалось только расшифровать иконку погоды. В документации есть часть описания (остаток можно понять, скачав с «Гисметео» значки погоды), выглядит всё несложно. Например, d.r3 означает «день» (day) и «дождь максимальной интенсивности» (rain 3).

Поскольку у меня Юникод, в нём есть не все необходимые значки, я сделал вот такой объект, содержащий признаки, которые позволяют мне выбрать какую иконку показать:

_icons = {
    "🌞": {"d"}, # day
    "🌙": {"n"}, # nite
    "☁️": {"n", "c"}, # night, cloud
    "🌧": {"rs", "c", "r"}, # rain+snow, cloud, rain
    "🌤": {"d", "c"}, # day, cloud
    "🌦": {"d", "r"}, # day, rain
    "🌩️": {"c", "st"}, # #day, storm
    "⛈️": {"c", "st", "r"}, # cloud, storm, rain
    "🌨": {"c", "s"}, # cloud, storm
    "💨": {"mist"}, # mist
    "⚡️": {"st"}, # storm
}

И вот такой простой алгоритм для выбора иконки:

def _getStatus(self, coded_weather):
    codes = {x.strip("0123456789") for x in coded_weather.split(".")}

    max_icon = None
    max_score = 0

    for icon, code in self._icons.items():
        result = codes & code
        score = sum(len(x) for x in result)
        if score > max_score:
            max_icon, max_score = icon, score

    return max_icon

Идея простая — чем больше значков совпало, тем лучше; если совпал значок с более длинным названием (st, mist), считаем его более конкретным и важным.

4 комментария

Штурвал Бауэра

Продолжаю потихоньку описывать то, что удалось подержать в руках в музее села Куралово. На этот раз это штурвал. Он совсем небольшой, диаметр точно оценить не берусь, но что-то около 30—35 сантиметров.

Штурвал совсем хлипкий, держать его в руках было страшновато — вдруг развалится. Я это обнаружил уже после того, как взял, иначе бы оставил его в покое. На штурвале неплохо видно табличку, хотя некоторые слова едва угадываются. Погадав на буквах, я выяснил, что там написано — «Fr. W. Bauer, Steuerradsfabrik, Vegesack (Bremen)».

В 1906 году Фридрих Вильгельм Бауэр основал в районе Фегезак города Бремен столярную мастерскую. Находилась она по адресу Везерштрассе, № 8/9.

Со временем мастерская разрослась и стала единственной в Германии фабрикой по производству штурвалов и приборов управления. Со времени своего существования фабрика выпустила более ста тысяч штурвалов, в том числе для легендарных быстроходных лайнеров «Бремен» и «Европа» компании «Северогерманский Ллойд».

В 1966 году завод был заброшен.

Деревянное рулевое колесо корабля с шестью рукоятками и металлической центральной частью, установленное на подставке перед размытым фоном с морскими мотивами.
Штурвал с полустёртым шильдиком «Fr. W. Bauer, Steuerradsfabrik, Vegesack (Bremen)»

2 комментария