OSDN Git Service

Add parsing admin.pl function.
[otptools/otptools.git] / otptools.py
1 #!/usr/bin/env python\r
2 # -*- coding: utf-8 -*-\r
3 """\r
4 otptools base module - retain session/login info\r
5 """\r
6 \r
7 OTP_LOGIN_URL = "http://magazine.sourceforge.jp/login.pl"\r
8 OTP_LOGIN_HOST = "magazine.sourceforge.jp"\r
9 OTP_LOGIN_PATH = "/login.pl"\r
10 \r
11 OTP_LOGIN_PARAM = {\r
12         "op":"userlogin",\r
13         "unickname":"",\r
14         "upasswd":"",\r
15 #       "login_temp":0,\r
16         "userlogin":"ログイン",\r
17         }\r
18 \r
19 OTP_LIST_PATH = "/admin.pl"\r
20 \r
21 BROWSER = "Mozilla/5.0 (Windows; U; Windows NT 6.0; ja; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7 (.NET CLR 3.5.30729) "\r
22 \r
23 import sys, os\r
24 import copy\r
25 import urllib, urllib2\r
26 import httplib\r
27 \r
28 class otptools(object):\r
29         """\r
30         Open Tech Press management library core module.\r
31         """\r
32 \r
33         def __init__(self, path_cookie, login_name="", login_password=""):\r
34                 """\r
35                 @param path_cookie: path of file which cookie's information stored.\r
36                 @type  path_cookie: stinrg\r
37 \r
38                 @param login_name: OTP's login name for use.\r
39                 @type  login_name: string\r
40 \r
41                 @param login_password: OTP's login password.\r
42                 @type  login_password: string\r
43                 """\r
44                 self.path_cookie = path_cookie\r
45                 self.unickname = login_name\r
46                 self.upasswd = login_password\r
47                 self.cookie = ""\r
48 \r
49         def login( self ):\r
50                 login_param = copy.deepcopy( OTP_LOGIN_PARAM )\r
51                 login_param["unickname"] = self.unickname\r
52                 login_param["upasswd"] = self.upasswd\r
53 \r
54 #               for item in login_param:\r
55 #                       print "%s > %s" % (item, login_param[item] )\r
56 \r
57                 encoded_data = urllib.urlencode( login_param )\r
58 #               print encoded_data\r
59 \r
60                 headers = {\r
61                         "User-Agent": BROWSER,\r
62                         "Content-type": "application/x-www-form-urlencoded",\r
63                         "Accept": "text/plain",\r
64                         }\r
65 \r
66                 obj = httplib.HTTPConnection( OTP_LOGIN_HOST )\r
67                 obj.request( "POST", OTP_LOGIN_PATH, encoded_data, headers )\r
68                 resp = obj.getresponse()\r
69                 headers = resp.getheaders()\r
70 \r
71 #               for item in headers:\r
72 #                       print item\r
73 \r
74                 for header in headers:\r
75                         if header[0] == "set-cookie":\r
76                                 str_cookie = header[1]\r
77                                 break\r
78                 else:\r
79                         return -1\r
80 \r
81                 self.cookie = str_cookie\r
82                 return 1\r
83 \r
84         def save_cookie(self):\r
85                 file_obj = open( self.path_cookie, "w" )\r
86                 file_obj.write( self.cookie )\r
87                 file_obj.close()\r
88 \r
89         def load_cookie(self):\r
90                 file_obj = open( self.path_cookie, "r" )\r
91                 self.cookie = file_obj.readline()\r
92                 file_obj.close()\r
93 \r
94         def get_list(self):\r
95                 headers = {\r
96                         "User-Agent": BROWSER,\r
97                         "Content-type": "application/x-www-form-urlencoded",\r
98                         "Accept": "text/plain",\r
99                         "Cookie": self.cookie,\r
100                         }\r
101                 obj = httplib.HTTPConnection( OTP_LOGIN_HOST )\r
102                 obj.request( "POST", OTP_LIST_PATH, "", headers )\r
103                 resp = obj.getresponse()\r
104                 headers = resp.getheaders()\r
105 \r
106                 return resp.read()\r
107 \r
108                 \r