пятница, 14 сентября 2012 г.

Проверка рейтинга голосования на сайте ibuildapp.com

Недавно решил поучаствовать в конкурсе по созданию мобильных приложений. Давно была хорошая идея («Удобный поиск экомобиля») и решил её реализовать. Однако конкурс проводил Сбербанк и в качестве платформы для создания приложения был выбран сайт russia.ibuildapp.com, на котором все приложение приходится делать с помощью их «чудо» инструментов, в общем прекрасный инструмент для домохозяек при помощи, которого можно делать много ****  =). Коль уже было принято решения участвовать, то решил просто отписать версию для браузера, чтобы можно было через мобильник с ней работать. С результатом и с идей можно вот здесь ознакомиться: http://photopuma.ru/eco/
В ходе голосование за приложение появились забавные тролли, которым не понравилось, что приложение находится в первых местах и в один прекрасный момент у меня появилось около ста голосов с «1». Приложение с 3го места весело укатилось на 27ое. К счастью о приложении опубликовали в одном журнале np-mag.ru/articles/otdaj-svoj-golos-za-ekomobil и в паре пабликов в ВК, за что им спасибо. И приложение начало обратный путь на верх. Однако, вот такие нападки бывают часто. Написать голосовалку для накручивания не проблема, но коль решил действовать честно буду идти до конца =)

Написал небольшой скрипт на python для проверки рейтинга чтобы можно было легко смотреть динамику голосованию и отслеживать такие моменты.  Для написания использовал библиотеку PyQuery, она позволяет искать элементы DOM'a при помощи синтаксиса схожего с селекторами jQuery.

#!/usr/bin/python
from pyquery import PyQuery as pq
import urllib
import csv
from datetime import datetime

def Rating(number):
# f = csv.reader(open('stats.csv', 'rb'), delimiter=' ', quotechar='|')
 now = datetime.now()
 f = csv.writer(open('stats.csv', 'a'), delimiter=' ', quotechar='"', quoting=csv.QUOTE_MINIMAL)
 //Open page 
 d = pq(url='http://russia.ibuildapp.com/projects.php?action=info&projectid=%s' % number)
 //Search by id 
 avg_rating = d('#avg_rating')
 num_votes = d('#num_votes')   
 //Search bold element in paragraph with text_large and grey_text classes
 views = d('p.text_large.grey_text b')
 print "now = %s \navg = %s \nvotes= %s \nviews = %s" % (now, avg_rating.html(), num_votes.html(), views.html())
 #f.write("%s %s %s" % (avg_rating.html(), num_votes.html(), views.html()))
 f.writerow([now, avg_rating.html(), num_votes.html(), views.html()])

if __name__ == '__main__':
 Rating('320387')

  Кстати, за приложение можно проголосовать здесь: http://goo.gl/4B87b

«Экомобиль» — передвижной пункт приема опасных отходов. Сегодня каждый экологически ответственный петербуржец может абсолютно бесплатно сдать в мобильный пункт приема «Экомобиль» следующие виды опасных отходов:
  • люминесцентные и энергосберегающие лампы,
  • ртутные термометры,
  • батарейки,
  • оргтехнику,
  • автопокрышки (не более 4-х штук)
  • бытовую химию,
  • лаки и краски,
  • лекарства с истекшим сроком годности.
Более подробную информацию можно найти на официальном сайте.