Добавляю черновой вариант консольной утилиты для заливки на rghost.ru
[archive.git] / Apkawa / rghost.ru.py
blob2fa88c0e77460bb76c6abd12183f65087329b2a3
1 # -*- coding: utf-8 -*-
2 import httplib, mimetypes, sys
3 USER_AGENT = 'Mozilla/5.0 (X11; U; Linux i686; ru-RU; rv:1.9.0.2pre) Gecko/2008072703 Firefox/3.0.2pre (Swiftfox)'
5 def get_file_contents(file_name):
6 f = open(file_name);
7 data = f.read()
8 f.close()
9 return data
11 def get_content_type(file_name):
12 cont_type=mimetypes.guess_type(file_name)[0] or 'application/octet-stream'
13 return cont_type
15 def encode_multipart_formdata(filename):
16 BOUNDARY = '----------'
17 CRLF = '\r\n'
18 L = []
19 # add additional form fields
20 form_vaule = {'authenticity_token':'13619ba0aed720f2c822937f14409450d658b50c'}
22 L.append('--' + BOUNDARY)
23 L.append('Content-Disposition: form-data; name="authenticity_token"')
24 L.append('')
25 L.append('13619ba0aed720f2c822937f14409450d658b50c')
26 L.append('--' + BOUNDARY)
27 L.append('Content-Disposition: form-data; name="file"; filename="%s"' \
28 % (filename))
29 L.append('Content-Type: %s' % get_content_type(filename))
30 L.append('')
31 L.append(get_file_contents(filename))
32 L.append('--' + BOUNDARY + '--')
33 L.append('')
34 body = CRLF.join(L)
35 content_type = 'multipart/form-data; boundary=%s' % BOUNDARY
37 return content_type, body
39 def upload_file(filename):
40 cookie = '_rghost_session=BAh7CDoMY3NyZl9pZCIlMjYzMjY4MzBiNGUwNzE0NWI3ODBlODhmNmNmYTk1ZTgiCmZsYXNoSUM6J0FjdGlvbkNvbnRyb2xsZXI6OkZsYXNoOjpGbGFzaEhhc2h7AAY6CkB1c2VkewA6CWxhbmciCnJ1LVJV--bd4e9c60b4a8ccb5a6b9f797bdc07a4265150872'
41 content_type, body = encode_multipart_formdata(filename)
42 header = httplib.HTTPConnection('phonon.rghost.ru')
43 header.putrequest('POST', '/files')
44 header.putheader('User-Agent', USER_AGENT)
45 header.putheader('Cookie',cookie)
46 header.putheader('Content-Type', content_type)
47 header.putheader('Content-Length', str(len(body)))
48 header.endheaders()
49 header.send(body)
50 #header.set_debuglevel(1)
51 return header.getresponse()
53 if __name__ == '__main__':
54 filename = sys.argv[1]
55 print upload_file(filename).getheader('location')