Created
March 16, 2012 20:02
-
-
Save UndeRus/2052276 to your computer and use it in GitHub Desktop.
Juick subscription graph in csv
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/python | |
# -*- coding: utf-8 -*- | |
from lxml.html import parse | |
from urllib2 import urlopen | |
import os | |
import time | |
import sys | |
JUICK_URL = "http://juick.com/" | |
processed = set() | |
errored = set() | |
tasks = [] | |
class User(object): | |
def __init__(self, nick): | |
assert isinstance(nick, basestring) | |
self.nick = nick | |
def get_friends(self): | |
friends = [] | |
try: | |
tree = parse(os.path.join(JUICK_URL, self.nick, "friends")) | |
friends = [i.text_content() for i in tree.xpath("id('content')/p/a")] | |
except IOError: | |
# print "Пользователя %s не существует" % self.nick | |
errored.add(self.nick) | |
return friends | |
def get_readers(self): | |
readers = [] | |
try: | |
tree = parse(os.path.join(JUICK_URL, self.nick, "readers")) | |
readers = [i.text_content() for i in tree.xpath("id('content')/p/a")] | |
except IOError: | |
#print "Пользователя %s не существует" % self.nick | |
errored.add(self.nick) | |
return readers | |
def process_user(name): | |
user = User(name) | |
readers = user.get_readers() | |
friends = user.get_friends() | |
for reader in readers: | |
try: | |
if (reader not in tasks) and (reader not in processed): | |
tasks.append(reader) | |
print reader + "," + name | |
except: | |
pass | |
for friend in friends : | |
try: | |
if (friend not in tasks) and (friend not in processed): | |
tasks.append(friend) | |
print name + "," + friend | |
except: | |
pass | |
processed.add(name) | |
def main(username): | |
process_user(username) | |
for user in tasks: | |
time.sleep(2) | |
process_user(user) | |
if __name__ == "__main__": | |
if len(sys.argv) != 2: | |
print "Usage: %s JUICK_NICK" % sys.argv[0] | |
return 1 | |
nick = sys.argv[1] | |
main(nick) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment