Форум сайта python.su
lorienНе понял ничего.
Unicode - это виртуальный формат, чтоб передать или сохранить куда-либо данные, нужно привести их к осязаемомому формату, который можно пощупать, к любой кодировке: cp1251, utf-8, koi8-r, latin-1 и т.д.
lorienКак классно. А сам pycurl так может?
1) Сохранить строку в файл и использовать UploadFile
Офлайн
lorienА почему в utf8? Может, лучше UploadFile поправить?
> UploadFile не принимает имя файла в юникоде.
Ну так переведите в utf-8 его.
lorienАплоадить файл не с диска.
> Как классно. А сам pycurl так может?
Как так?
Офлайн
lorienНе, эт не то. Надо так, через READFUNCTION. Добавишь?
2) Есть ещё grab.upload.UploadContent, но по-моему он не работает. Я не помню, очень давно делал эту фичу.
Офлайн
lorienopen() же не угадывает, а берет юникод?
> А почему в utf8? Может, лучше UploadFile поправить?
Не знаю, надо подумать. На уровне ОС имя файла хранится же в уникоде, а в какой-то кодировке. Надо решить должен ли Grab угадывать эту кодировку или это задача пользователя Grab.
lorienЗаливка - это put запрос?
> Не, эт не то. Надо так, через READFUNCTION. Добавишь?
Так это не заливка файла с помощью multipart/form-data - это просто заливка данных, считанных из файла, насколько я понимаю. То же самое сейчас можно сделать с помощью:
Офлайн
Может, это
CURLFORM_BUFFER
is used for custom file upload parts without use of CURLFORM_FILE. It tells libcurl that the file contents are already present in a buffer. The parameter is a string which provides the filename field in the content header.
Офлайн
lorienА то. Юникод pycurl никак не берет?
Если передать utf-8 в UploadFile, то всё работает. Проблема в том, что на ОС windows например, возможно, надо не utf-8 а другую кодировку, да и в linux это зависит от настроек каких-то думаю.
lorienЧто это значит - вроде бы понятно. Только я в этом гавне ничего не понимаю. Как я понял, в pycurl доступны только curl_easy_setopt, а с ним хз как. Доки ссылаются на CURLOPT_HTTPPOST, параметр которого строится с помощью curl_formadd, который в pycurl тупо недоступен. Честно, чем в этом УГ ковырятся, проще было бы написать нативный код на питоне.
Предоставь код на pycurl, который делает заливку файла не с диска(что бы это ни значило), я внедрю этот код в Grab.
Офлайн
lorienНу если Вы так ставите вопрос, то нам это не настолько сильно нужно.
> А то. Юникод pycurl никак не берет?
Не знаю. Если вам это так сильно нужно - разберитесь, присылайте патч к грабу.
lorienЯ имел в виду заменить pycurl на что-то нативное.
> Честно, чем в этом УГ ковырятся, проще было бы написать нативный код на питоне.
Пишите нативный код. Присылайте патч.
Отредактировано odnochlen (Июнь 29, 2012 20:43:30)
Офлайн
lorienПотому, что это Ваш модуль и Вы его лучше знаете?
> A поддержку FORM_FILENAME запилить можете?
Что это? Опять же, почему сами не запилите? Это же Open Source. Каждый пилит то, что ему нужно.
Офлайн
lorienОпенсорс -это лицензия кода, больше ничего. Хотя есть люди, которые считают, что опенсорс - это полный отказ от ответственности, ненадобность документации и прижизненный памятник. О таких еще Карманов пишет.
У вас какое-то странное представление об Open Source.
lorienЛюди, которые хотят и могут разбираться в угробищном (с точки зрения питониста) pycurl - это обычно не те люди, которые хотят пользоваться высокоуровневой библиотекой.
Но неприятно то, что мало людей, которые хотят разобраться, что там внутри и что-то подкрутить.
lorienНу тогда не горите дальше. Не очень тогда понятно, почему Вы поподнимали темы про pycurl аж 2007 года.
Но это не значит, что я горю желанием делать фичереквесты пользователей библиотеки.
Офлайн
lorienПри том, что юзеру по барабану лицензия кода - он оценивает результат.
При чём тут лицензия вообще?
lorienСами же написали, что там конь не валялся.
> Люди, которые хотят и могут разбираться в угробищном (с точки зрения питониста) pycurl - это обычно не те люди, которые хотят пользоваться высокоуровневой библиотекой.
Я же вам выше написал, в грабе разные транспорты есть. Вам похоже больше нравится демагогией заниматься, чем изучать сорцы Grab, читать его документацию, пробовать транспорты отличные от pycurl.
lorienДля того, чтобы знать родной (или он Вам не родной?) язык, Вам асилятор нужен?
asilyator, перелогинься
Офлайн