OSDN Git Service

add list-retrieve function.
[otptools/otptools.git] / retrive_storylist.py
1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3
4 import os, sys
5 import otptools
6 import getpass
7 import codecs
8
9 sys.stdout = codecs.getwriter('utf_8')(sys.stdout)
10
11 try:
12         start = sys.argv[1]
13         end = sys.argv[2]
14 except IndexError:
15         uname = ""
16         sys.exit(sys.argv[0] + " start end")
17
18 if (not start.isdigit()) or (not start.isdigit()):
19         sys.exit(sys.argv[0] + " start end")
20
21
22
23 uname = ""
24
25 otp = otptools.otptools("./cookies.txt", uname)
26 try:
27         otp.load_cookie()
28 except IOError:
29         sys.stderr.write("cannot use cookie file. create.\n")
30
31         if otp.get_cookie() == "":
32                 if uname == "":
33                         try:
34                                 uname = raw_input("user: ")
35                         except KeyboardInterrupt:
36                                 sys.exit("\nabort.")
37                 try:
38                         passwd = getpass.getpass("login password:")
39                 except KeyboardInterrupt:
40                         sys.exit("\nabort.")
41                 if otp.login(uname, passwd) != 1:
42                         sys.exit("login error!")
43
44 otp.save_cookie()
45 story_infos = {}
46 start_index = int(start)
47 max_index = int(end)
48
49 sys.stderr.write( "retrieving lists..." )
50
51 for index in range(start_index, max_index, 40):
52         html = otp.get_list(index)
53         story_infos = otp.parse_list( html, story_infos )
54
55 sys.stderr.write( "sorting..." )
56 sort_keys = story_infos.keys()
57 sort_keys.sort(lambda x,y: cmp(story_infos[y], story_infos[x]))
58
59 sys.stderr.write( "retrieving tags..." )
60 for url in sort_keys:
61         tags = otp.get_tags( "http:" + url )
62
63         story_infos[url]["tags"] = unicode( "|".join(tags), "utf_8" )
64         sys.stderr.write(".")
65
66 for url in sort_keys:
67         for item in story_infos[url]:
68                 str =story_infos[url][item]
69         print "%(url)s,%(title)s,%(editor)s,%(page_views)s,%(comments)s,%(datetime)s,%(tags)s" % story_infos[url]
70
71 sys.stderr.write( "done.\n" )