Недавно возникло желание читать пару групп ВКонтакте. Регулярно заходить туда и проверять, не появилось ли чего нового - это не наш путь. Поэтому, узрев в этом желании отличную возможность поиграться с Google App Engine и Python'овским HTMLParser'ом, написал себе небольшой "велосипед" - vkontakte-feed.appspot.com. :)
Отдает посты с публичных стен в RSS. Пользуйтесь, если кому надо.
19 comments:
Спасибо Дмитрий, как всегда то что надо!
Отлично.
Круто! Спасибо!!!
Спасибо - вполне удобно.
Может еще распишете весь процесс создания подобного. Просто пользуюсь для некоторых целей сайтом 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.
Отправить комментарий