Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python
- import sys,requests,re
- URL = 'http://www.reddit.com/r/dailyprogrammer/.json?limit=none&after='
- # output format
- # [Easy / Medium / Hard] #<ID>: "<Title>" <URL>
- # title format:
- # [01/21/13] Challenge #118 [Easy] Date Localization
- # [easy] challenge #2
- def format_title(title):
- m = re.search(r'\[easy.*\]|\[intermediate\]|\[difficult\]|\[hard\]',title,flags=re.IGNORECASE)
- difficulty = ""
- if m:
- difficulty = m.group()
- for x,y in [("easy","Easy"),("intermediate","Medium"),("difficult","hard")]:
- difficulty = re.sub(x,y,difficulty,flags=re.IGNORECASE)
- m = re.search(r'#\d*',title)
- number = ""
- if m:
- number = m.group()
- m = re.search(r'#\d*\s\[\w*\]\s(\w*.*$)',title)
- name = ""
- if m:
- name = m.group(1)
- return difficulty.title() + " " + number + ": " + name
- def get_posts():
- r = requests.get(URL)
- j = r.json()
- posts = j['data']['children']
- titles = []
- while True:
- for post in posts:
- title = post['data']['title']
- if "#" not in title or "Challenge" not in title:
- continue
- title = format_title(title)
- url = post['data']['url']
- titles.append(title + " " + url)
- if j['data']['after'] == None:
- break
- r = requests.get(URL+j['data']['after'])
- j = r.json()
- posts = j['data']['children']
- return titles
- def sort_level(post):
- first_word = (post.split())[0]
- second_word = (post.split())[1]
- second_len = len(second_word)
- second_word = int(second_word[1:second_len-1])
- if "Easy" in first_word:
- return (0,second_word)
- if "Medium" in first_word:
- return (1,second_word)
- if "Hard" in first_word:
- return (2,second_word)
- return 3
- def sort_number(post):
- first_word = (post.split())[0]
- second_word = (post.split())[1]
- second_len = len(second_word)
- second_word = int(second_word[1:second_len-1])
- if "Easy" in first_word:
- return (second_word,0)
- if "Medium" in first_word:
- return (second_word,1)
- if "Hard" in first_word:
- return (second_word,2)
- return 3
- def main():
- posts = get_posts()
- print "List One:"
- list1 = sorted(posts, key=sort_level)
- for post in list1:
- print post
- print "List Two:"
- list1 = sorted(posts, key=sort_number)
- for post in list1:
- print post
- if __name__ == '__main__':
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement