ฉันจะใช้ python เพื่อส่งข้อมูล (รูปภาพ) ไปยัง ImageBam.com ได้อย่างไร

ฉันอ่านมามากมายเกี่ยวกับหลายส่วน/แบบฟอร์ม กลไก และสิ่งทอลายทแยง แต่ฉันไม่สามารถหาวิธีนำโค้ดไปใช้ได้อย่างไร

การใช้ MultipartPostHandler เพื่อ POST form-data ด้วย Python

ก่อนอื่นฉันพยายามกรอกแบบฟอร์ม

www.imagebam.com/basic-upload

ฉันสามารถกรอกแบบฟอร์มได้ แต่ไม่สามารถส่งข้อมูลได้จริงๆ แม้ว่าฉันจะ send() ไปแล้วก็ตาม

หลังจากดูซอร์สโค้ดที่หน้าด้านบน ฉันตระหนักว่าสิ่งที่ฉันต้องทำคือ "โพสต์" ข้อมูลในประเภทเนื้อหาที่ถูกต้องไปยังหน้า (โปรดแก้ไขฉันด้วยหากฉันผิด)

http://www.imagebam.com/sys/upload/save

โดยตรง..

ฉันพยายามใช้ poster.py แต่ไม่เข้าใจว่าสิ่งนี้ทำงานอย่างไร ฉันสามารถใช้กลไกและสิ่งทอลายทแยงได้นิดหน่อย แต่ฉันติดขัดเพราะว่ามันซับซ้อนกว่าการโพสต์แบบฟอร์มธรรมดา ฉันคิดว่า

ดังนั้นคำถามของฉัน

-ฉันจะใช้ poster.py (หรือคลาสหลายส่วนที่ผู้ใช้สร้างขึ้น) เพื่ออัปโหลดภาพไปยัง imagebam.com ได้อย่างไร

-หรือวิธีแก้ปัญหาอื่นใด :)


person gokcennurlu    schedule 14.01.2012    source แหล่งที่มา


คำตอบ (3)


อย่าพึ่งพาไลบรารีของบุคคลที่สามโดยสิ้นเชิงเช่นกลไก ใช้ API อย่างเป็นทางการใน python API ImageBam หรือดูโครงการนี้พัฒนาใน pyqt4 pymguploader เพื่ออัปโหลดภาพและพยายามนำไปใช้ด้วยตนเอง

person RanRag    schedule 14.01.2012
comment
ขอบคุณสำหรับความคิดเห็น :) ฉันพบว่า imageban api เข้าใจยาก เพราะฉันไม่รู้อะไรเกี่ยวกับ oatuh เลย ฉันแก้ไขปัญหาโดยใช้ poster.py :) - person gokcennurlu; 14.01.2012

กลไกไม่ใช่เครื่องมือที่เหมาะสมสำหรับงาน

การใช้งาน http://code.google.com/p/imagebam-api/ ใน python นั้นแข็งแกร่งกว่ามาก

ตัวอย่างอยู่ใน PHP/curl การแปลงเป็น python/urllib2 ควรเป็นเรื่องเล็กน้อย

person Paulo Scardine    schedule 14.01.2012
comment
ขอบคุณสำหรับความคิดเห็น :) ฉันแก้ไขได้โดยใช้ stackoverflow.com/questions/6850239/ โมดูลโปสเตอร์ :) - person gokcennurlu; 14.01.2012

ใช่! ฉันทำมัน. ฉันใช้คำถามนี้

นี่คือรหัส:

>>> from poster.encode import multipart_encode
>>> from poster.streaminghttp import register_openers
>>> import urllib2
>>> register_openers()
<urllib2.OpenerDirector instance at 0x02CDD828>
>>> datagen, headers = multipart_encode({"file[]": open("D:\hedef\myfile.jpg","rb"),"content_type":"1","thumb_size":"350"})
>>> request = urllib2.Request("http://www.imagebam.com/sys/upload/save", datagen, headers)
>>> print urllib2.urlopen(request).read()

ตอนนี้สิ่งที่ฉันต้องทำคือใช้ BeautifulSoup เพื่อแก้ไขโค้ดภาพขนาดย่อ :)

person gokcennurlu    schedule 14.01.2012