{
    "version": "https:\/\/jsonfeed.org\/version\/1.1",
    "title": "Блоги: заметки с тегом pogodastatusbar",
    "_rss_description": "Автоматически собираемая лента заметок, написанных в блогах на Эгее",
    "_rss_language": "ru",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": false,
    "_itunes_explicit": "no",
    "home_page_url": "https:\/\/blogengine.ru\/blogs\/tags\/pogodastatusbar\/",
    "feed_url": "https:\/\/blogengine.ru\/blogs\/tags\/pogodastatusbar\/json\/",
    "icon": false,
    "authors": [
        {
            "name": "Илья Бирман",
            "url": "https:\/\/blogengine.ru\/blogs\/",
            "avatar": false
        }
    ],
    "items": [
        {
            "id": "133616",
            "url": "https:\/\/bolknote.ru\/all\/vozvraschenie-plagina-pogoda-status-bar\/",
            "title": "Возвращение плагина Pogoda​Status​Bar",
            "content_html": "<p>У меня есть традиция — время от времени чинить мой старенький и порядком уже поднадоевший мне плагин для редактора «Саблайм 3». Плагин называется <a href=\"https:\/\/github.com\/bolknote\/PogodaStatusBar\"><i>Pogoda​Status​Bar<\/i><\/a>, потому что он когда-то показывал пробки и погоду с сервиса «Яндекс.Погоды».<\/p>\n<p>Эпоха бесплатных сервисов кончилась и «Яндекс» постепенно стал закрывал все те ходы, которыми я пользовался, чтобы получать эти данные. Я искал новые, но в какой-то момент дрогнул и <a href=\"https:\/\/bolknote.ru\/all\/opyat-chinil-pogodastatusbar\/\">перешёл на «Гисметео»<\/a>.<\/p>\n<p>Всё нормально работало, но в какой-то момент плагин снова сломался. Если ничего не путаю, я предпринял попытку его починить, но у меня с наскоку не вышло и пришлось отложить эту проблему в долгий ящик — были другие дела.<\/p>\n<p>После новогоднего отдыха появились время и силы и я решил их часть израсходовать на плагин. Как-то зудело у меня, что он не работает.<\/p>\n<p>Надо сказать, что я не знаю как правильно отлаживать плагины в «Саблайме». В документации ничего не нашёл, поэтому написал небольшую обвязку и запускаю свой плагин просто из командной строки. Но в этот раз этот способ не сработал — в обвязке плагин работал, а внутри «Сайблайма» — нет.<\/p>\n<p>Я уже с таким сталкивался. У «Саблайма» внутри две версии «Пайтона» — 3.3 и 3.8. Обе, в общем-то, уже старые. Мой плагин запускается с версией 3.3 и у меня никак не дойдут руки залезть в общий репозиторий плагинов и переписать для моего плагина версию «Пайтона».<\/p>\n<p>Таким образом между «Пайтоном» у меня в командной строке и внутри «Сайблайма» — десять версий. Иногда я использую в коде что-то, чего «Сайблайм» не понимает.<\/p>\n<p>И вот непонятно как об этом узнавать. Можно, думаю, раздобыть старенький «Пайтон» в контейнере, но лень.<\/p>\n<p>Обычно я просто пристально смотрю на код, пока не понимаю как его исправить. А в этот раз так не вышло. Мне несколько раз казалось, что я понимаю в чём дело, я коммитил новый код, собирал релиз, дожидался, пока тулчейн репозитория плагинов «Саблайма» увидит новую версию, обновлялся и не получал положительного результата.<\/p>\n<p>В итоге, мне это надоело. Я нашёл в какой папке «Саблайм» держит плагины, они там лежат, к слову, в архивированном виде, и попытался подсунуть туда свой код — паковал папку с модифицированным кодом и заменял файл плагина. Но гадкий «Саблайм» как-то это понимал и затирал мои правки.<\/p>\n<p>С этим я опять поленился разбираться, вместо этого попытался отредактировать код прямо в архиве через консольный файловый менеджер <tt>mc<\/tt>. Неожиданно это сработало. Так я узнал, что ошибка была в том, что я использую вызов <tt>html.unescape<\/tt>, который появился только в «Пайтоне» 3.4. Пришлось заменить его на вполне устроивший меня в этом месте <tt>replace(&apos;&amp;quot;&apos;, &apos;&quot;&apos;)<\/tt> и всё заработало.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/bolknote.ru\/pictures\/2025.01.10@2x.webp\" width=\"1000\" height=\"625\" alt=\"\" \/>\n<div class=\"e2-text-caption\">Код плагина, открытый через редактор консольного файлового менеджера<\/div>\n<\/div>\n",
            "date_published": "2025-01-10T20:48:14+05:00",
            "date_modified": "2025-01-11T12:06:09+05:00",
            "tags": [
                "pogodastatusbar",
                "python",
                "sublime",
                "программирование"
            ],
            "author": {
                "name": "Евгений Степанищев",
                "url": "https:\/\/bolknote.ru\/",
                "avatar": "https:\/\/bolknote.ru\/pictures\/userpic\/userpic@2x.jpg?1760600028"
            },
            "_date_published_rfc2822": "Fri, 10 Jan 2025 20:48:14 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "133616",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": null,
                "og_images": []
            }
        },
        {
            "id": "129270",
            "url": "https:\/\/bolknote.ru\/all\/opyat-chinil-pogodastatusbar\/",
            "title": "Опять чинил PogodaStatusBar",
            "content_html": "<p>Сегодня участвовал в довольно скучной видеоконференции. Моё участие там было хоть и необходимое, но небольшое. А чтобы не одуреть от безделья, пока я слушал всю эту скуку, решил чем-то занять руки. Давно хотел починить свой плагин для «Саблайма» «<a href=\"https:\/\/github.com\/bolknote\/PogodaStatusBar\/\"><i>PogodaStatusBar<\/i><\/a>», этим и занялся.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/bolknote.ru\/pictures\/2024.07.09@2x.jpg\" width=\"300\" height=\"38\" alt=\"\" \/>\n<div class=\"e2-text-caption\">Внешний вид плагина на настоящий момент<\/div>\n<\/div>\n<p>Плагин в строке статуса показывает текущую погоду и пробки в вашем городе. Много лет данные для этого я брал с неофициального урла «Яндекса», но компания решила коммерциализировать погоду и, сколько я не искал новый способ получить её бесплатно, так и не нашёл.<\/p>\n<p>Пробки, кстати, тоже перестали нормально работать. Когда-то регион определялся автоматически, но это сломали. Я <a href=\"https:\/\/bolknote.ru\/all\/pogodastatusbar-fixed\/\">чинил<\/a> это через парсинг страницы погоды, но теперь и это не работает — «Яндекс» борется с автоматическими роботами. Поэтому пришлось искать другой способ.<\/p>\n<p>Я перебрал несколько малоизвестных сервисов, пока, наконец, не увидел, что страница <tt>yandex.ru\/tune\/geo\/<\/tt> содержит в себе необходимый номер. Этого хватило, чтобы починить показ пробок.<\/p>\n<p>С «Гисметео» пришлось повозиться. Не нашёл официальную информацию о каких-либо АПИ, которые можно вызвать без токена, но внутри погодного плагина для браузера нашёлся адрес <tt>services.gismeteo.ru\/inform-service\/inf_chrome\/forecast<\/tt>. В нём есть всё что нужно — текущая температура и закодированная иконка погоды.<\/p>\n<p>Определить номер города в формате «Гисметео» помогает сервис <tt>www.gismeteo.ru\/rmq\/search\/{название}\/1\/<\/tt>, куда я подставляю название, полученное от «Яндекс.Пробок» — там он возвращается вместе с остальными данными.<\/p>\n<p>Оставалось только расшифровать иконку погоды. В документации есть часть описания (остаток можно понять, скачав с «Гисметео» значки погоды), выглядит всё несложно. Например, <tt>d.r3<\/tt> означает «день» (<i>day<\/i>) и «дождь максимальной интенсивности» (<i>rain 3<\/i>).<\/p>\n<p>Поскольку у меня Юникод, в нём есть не все необходимые значки, я сделал вот такой объект, содержащий признаки, которые позволяют мне выбрать какую иконку показать:<\/p>\n<pre class=\"e2-text-code\"><code class=\"python\">_icons = {\n    &quot;🌞&quot;: {&quot;d&quot;}, # day\n    &quot;🌙&quot;: {&quot;n&quot;}, # nite\n    &quot;☁️&quot;: {&quot;n&quot;, &quot;c&quot;}, # night, cloud\n    &quot;🌧&quot;: {&quot;rs&quot;, &quot;c&quot;, &quot;r&quot;}, # rain+snow, cloud, rain\n    &quot;🌤&quot;: {&quot;d&quot;, &quot;c&quot;}, # day, cloud\n    &quot;🌦&quot;: {&quot;d&quot;, &quot;r&quot;}, # day, rain\n    &quot;🌩️&quot;: {&quot;c&quot;, &quot;st&quot;}, # #day, storm\n    &quot;⛈️&quot;: {&quot;c&quot;, &quot;st&quot;, &quot;r&quot;}, # cloud, storm, rain\n    &quot;🌨&quot;: {&quot;c&quot;, &quot;s&quot;}, # cloud, storm\n    &quot;💨&quot;: {&quot;mist&quot;}, # mist\n    &quot;⚡️&quot;: {&quot;st&quot;}, # storm\n}<\/code><\/pre><p>И вот такой простой алгоритм для выбора иконки:<\/p>\n<pre class=\"e2-text-code\"><code class=\"python\">def _getStatus(self, coded_weather):\n    codes = {x.strip(&quot;0123456789&quot;) for x in coded_weather.split(&quot;.&quot;)}\n\n    max_icon = None\n    max_score = 0\n\n    for icon, code in self._icons.items():\n        result = codes &amp; code\n        score = sum(len(x) for x in result)\n        if score &gt; max_score:\n            max_icon, max_score = icon, score\n\n    return max_icon<\/code><\/pre><p>Идея простая — чем больше значков совпало, тем лучше; если совпал значок с более длинным названием (<i>st<\/i>, <i>mist<\/i>), считаем его более конкретным и важным.<\/p>\n",
            "date_published": "2024-07-09T17:28:22+05:00",
            "date_modified": "2025-01-11T12:03:34+05:00",
            "tags": [
                "pogodastatusbar",
                "python",
                "sublime",
                "программирование"
            ],
            "author": {
                "name": "Евгений Степанищев",
                "url": "https:\/\/bolknote.ru\/",
                "avatar": "https:\/\/bolknote.ru\/pictures\/userpic\/userpic@2x.jpg?1760600028"
            },
            "_date_published_rfc2822": "Tue, 09 Jul 2024 17:28:22 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "129270",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": null,
                "og_images": []
            }
        },
        {
            "id": "133623",
            "url": "https:\/\/bolknote.ru\/all\/pogodastatusbar-fixed\/",
            "title": "Починил PogodaStatusBar",
            "content_html": "<p>Обратил внимание, что мой <a href=\"https:\/\/bolknote.ru\/all\/4605\/\">погодно-пробочный плагин<\/a> для «Саблайма» сломался — ничего не показывает. Я заметил не сразу, сейчас редко запускаю этот редактор. Ребята, которые пользуются регулярно, говорят, что сломался довольно давно.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/bolknote.ru\/pictures\/2020.07.27@2x.png\" width=\"500\" height=\"47\" alt=\"\" \/>\n<div class=\"e2-text-caption\">Строка статуса: в Казани +20°C, пробки три балла<\/div>\n<\/div>\n<p>Пришлось исправить две вещи — во-первых, импорт одного из модулей перестал работать, это произошло, как я думаю, с обновлением интерпретатора, во-вторых, АПИ «Яндекса», которое я использую, перестало корректно определять регион, в котором надо показать погоду. Пришлось искать обходные манёвры.<\/p>\n<p>Остался ещё один баг — если «Яндекс» не отдаёт информацию о пробках (в некоторых небольших городах такой информации нет), то плагин работать не будет. Не знаю, стоит ли это править, всё-таки популярностью у него невелика́ и делал я его больше для себя.<\/p>\n",
            "date_published": "2020-07-27T22:18:39+05:00",
            "date_modified": "2025-01-11T12:05:50+05:00",
            "tags": [
                "pogodastatusbar",
                "python",
                "sublime",
                "программирование"
            ],
            "author": {
                "name": "Евгений Степанищев",
                "url": "https:\/\/bolknote.ru\/",
                "avatar": "https:\/\/bolknote.ru\/pictures\/userpic\/userpic@2x.jpg?1760600028"
            },
            "_date_published_rfc2822": "Mon, 27 Jul 2020 22:18:39 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "133623",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": null,
                "og_images": []
            }
        },
        {
            "id": "133622",
            "url": "https:\/\/bolknote.ru\/all\/4605\/",
            "title": "Погодный плагин для «Sublime Text»",
            "content_html": "<div class=\"e2-text-picture\">\n<img src=\"https:\/\/bolknote.ru\/pictures\/2017.06.24@2x.jpg\" width=\"747\" height=\"482\" alt=\"\" \/>\n<div class=\"e2-text-caption\">Окно редактора «Саблайм Текст» с погодой и пробками в строке состояния<\/div>\n<\/div>\n<p>Написал свой первый плагин для «Саблайма» — для отображения в строке состояния <a href=\"https:\/\/github.com\/bolknote\/PogodaStatusBar\/\">погоды и пробок<\/a> «Яндекса». Заодно немного повспоминал «Пайтон», давно на нём ничего не писал.<\/p>\n<p>Удивительно, но факт — другого работоспособного плагина на эту тему не обнаружилось. Единственный конкурент использует старое АПИ «Яху», которое уже не работает, потому не работает и плагин.<\/p>\n<p>Отдельное спасибо «Яндексу» за то, что их АПИ умеет определять текущее местоположение — ничего задавать в конфиге не надо, удобно.<\/p>\n<p>Поскольку в строке состояния можно выводить только буквы, воспользовался Юникодом для вывода погодных значков, для уровня пробок не нашлось ничего лучше фруктов, так что индикатором загруженности дорог у меня служат зелёное яблоко, жёлтый лимон и красный помидор. Не знаю будут ли видны эти символы пользователям Линукса или Виндоуза, мне негде посмотреть.<\/p>\n<p>Пришлось повозиться с АПИ самого «Саблайма». Во-первых, отдельного события на старт редактора нет, пришлось активировать плагин на получение фокуса окном. Во-вторых, некоторые авторы плохо читают документацию — у многих их плагины полностью переинициализируются на событие, это ни к чему, я, например, дёргаю «Яндекс» как можно реже, по таймеру в отдельном потоке, а в строке показываю кешированное.<\/p>\n<p>В настройках есть шаблон вывода, можно убрать пробки или погоду, если они не нужны.<\/p>\n<p>Подал пул реквест на включение в саблаймовский пакетный менеджер, но особо упорствовать не буду, если откажут.<\/p>\n",
            "date_published": "2017-06-24T20:03:00+05:00",
            "date_modified": "2025-01-11T12:03:16+05:00",
            "tags": [
                "pogodastatusbar",
                "python",
                "sublime",
                "программирование"
            ],
            "author": {
                "name": "Евгений Степанищев",
                "url": "https:\/\/bolknote.ru\/",
                "avatar": "https:\/\/bolknote.ru\/pictures\/userpic\/userpic@2x.jpg?1760600028"
            },
            "_date_published_rfc2822": "Sat, 24 Jun 2017 20:03:00 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "133622",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": null,
                "og_images": []
            }
        }
    ],
    "_e2_version": 4079,
    "_e2_ua_string": "Aegea 11.0 (v4079e)"
}