Submitting a form with mechanize (TypeError: ListControl, must set a sequence)
Asked Answered
D

1

8

I'm trying to submit a form with mechanize but have run into an error (TypeError: ListControl, must set a sequence) After googling for some time and trying a couple of different solutions I haven't been able to solve the issue. I'm trying to submit all the fields.

The form data fetched via mechanize (for f in br.forms() print: f)

<POST http://www.example.com/takeupload.php multipart/form-data
<HiddenControl(MAX_FILE_SIZE=1000000) (readonly)>
<TextControl(<None>=http://www.example.com:81/test.php?pass=550) (readonly)>
<FileControl(file=<No files added>)>
<TextControl(name=)>
<SelectControl(type=[*0, 23, 22, 1, 10, 7, 18, 4, 21, 56, 20, 60, 5, 19, 6, 55, 63, 9])>
<CheckboxControl(strip=[strip])>
<FileControl(nfo=<No files added>)>
<TextareaControl(descr=)>
<SubmitControl(<None>=Do it!) (readonly)>>

My current code

br.open('http://www.bitfarm.co.za/upload.php')

br.select_form(nr=4)

filename = 'test.torrent'
br.form.add_file(open(filename), 'application/x-bittorrent', filename, name='file') 
br.form['name'] = 'test'
br.form['type'] = '22'
br.form['strip'] = '0'
br.form['nfo'] = ''
br.form['descr'] = 'This is the desc'

br.submit()

Please could you assist and check I'm using the right syntax for the form options. Thanks

Din answered 6/2, 2012 at 14:37 Comment(0)
T
14

type field expects a list of integers from you, but you provide just one integer.
Change this:

br.form['type'] = '22'

to this:

br.form['type'] = ['22',]
Tricrotic answered 6/2, 2012 at 15:38 Comment(3)
@Michael, I have to double check by myself, so it will be much faster, if you just run your code and see whether it works yourself.Tricrotic
Thanks it does work, kinda. One has error. The br.form['descr'] is giving an SyntaxError: Non-ASCII character '\xe2' in file C:\Python\login.py on line 79, b ut no encoding declared How do I set encoding to be correct? ThanksDin
@Michael, the only suggestion I can make without seeing your file, is - read this: python.org/dev/peps/pep-0263Tricrotic

© 2022 - 2024 — McMap. All rights reserved.