OSDN Git Service

add wp_imgswap2.py for new OSDN Magazine
[otptools/otptools.git] / sdtools.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://slashdot.jp/login.pl"\r
8 OTP_LOGIN_HOST = "slashdot.jp"\r
9 OTP_LOGIN_PATH = "/login.pl"\r
10 \r
11 OTP_LOGIN_PARAM = {\r
12     "op":"userlogin",\r
13     "unickname":"",\r
14     "returnto":"http://slashdot.jp",\r
15     "upasswd":"",\r
16 #    "login_temp":0,\r
17     "userlogin":"ログイン",\r
18     }\r
19 \r
20 OTP_LIST_PATH = "/admin.pl"\r
21 \r
22 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
23 \r
24 import sys\r
25 import os\r
26 import copy\r
27 import urllib, urllib2\r
28 import httplib\r
29 \r
30 class otptools(object):\r
31     """\r
32     Open Tech Press management library core module.\r
33     """\r
34 \r
35     def __init__(self, path_cookie, login_name="", login_password=""):\r
36         """\r
37         @param path_cookie: path of file which cookie's information stored.\r
38         @type  path_cookie: stinrg\r
39 \r
40         @param login_name: OTP's login name for use.\r
41         @type  login_name: string\r
42 \r
43         @param login_password: OTP's login password.\r
44         @type  login_password: string\r
45         """\r
46         self.path_cookie = path_cookie\r
47         self.unickname = login_name\r
48         self.upasswd = login_password\r
49         self.cookie = ""\r
50 \r
51     def login(self):\r
52                 """\r
53                 login to OTP.\r
54                 """\r
55         login_param = copy.deepcopy(OTP_LOGIN_PARAM)\r
56         login_param["unickname"] = self.unickname\r
57         login_param["upasswd"] = self.upasswd\r
58 \r
59         for item in login_param:\r
60             print "%s > %s" % (item, login_param[item])\r
61 \r
62         encoded_data = urllib.urlencode(login_param)\r
63         print encoded_data\r
64 \r
65         headers = {\r
66             "User-Agent": BROWSER,\r
67             "Content-type": "application/x-www-form-urlencoded",\r
68             "Accept": "text/plain",\r
69             }\r
70 \r
71 #        obj = urllib.urlopen(OTP_LOGIN_URL, encoded_data)\r
72 #        print obj.info()\r
73 \r
74         obj = httplib.HTTPConnection(OTP_LOGIN_HOST)\r
75         obj.request("POST", OTP_LOGIN_PATH, encoded_data, headers)\r
76         resp = obj.getresponse()\r
77         headers = resp.getheaders()\r
78 \r
79         for item in headers:\r
80             print item\r
81 \r
82 #        for header in headers:\r
83 #            if header[0] == "set-cookie":\r
84 #                str_cookie = header[1]\r
85 #                break\r
86 #        else:\r
87 #            return -1\r
88 #\r
89 #        self.cookie = str_cookie\r
90 #        return 1\r
91 \r
92     def save_cookie(self):\r
93         file_obj = open(self.path_cookie, "w")\r
94         file_obj.write(self.cookie)\r
95         file_obj.close()\r
96 \r
97     def load_cookie(self):\r
98                 """\r
99                 load session cookie from file.\r
100                 """\r
101         file_obj = open(self.path_cookie, "r")\r
102         self.cookie = file_obj.readline()\r
103         file_obj.close()\r
104 \r
105     def get_list(self):\r
106                 """\r
107                 Access admin.pl and retrieve stories list.\r
108                 """\r
109         headers = {\r
110             "User-Agent": BROWSER,\r
111             "Content-type": "application/x-www-form-urlencoded",\r
112             "Accept": "text/plain",\r
113             "Cookie": self.cookie,\r
114             }\r
115         obj = httplib.HTTPConnection(OTP_LOGIN_HOST)\r
116         obj.request("POST", OTP_LIST_PATH, "", headers)\r
117         resp = obj.getresponse()\r
118         headers = resp.getheaders()\r
119 \r
120         return resp.read()\r
121 \r
122         \r