Queryfeed — RSS-ленты из Твиттера и Фейсбука


    Вступление

    Я отношусь к тем людям, которые в основном читают социальные сети, блоги и твиттер, но не пишут в них. У меня есть аккаунты почти во всех сервисах, но только для того, чтобы зайти и прочитать новую информацию.

    Полагаю, что я не один такой. В добавок к вышесказанному, все новостные ресурсы я предпочитаю читать через РСС-ленты, считая их самым удобным средством распространения информации. К сожалению, оба информационных гиганта — Фeйсбук и Твиттер — лишили пользователей возможности выкачивать ленты. За пару дней я собрал на коленке сервис, который устраняет этот недостаток.

    Итак, милости прошу на Queryfeed.


    На текущий момент сервис умеет вытягивать данные из Твиттера и Фейсбука. Запросы осуществляются через Search API и Graph API соответственно. Твиттер поддерживает сложные запросы, например, по автору, по адресату, по хэш-тегу и тд. Полученный с серверов JSON конвертируется в RSS и отдается пользователю. Для лент Твиттера задан TTL (время кэша) 5 минут, для Фейсбука — 10 минут.

    Примеры

    • #habr — поиск по хэш-тегу;
    • from:username — твиты от автора username;
    • собакаusername — твиты с упомянутым username;


    Доступны и другие операторы, в т.ч. исключение слова, операция OR, и т.д. К сожалению, поиск от Фейсбука похвастаться такой гибкостью не может. Я добавил его в качестве эксперимента, и, возможно, от него придется отказаться.

    Техническая сторона

    Сервис написан на Питоне, фрейморк — Flask. Поскольку сервис не обращается к БД, Джанго здесь явно избыточен. РСС-лента формируется шаблонизатором Jinja2 по XML-шаблону. Хостится в облаке App Engine. Код не привязан к архитектуре GAE, чтобы в любой момент можно было оттуда съехать.

    Теперь можно читать Твиттер в любимом RSS-ридере. Или использовать RSS-ленту как средство передачи информации (например, из Твитера на ваш сайт/блог). Буду очень признателен за критику и пожелания.
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 33

      0
      А API есть?
      0
      Возможно ли получать сообщения из определенного списка?
        –3
        И twitter и facebook уходят от RSS (есть переводная статья на хабре), и по-совместительству являются убийцами RSS.
        почему бы не поиспользовать что то типа Prismatic ( или Flipboard на телефоне), и не плодить велосипедов?
          +3
          Наверное потому, что они не предоставляют желаемого сервиса.
            +5
            Эти статьи я читал, спасибо.
            Фейсбук и Твиттер уходят от РСС по маркетинговым, а не техническим решениям. РСС — открытый, удобный формат передачи данных. Если каждый сайт начнет городить свои API для извлечения новостей, то что будет с интернетом?
            0
            Из пожеланий: хотелось бы автоматически формировать набор лент из существующих фоловеров/друзей посредством авторизации в соответствующих сетях и последующим экспортом в OPML, ибо поодиночке добавлять всех не очень удобно.
              0
              Еще хотелось бы дополнить список поддерживаемых сетей популярными нынче инстаграмом, форсквером, гугл плюсом.

              Кстати, спасибо за замечательный инструмент, попробую перетащить из твитдека все гугл ридер.
                0
                Попробовал. Вышло как-то странно: не получается толком организовать т.н. timeline, сложив все фиды в папку и отсортировав по дате.

                Фиды автоматически не обновляются при поступлении в них новых сообщений из твиттера.
                  0
                  Так, фиды обновляются, но судя по всему для таймлайна твиттера гугл ридер не подходит ибо частота обновления фидов слишком низкая и записи оттуда берутся пачкой
                    0
                    Да, тоже с этим столкнулся. Нужен ридер, в котором можно выставлять произвольную частоту обновления лент.
                0
                Кстати, с фейсбуком не все так радужно как с твиттером, не удается создать фид конкретного пользователя.
                  0
                  В фейсбуке вообще странно поиск работает и в нем уровень приватности выше, многие запросы требут авторизации.
                    +1
                    RSS в фейсбуке:
                    www.facebook.com/feeds/page.php?id=<profile_id>&format=atom10

                    profile_id можно найти в коде страницы без проблем
                  +2
                  В твиттере есть RSS ленты по каждому аккаунту, просто они хорошенько запрятаны. Любого пользователя можно читать самостоятельно склеив URL: twitter.com/statuses/user_timeline/<data-user-id>.rss
                    0
                    Как узнать data-user-id не подскажете? Это же не имя аккаунта.
                      0
                      data-user-id = login
                        0
                        Спасибо. Пробовал на закрытом аккаунте, поэтому получил ошибку.
                    0
                    В поле link после каждого адреса добавляется двойная кавычка ". Из-за этого ссылка становится нерабочей.
                      0
                      Спасибо, исправил.
                      0
                      Ура! Только сегодня искал в гугле подобное решение, но так ничего легкого и не нашел. Спасибо.
                        0
                        Спасибо! Давно ждал подобного решения!
                          –2
                          Вы так расписали, что ничего полезного не приносите в мир интернета, как буд-то гордитесь этим. Печально, что такие люди существуют :(
                            0
                            503 This application is temporarily over its serving quota.
                              0
                              Уже работает. Чуть-чуть не дотянул до обнуления квот.
                              0
                              У твиттера ограничение на чтение RSS с одного сервера, 150 запросов в час.
                                0
                                Сервис хостится а App Engine, а там HTTP-запросы шлются с разных серверов, т.е. IP будет тоже разный.
                                0
                                Хостится в облаке App Engine. Код не привязан к архитектуре GAE, чтобы в любой момент можно было оттуда съехать.

                                Расскажите об этом, пожалуйста, более подробно (можно даже в виде отдельной статьи).
                                  0
                                  На отдельную статью это вряд ли потянет. Суть в том, что по возможности не нужно привязываться к архитектуре App Engine. Мое приложение — это обычное WSGI-совместимое приложение на Flask, которое без проблем запустится под Апачем или Торнадо. Поэтому с переездом проблем не возникнет. Так же я практикую паттерны бекэндов, например, бекэнд для извлечения урлов. Он определяет, в какой среде запущено приложение — в GAЕ или нет — и в зависимости это этого вытягивает HTTP-запрос гугловским urlfetcher или стандартным urllib. Похожий паттерн можно применять для кеширования.
                                  0
                                  Поместите, пожалуйста, на сайте описание сервиса — что это и зачем.

                                  Сервис полезный, но не прямо сейчас — добавлю в закладки.
                                  А когда перейду туда из закладов (через месяцы или годы) пояснительной статьи на Хабре уже не будет перед глазами.
                                    0
                                    Конечно, текст будет. Возникли трудности с переводом на английский.
                                    0
                                    Спасибо, Иван, интересный сервис. Я, правда, давно использую RSS самого твиттера. Google Reader добавляет поток даже без точного адреса потока, а просто по основному урлу микроблога.

                                    Only users with full accounts can post comments. Log in, please.