Хабра-информер

    image Как многие из тех кто постоянно посещает habrahabr, я часто проверяю главную страницу на наличие новых статей, пока в один прекрасный момент не пришла мысль сделать информер, который бы висел в трее, независимо запущен у меня браузер или нет, и сам проверял обновление на главной странице, если такое есть то я открывал программку в трее и смотрел какие статьи в текущий момент на главной странице. Далее кликнув по нужной ссылке — сразу попадал в браузер на нужную страницу.


    В итоге получил программку на QT, которая все это выполняет.

    Использование

    Скачиваете готовый файл «приложение» для linux(после скачивания на бинарник не забываем ставить права на выполнение) или windows -запускаете программу, сворачиваем ее в трей и занимаемся своими делами, как только изменится значок в трее, открывайте программу и смотрите какие изменения были получены, если что-то интересное кликаете -> попадаете на хабр в статью.

    Файлы

    Скачать приложение для Windows (В архив запакованы библиотеки зависимости)
    Скачать приложение для Linux (скомпилированный бинарник)
    Скачать приложение для MAC OS X (Выложил AcidSlayer, проверить не было возможности)
    Скачать исходники

    image

    В Windows так же все работает, но тянет за собой библиотеки (libgcc_s_dw2-1.dll, mingwm10.dll, QtCore4.dll, QtGuid4.dll, QtNetwork4.dll, QtXml4.dll).

    imageimage

    Дополнение


    Чтоб KDE — ссылки не открывал, как кэш файлы, необходимо в настройках -> приложения по умолчанию -> браузер указывать с ключом %U (firefox %U).

    Что планируется в следующей серии

    Есть ряд идей по улучшению данной программы и при наличии свободного времени я ее буду усовершенствовать.
    — Создать отдельные потоки на: новые топики, захабренные, песочница, вопросы.
    — Возможность авторизации: слежением за личными сообщениями, слежение за лентой, слежения за новыми комментариями в избранных топиках.

    Меня очень интересуют советы с пользовательской точки зрения, как кому было бы удобней использовать такую программку.

    P.S. Буду рад за любую помощь и советы.

    P.S.S. Товарищи, просьба сильно не ругать, за то, что это сейчас rss ридер, мнение я постараюсь изменить с обновлениями программы и обязательно учту все Ваши замечания.

    Комментарии 58

      +36
      Ценю желание помочь любителям хабры, но вот беда, уже существует RSS. А если, RSS чем-то не по нраву, то лучший способ оповещения, я уверен, это новое сообщение в ICQ/Jabber/Skype…
        +2
        Программу делаю с перспективой. Есть еще моменты, которые не сделать с RSS — их я описал в блоке «дополнение». Хочу собрать со временем в программу все сайты которые обычно часто посещаются, но сначала доведу все задуманное до ума в отношении с хаброй. Плюс это для меня практические уроки по изучению QT + C++.
          0
          Ну мысля, глобально, правильная. Системы моментального оповещения — полезны, прибыльны. Удачи.
          +4
          Только что сделал простую задачку на ifttt, которая уведомляет о новых топиках на хабре в Google Talk.
          +15
          Вы написали RSS ридер для хабра. Поздравляю :)
            +3
            Согласен, в данный момент это похоже на ухудшенную версию rss-reader, но к программе только приступил и есть задачи которые в данный момент реализую для того, чтоб это было удобным трей-приложением для хабры.
            Цель моего размещения топика в данный момент — собрать мнение пользователей и пожелание, чтоб увидеть свои ошибки со стороны.
              0
              А я бы, кстати, не отказалась от такого мини-RSS-ридера в трее, чтобы можно было произвольные адреса лент добавлять и так же мгновенно получать оповещения и прямо из трея идти по ссылке. Если кто знает такой под линукс — поделитесь.
              –11
              Ужасная вещь, спрячьте ее подальше. И так работать сейчас лениво, а теперь вообще никак будет.
                0
                А под mac os ее не скомпилировать?
                  +3
                  Должна собираться, Qt всё таки.
                    +1
                    У меня просто нет MAC оси, поэтому не могу скомпилировать и проверить, но я выложил исходники — любой желающий может попробовать собрать его под любой операционной системой.
                    По идеи должно без проблем собраться в маке.
                      +5
                      Возможно, было бы лучше на гитхаб выложить исходники?
                        0
                        Поддерживаю, так можно было бы получить помощь от заинтересованных лиц гораздо более приятным способом
                        +1
                          +1
                          Забыл отписать, для Mac OS X
                      0
                      "… патоки ..." Поправьте пожалуйста.
                      А по теме топика. Желание изучить новые технологии похвально, но боюсь что задачу вы выбрали несколько не актуальную.
                      Если вы хотите как можно раньше узнавать о новых топиках на хабре, почему бы не следить за новыми топиками, а не за главное страницей? Некоторые замечательные топики не добираются до главной.
                      • НЛО прилетело и опубликовало эту надпись здесь
                          0
                          А карму топика показывать?
                          Меня вообще интересует, как бы красивее и удобней оформить.
                            0
                            И код причесать стоило бы перед тем как выкладывать.
                            +2
                            image
                            1. Пустой перетаскиваемый виджет сверху окна. Openbox.
                            2. 4 раза подряд понажимал на кнопку «Обновить» — приложение упало.
                              +1
                              Спасибо, сейчас блокировку сделаю от повторных нажатий. Виджет так же удалю.
                              +2
                              Вообще, все ведь в браузер переносится, а вы в трей :)
                              Очень точно подмечено, мол, зачем обои на рабочем столе, все равно их за браузером не видно. У меня, например, действительно практически все время браузер запущен. Хотя, кому-то может оказаться полезным.
                                +1
                                ИМО, тогда бы уже было лучше делать расширение для, скажем, хрома. С html5 оповещениями, и какой-нибудь минималистичной страницей с парой последних топиков.
                                  +1
                                  Расширение для хрома не так давно проскакивало на Хабре. Сам им пользуюсь с тех пор.
                                  +3
                                  А мне наоборот более удобно иметь иконку в трее для некоторых вещей, таких как твиттер клиент, IM и т. п.
                                  На вкус и цвет)
                                  +5
                                  Хороший информер, но разве в наше время у кого-то бывает так, что не запущен браузер?
                                    0
                                    бывает так что он пока не запущен))
                                      +1
                                      бывает, когда пары гиг опреативы офисного ПК не хватает на среджу разработки и браузер одновременно.
                                        +1
                                        У меня в браузере столько всего напичкано, что иногда бывает неудобно держать открытыми нужные вкладки или поместить пару лишних закладок на панельки, меня особенно поймут те кто пользуются такими вещами, как firebag. А еще меня поймут те, кому нужно больше времени проводить без развернутого браузера, но при этом хотят знать, что обновилась информация на хабре.
                                        0
                                        А оно как-то привязано к логину? В том смысле, что показывает только те топики, которые запощены в блоги, на которые я подписан или оно все топики показывает?

                                        PS. Для винды когда будет доступно?
                                          0
                                          Пока тяну информацию с RSS, но сейчас в данный момент переписываю, чтоб читалось с учетом разных вкладок и авторизации.

                                          Для windows — будет доступно в течении часа, в архив положу необходимые библиотеки.
                                            0
                                            Спасибо. Жду версию с авторизацией!
                                              0
                                              Кстати, а вы напишите новый пост или проапдейтите этот когда будет версия с авторизацией? Или в свете «осеннего обновления» сроки сдвинулися?
                                                0
                                                Будет новый пост.
                                                P.S. Промежуточный релиз будет сделан на днях (но он еще без авторизации). Запустить хочу, чтоб получить советы от пользователей. Данный релиз будет иметь новый дизайн, возможность следить за обновлениями в песочнице, захабреного, QA, данные будут сохранятся в БД (SQLite).
                                                  0
                                                  Промежуточный релиз будет тоже новым постом? Если нет, то напишите, пожалуйста, в личку.
                                          +1
                                          Было бы здорово сделать возможность залогиниться, чтобы обновления в закрытых блогах тоже выдавались в общем списке…
                                            +1
                                            + личные сообщения, карма и т.п.)
                                              0
                                              Сейчас как раз готовлю следующий релиз в котором все это будет.
                                              +1
                                              Давайте лучше оповещалку в IM(icq, skype, jabber, etc) при появлении статей сделаем :) Будет удобнее. Не все же всегда с компьютера, а статей новых ждем, иногда даже прямо сидя на некоторых скучных лекциях. Удобно даже будет если прям в мобильном IM клиенте можно будет читать статью ;) Впринципе вариант такого «бота» для Win и ICQ(а возможно и джаббера) я в состоянии сделать, но кто будет в состоянии держать это на сервере?
                                                0
                                                яб не отказался получать уведомления таким образом(служебные сообщения с корпоративного jabber/xmpp сыпятся постоянно), но исторически сложилось, что кроме аськи на работе все закрыто…
                                                  0
                                                  В будущем обязательно займусь этим вопросом, но сейчас реализую то, что уже поставлено в список плана.
                                                  0
                                                  Уважаемый ТС, а не лучше бы было под Windows скомпилировать программe статически и пожать её с помощью UPX?
                                                  Хотя пока что это не столь важно.
                                                    0
                                                    Qt не совсем хорошо работает при статической линковке в Windows, к сожалению.
                                                    0
                                                    Удивлен, что топик все-таки собрал немало плюсов :)

                                                    Я забыл написать в личке — я против такого ПО потому что оно еще и отвлекает. Я чижу, работаю, и тут бац! новая статья на Хабре! Читать или нет? А, ладно, одним глазком… Ой, тут уже и коменты написали… В итоге час времени в топку.

                                                    p.s. А можно еще показывать кто автор, число плюсов и топики Ализара желтым подсвечивать?
                                                      +1
                                                      … я против такого ПО…
                                                      … А можно еще…
                                                      А, ладно, одним глазком…

                                                      Внутренняя борьба, с осознанием, что нужно работать и желанием почитать хабр. От того и не одобрение таких вот штуковин. Но если посмотреть в реальность, то в случае правильной организации данной програмулинки, как раз можно сэкономить время не обновляя самому страницы.
                                                      +5
                                                      Работа с сетью в on_pushButton_clicked() — в лучших традициях Delphi.
                                                        +2
                                                        Несколько предложений по дальнейшему развитию:
                                                        — переписать интерфейс на QML;
                                                        — как писали уже выше, прикрутить возможность авторизации;
                                                        — воспользоваться прилагаемым к Qt Webkit-ом и использовать для чтения статей, лайт версию можно брать с m.habrahabr.ru;
                                                        — тут же раз имеется возможность чтения сделать возможность сохранения статьи в архив (параллельно добавление в избранное на хабре) + вывод в PDF;
                                                        — слежение за новыми комментариями + опять же в архив (и в избранное).

                                                        Вот как то так. Тогда будет отличный клиент для Хабры и прощай работа.
                                                          +1
                                                          1) Уже начал переписывать под QML — из за перспективы.
                                                          2) Авторизация будет не обязательна, но при авторизации будет возможность следить за новыми личными сообщениями, следить за своей лентой новостей и за новыми комментариями в избранных топиках.
                                                          По поводу просмотра статей и архивирование — пока наверное оставим на потом.
                                                        • НЛО прилетело и опубликовало эту надпись здесь
                                                            0
                                                            Офигеть. Теперь не работать под благовидным поводом можно намного чаще!
                                                              +2
                                                              На будущее, пара замечаний к коду :)
                                                              if(!this->isVisible() and QString::compare(mylinkssave,mylinks)!=0 and QString::compare(mylinkssave,"")!=0){
                                                              

                                                              1. В C++ принято использовать "&&", а не define «and»
                                                              2. QString::compare в данном случае «менее читабелен», чем перегруженные операторы
                                                              3. !isVisible() == isHidden()

                                                              В связи с чем лучше написать так:
                                                              if (isHidden() && !mylinkssave.isEmpty() && mylinkssave != mylinks)
                                                              


                                                              Далее, на лицо утечка памяти (manager'а), а то и сегфолты из-за двойного удаления одного и того же объекта, если пользователь тыкнул на кнопку 2 и более раз подряд (QNetworkAccessManager создается и записывается в члена manager класса, при следующем подряд тыке предыдущий объект перетирается новым, затем при получении результата от сервера 2 разных QNetworkReply вызовут удаление одного и того же QNetworkAccessManager'а).
                                                              Методы решения:
                                                              1. По идее QNetworkAccessManager должен жить в течение жизни этого окна и быть одним на все запросы по сети.
                                                              2. А если таки неймется, то удалять нужно не manager, а reply->manager() :)

                                                              QString mylinks=QString("");
                                                              

                                                              Этот вызов абсолютно равносилен в данном контексте следующему:
                                                              QString mylinks;
                                                              


                                                              Ну и т.д. и т.п.

                                                              P.S. Надеюсь вы выложите исходный код на GitHub :)
                                                                +1
                                                                И еще, в архив с исходным кодом совсем необязательно выкладывать временные (*.o, Makefile) файлы
                                                                  0
                                                                  Огромнейшее Вам спасибо!
                                                                  В данной версии уже на GitHub выкладывать не буду, но сейчас готовлю новую версию, более функциональную + с красивым и удобным дизайном, пока все рассказывать не буду.
                                                                  P.S. В проект начинают потихоньку подключатся добровольцы, с выходом нового релиза — все и о всех напишу.
                                                                    0
                                                                    Вот честно, лучше сейчас выложить :)
                                                                    Гораздо ведь удобнее желающим будет помогать проекту, в чем причины нежелания этого делать сейчас?
                                                                      0
                                                                      1) Проект полностью переписываю.
                                                                      2) Набросок будущего дизайна от AcidSlayer image

                                                                      3) Авторизация и хранение пароля будет необязательными в программе, но будут открывать возможность использования кнопок (добавить в избранное, следить за новыми комментариями и за своей лентой).
                                                                  0
                                                                  У меня вот такой юзкейс: на хабр захожу достаточно редко, потому как времени нету особо. Но просматривать основные статьи очень хотелось бы. Поэтому приходится пролистывать все вручную, выбирая что-то интересное до того момента, где остановился в прошлый раз.
                                                                  Вот хотелось бы что-нибудь такое, что запоминало бы, на каком месте остановился и возможно показывало бы все новые топики с того момента. И еще неплохо было бы иметь фильтрацию по количеству голосов и favorites.
                                                                  Если сможете помочь, буду чрезмерно благодарен.
                                                                  Спасибо.
                                                                    0
                                                                    Постараемся решить данный вопрос, но по всей видимости придется в трее значок пока держать открытым.
                                                                    0
                                                                    Вот спасибо, как раз то, что нужно. Хотя, небольшую часть уже сам написал :)
                                                                    Тоже будет уведомлялка в трее висеть.

                                                                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                    Самое читаемое