--- /dev/null
+# otpuploader.py\r
+# -*- coding: utf-8 -*-\r
+"""otpuploader.py - OpenTechPress Attachment Uploader"""\r
+\r
+from poster.encode import multipart_encode\r
+from poster.streaminghttp import register_openers\r
+import urllib\r
+import urllib2\r
+import cookielib\r
+\r
+class OtpUploader(object):\r
+ "OpenTechPress Attachment Uploader"\r
+ def __init__(self):\r
+ self.set_attach_url()\r
+\r
+ def set_attach_url(self, url=""):\r
+ if url == "":\r
+ url = "http://magazine.sourceforge.jp/fileadmin.pl"\r
+ self._attach_url = url\r
+\r
+ def login(self, username, passwd):\r
+ c = cookielib.CookieJar()\r
+ p = urllib2.HTTPCookieProcessor(c)\r
+ opener = urllib2.build_opener(p)\r
+\r
+ login_url = "http://magazine.sourceforge.jp/login.pl"\r
+ params = urllib.urlencode({\r
+ "op": "userlogin",\r
+ "unickname": username,\r
+ "upasswd": passwd,\r
+ "userlogin": u"ログイン".encode("utf-8")\r
+ })\r
+ req = opener.open(login_url, params)\r
+ self._cookie = c\r
+\r
+ def post_attachment(self, sid, filename):\r
+ params = {\r
+ "file_content": open(filename, "rb"),\r
+ "description": "",\r
+ "op": "addFileForStory",\r
+ "sid": sid,\r
+ "Submit": "Submit"\r
+ }\r
+ opener = register_openers()\r
+ opener.add_handler(urllib2.HTTPCookieProcessor(self._cookie))\r
+\r
+ (datagen, headers) = multipart_encode(params)\r
+ request = urllib2.Request(self._attach_url, datagen, headers)\r
+ res = opener.open(request)\r
+ #res = urllib2.urlopen(request)\r
+ #print res.read()\r
+\r
+if __name__ == "__main__":\r
+ import getpass\r
+ import getopt\r
+ import sys\r
+\r
+ (opts, args) = getopt.getopt(sys.argv[1:], "u:")\r
+ opt_dict = dict(opts)\r
+ print opt_dict\r
+ print args\r
+\r
+ if not "-u" in opt_dict:\r
+ uname = raw_input("Username: ")\r
+ else:\r
+ uname = opt_dict["-u"]\r
+\r
+ if len(args) < 2:\r
+ sys.exit("usage: cmd sid <filename>")\r
+ sid = args.pop(0)\r
+\r
+ passwd = getpass.getpass()\r
+ u = OtpUploader()\r
+ u.login(uname, passwd)\r
+ print "cookie: ", u._cookie\r
+\r
+ for f in args:\r
+ print "post %s to sid %s" % (f, sid)\r
+ u.post_attachment(sid, f)\r
+\r