Голосовать за новости Hacker News программно? - PullRequest
0 голосов
/ 25 апреля 2010

Я решил написать приложение вроде: http://michaelgrinich.com/hackernews/, но для устройств Android моя идея будет использовать бэкэнд веб-приложения (потому что я скорее пишу код на Python и для Интернета, чем полностью на Java для устройств Android).

То, что я сейчас реализовал, выглядит примерно так:

$ curl -i http://localhost:8080/stories.json?page=1\&stories=1
HTTP/1.0 200 OK
Date: Sun, 25 Apr 2010 07:59:37 GMT
Server: WSGIServer/0.1 Python/2.6.5
Content-Length: 296
Content-Type: application/json

[{"title": "Don\u2019t talk to aliens, warns Stephen Hawking", "url": "http://www.timesonline.co.uk/tol/news/science/space/article7107207.ece?", "unix_time": 1272175177, "comments": 15, "score": 38, "user": "chaostheory", "position": 1, "human_time": "Sun Apr 25 01:59:37 2010", "id": "1292241"}]

Следующий шаг (и последний, я думаю) - голосование, мой дизайн делает что-то вроде этого:

$ curl -i http://localhost:8080/stories/1 -d "vote=up" -u username:password

Будет голосовать и:

$ curl -i http://localhost:8080/stories/1 -d "vote=down" -u username:password

Проголосовать вниз.

Я понятия не имею, как это сделать, хотя ... Я планировал использовать Twill , но ссылка для входа всегда отличается, например ::

http://news.ycombinator.com/x?fnid=7u89ccHKln

Позже приложение Android будет использовать этот API.

Есть ли опыт программного просмотра Hacker News?

Ответы [ 2 ]

3 голосов
/ 25 апреля 2010

Я разработчик http://michaelgrinich.com/hackernews/.

Это какая-то черная магия, которая все происходит на устройстве, соскребая HTML прямо из news.yc. Немного сложно понять, но не так уж плохо. Просто немного сообразительности и управления файлами cookie.

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

2 голосов
/ 26 апреля 2010

Twill имеет способ перечислить все ссылки, и вы получите ссылки в виде объектов:

login_url = ''
for link in showlinks():
    if link.text == "login":
        login_url = link.url

go(login_url)

Так что ссылка будет примерно такой: http://news.ycombinator.com/x?fnid=SvdNlGQoqo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...