Недавно возникло желание читать пару групп ВКонтакте. Регулярно заходить туда и проверять, не появилось ли чего нового - это не наш путь. Поэтому, узрев в этом желании отличную возможность поиграться с Google App Engine и Python'овским HTMLParser'ом, написал себе небольшой "велосипед" - vkontakte-feed.appspot.com. :)
Отдает посты с публичных стен в RSS. Пользуйтесь, если кому надо.
22 комментария:
Спасибо Дмитрий, как всегда то что надо!
Отлично.
Круто! Спасибо!!!
Спасибо - вполне удобно.
Может еще распишете весь процесс создания подобного. Просто пользуюсь для некоторых целей сайтом feed43.com - думаю идея с разбором сайт на куски текста похожа.
Анонимный, а что именно вас интересует?
Вообще, когда парсишь HTML, к каждому сайту приходится подходить индивидуально. Тут счастья никогда не будет. Да, в vkontakte-feed.appspot.com я расширил Python'овский HTMLParser, чтобы с ним можно было удобно работать, но все равно большая часть кода - это именно подстройка под HTML-код vkontakte.ru.
Можно парсить как я, HTML-парсером (сложнее, но более устойчиво к изменениям дизайна), можно регулярными выражениями, но, в любом случае, если хотите, чтобы за генерируемый RSS не было стыдно, придется повозиться... Ничего особо сложного - просто кропотливая работа, требующая некоторого времени.
А так, на сайте есть ссылка на исходный код - https://github.com/KonishchevDmitry/vkfeed. Смотрите, заимствуйте - я будут только за.
Если можно, один багрепорт:
не работает использование id'шников, т.е. http://vkontakte.ru/durov работает, а http://vkontakte.ru/id1 - нет.
Не знал, что существуют такие маленькие id'шники. :) У меня там просто проверка стоит, чтобы народ не вводил всякую фигню. Спасибо, поправил.
У меня выдаёт страницу с кодом каким-то почему-то
Ну вы хотя бы покажите, что за код-то - мне так сложно понять, что именно вы имеете в виду.
P.S.: На всякий случай спрошу: а вы вообще в курсе, что такое RSS? А то, может быть, этот код и есть RSS? :)
Хорошая идея, респект. Буду вашим бета-тестером :) а с какой переодичностью обновляется лента?
На данный момент в реальном времени: при обращении к http://vkontakte-feed.appspot.com/feed/.../wall отправляется запрос на http://vkontakte.ru/, парсится ответ, и генерируется RSS-лента. Впоследствии, возможно, добавлю какое-нибудь кэширование.
Спасибо, отлично подошло для http://www.wordle.net/create.
супер, то что я так давно хотел
Можно ли добавить авторизацию, чтобы можно было получать стены закрытых групп?
Тут есть ряд проблем:
1) Если пользоваться ВКонтакте API, то авторизацию придется время от времени подтверждать, т. к. токены, которые выдает API, имеют expiration time. Для RSS-ленты это неприемлемо.
2) Если не использовать API, то пользователь должен будет передать свой логин и пароль моему сервису - не многие согласятся это сделать.
3) Авторизацию в RSS поддерживают далеко не все клиенты. К примеру, самый популярный клиент (Google Reader) не поддерживает. К тому же, он считает все ленты полностью публичными, и может предложить RSS-ленту одного пользователя другому. Поэтому во всех RSS-лентах должна быть исключительно публичная информация.
Спасибо, работает. Но есть один баг. Как только пользователь добавляет аудиозапись, в течение двух недель будет висеть непрочитанная новость (браузер opera mini от 6.0).
Мелочь, но иногда раздражает.
Но всё равно огромное спасибо за продукт!)
Дмитрий, а если пользоваться API но к примеру от какого-нить спец. логина во вконтакте, чтобы не парсить HTML?
gaRex, во-первых, боюсь, что слишком быстро упрусь в лимит на количество просмотренных однотипных страниц в секунду от одного пользователя, а во-вторых - в таком случае я буду отдавать по RSS страницы, которые пользователи пометили как "только для зарегистрированных пользователей", что будет нарушать их privacy.
Огромнейшее спасибо!
Спасибо огромное, теперь читаю контакт на Флипборде, сортированный по темам, очень удобно и красиво!)
Дмитрий !
Спасибо !
Просто супер!
Женя.
Отправить комментарий