summaryrefslogtreecommitdiffstats
path: root/tasks.py
diff options
context:
space:
mode:
authorThibaut Horel <thibaut.horel@gmail.com>2014-10-24 12:16:51 -0400
committerThibaut Horel <thibaut.horel@gmail.com>2014-10-24 12:16:51 -0400
commitece1d828d53d6123fcecb5ea8bf9b126d1728ccc (patch)
treeb669382d0e5f1234556d1aeb7fa919891510b24d /tasks.py
parent7426d8ff0e7969eb1a86bdb5bec8a0c971309e2b (diff)
downloadfast-seeding-ece1d828d53d6123fcecb5ea8bf9b126d1728ccc.tar.gz
Add code
Diffstat (limited to 'tasks.py')
-rw-r--r--tasks.py111
1 files changed, 0 insertions, 111 deletions
diff --git a/tasks.py b/tasks.py
deleted file mode 100644
index cb0c3aa..0000000
--- a/tasks.py
+++ /dev/null
@@ -1,111 +0,0 @@
-from xvfbwrapper import Xvfb
-from selenium import webdriver
-from selenium.common.exceptions import ElementNotVisibleException,\
- NoSuchElementException, StaleElementReferenceException
-from time import sleep
-from bs4 import BeautifulSoup
-from celery import Celery, Task
-from urllib2 import urlopen
-
-app = Celery('tasks', broker='amqp://guest@horel.org//')
-app.conf.CELERY_RESULT_BACKEND = 'rpc'
-app.conf.CELERY_ENABLE_UTC = True
-drivers = [None]
-
-
-def normalize(url):
- if "profile.php" in url:
- basename = url.split("&")[0]
- fname = basename.split("=")[-1]
- getname = basename + "&sk=friends"
- else:
- basename = url.split("?")[0]
- fname = basename.split("/")[-1]
- getname = basename + "/friends"
- return basename, fname, getname
-
-
-class ListFollowers(Task):
-
- @property
- def driver(self):
- if drivers[0] is None:
- uname, passwd = urlopen("http://horel.org:8080/").readline().strip().split()
- vdisplay = Xvfb()
- vdisplay.start()
- driver = webdriver.Chrome()
- driver.get("https://facebook.com")
- driver.find_element_by_id("email").send_keys(uname)
- elem = driver.find_element_by_id("pass")
- elem.send_keys(passwd)
- elem.submit()
- drivers[0] = driver
- return drivers[0]
-
- def run(self, url):
- self.driver.get(url)
- while True:
- for i in xrange(5):
- try:
- footer = self.driver.find_element_by_class_name("_359")
- except (NoSuchElementException, ElementNotVisibleException):
- sleep(0.1)
- else:
- break
- else:
- break
-
- try:
- footer.click()
- except StaleElementReferenceException:
- sleep(0.1)
-
- for i in xrange(5):
- try:
- div = self.driver.find_element_by_class_name("_30f")
- except NoSuchElementException:
- sleep(0.1)
- else:
- break
- else:
- return {"friends": [], "for": url}
-
- soup = BeautifulSoup(div.get_attribute("outerHTML"))
- return {"friends": [li.a["href"]
- for li in soup.findAll("li", class_="_698")],
- "for": url}
-
-
-class NumFollowers(Task):
-
- @property
- def driver(self):
- if drivers[0] is None:
- uname, passwd = urlopen("http://horel.org:8080/").readline().strip().split()
- vdisplay = Xvfb()
- vdisplay.start()
- driver = webdriver.Chrome()
- driver.get("https://facebook.com")
- driver.find_element_by_id("email").send_keys(uname)
- elem = driver.find_element_by_id("pass")
- elem.send_keys(passwd)
- elem.submit()
- drivers[0] = driver
- return drivers[0]
-
- def run(self, url):
- self.driver.get(url)
- for i in xrange(5):
- try:
- box = self.driver.find_element_by_class_name("_1f8g")
- except (NoSuchElementException, ElementNotVisibleException):
- sleep(0.1)
- else:
- break
- else:
- return {"nfriends": 0, "for": url}
-
- soup = BeautifulSoup(box.get_attribute("outerHTML"))
- a = soup.find("a", class_="uiLinkSubtle")
- return {"nfriends": int(a.string.replace(",", "")),
- "for": url}