2 # -*- coding: utf-8 -*-
4 """otpuploader.py - OpenTechPress Attachment Uploader"""
6 from poster.encode import multipart_encode
7 from poster.streaminghttp import register_openers
12 class OtpUploader(object):
13 "OpenTechPress Attachment Uploader"
17 def set_attach_url(self, url=""):
19 url = "http://magazine.sourceforge.jp/fileadmin.pl"
20 self._attach_url = url
22 def login(self, username, passwd):
23 c = cookielib.CookieJar()
24 p = urllib2.HTTPCookieProcessor(c)
25 opener = urllib2.build_opener(p)
27 login_url = "http://magazine.sourceforge.jp/login.pl"
28 params = urllib.urlencode({
30 "unickname": username,
32 "userlogin": u"ログイン".encode("utf-8")
34 req = opener.open(login_url, params)
37 def post_attachment(self, sid, filename):
39 "file_content": open(filename, "rb"),
41 "op": "addFileForStory",
45 opener = register_openers()
46 opener.add_handler(urllib2.HTTPCookieProcessor(self._cookie))
48 (datagen, headers) = multipart_encode(params)
49 request = urllib2.Request(self._attach_url, datagen, headers)
50 res = opener.open(request)
51 #res = urllib2.urlopen(request)
54 if __name__ == "__main__":
59 (opts, args) = getopt.getopt(sys.argv[1:], "u:")
64 if not "-u" in opt_dict:
65 uname = raw_input("Username: ")
67 uname = opt_dict["-u"]
70 sys.exit("usage: cmd sid <filename>")
73 passwd = getpass.getpass()
75 u.login(uname, passwd)
76 print "cookie: ", u._cookie
79 print "post %s to sid %s" % (f, sid)
80 u.post_attachment(sid, f)