1

So there's two things that we do on a certain site, which is download new files and post files, and they're easily definable (and tedious), so I've been trying to script it.

So anyways, I have the file downloading script done. I'm able to re use the login code

#Cookies
cookies = http.cookiejar.LWPCookieJar()
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cookies))
urllib.request.install_opener(opener)

#Authenticate user
print("logging in")
url = "http://someurl.com/index.php?app=core&module=global&section=login&do=process"
values = {"username" : USERNAME, 
          "password" : PASSWORD}
data = urllib.parse.urlencode(values)
req = urllib.request.Request(url, data)
urllib.request.urlopen(req)

But to post a thread with said file you have to attach it. I know how to send it the proper title and text for the thread from what I learned on how to log in. My problem is that to attach files you have to send a request to a form not a page request. E.G. You select what file you want from file dialog and then click attach files, which it then uploads, you then finish writing up you're thread and THEN submit page.

Here's relevant html

<fieldset class='attachments'> 

<script type='text/javascript'> 
//<![CDATA[
 ipb.lang['used_space'] = "Used <strong>[used]</strong> of your <strong>[total]</strong> global upload quota (Max. single file size: <strong>256MB</strong>)";
//]]>
</script> 

<h3 class='bar'>Attachments</h3> 
<!--SKINNOTE: traditional uploader needs this. --> 
<div id='attach_error_box' class='message error' style='display:none'></div> 
<input type='file' id='nojs_attach_0_1' class='input_upload' name='FILE_UPLOAD' tabindex='1' /> 
<input type='file' id='nojs_attach_0_2' class='input_upload' name='FILE_UPLOAD' tabindex='1' /> 

<ul id='attachments'><li style='display: none'></li></ul> 
<br /> 
<span id='buttonPlaceholder'></span> 
<input type='button' id='add_files_attach_0' class='input_submit' value='Attach This File' style='display: none; clear: both' tabindex='1' /> <span class='desc' id='space_info_attach_0'>Used <strong>9.45MB</strong> of your <strong>976.56MB</strong> global upload quota (Max. single file size: <strong>256MB</strong>)</span>

I have no idea how to code this, so I'm looking for direction.

Also on a sidenote if this sorta script might've been easier in other languages tell me which? I only used python because I knew it.

Thanks a lot.

Lennart Regebro
  • 167,292
  • 41
  • 224
  • 251
Guillaume
  • 1,022
  • 1
  • 9
  • 17
  • Just FYI: Forms submissions *are* page requests, and when you do your login, since you are using a data value in your Request() call you are sending a post request to a form already. The problem is figuring out how to send the file, to what URL etc, which can be tricky since it's done via javascript. – Lennart Regebro Jan 15 '11 at 08:53

0 Answers0