Я использую Rauth для моих запросов в API Beatport. Я использую этот рабочий пример в PHP в качестве ссылки.
В этом PHP-коде ниже используется токен запроса для входа в систему и проверки подлинности для 3-legged auth
ini_set('max_execution_time', 500); $submit = "Login"; $url = $auth_submiturl; $curl_connection_bp = curl_init(); curl_setopt($curl_connection_bp, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl_connection_bp, CURLOPT_URL, $url); curl_setopt($curl_connection_bp, CURLOPT_CONNECTTIMEOUT, 0); curl_setopt($curl_connection_bp, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT6.0; en-US; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11"); curl_setopt($curl_connection_bp, CURLOPT_HTTPAUTH, CURLAUTH_ANY); curl_setopt($curl_connection_bp, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl_connection_bp, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($curl_connection_bp, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($curl_connection_bp, CURLOPT_VERBOSE, false); // when true, this outputs the oauth_token and oauth_verifier value that are posted to the callback URL curl_setopt($curl_connection_bp, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST); curl_setopt($curl_connection_bp, CURLOPT_REFERER, $curl_connection_bp); curl_setopt($curl_connection_bp, CURLOPT_FAILONERROR, 0); $post_string = 'oauth_token='.$request_token_info['oauth_token'] . '&username=' . $beatport_login . '&password=' . $beatport_password . '&submit=Login'; curl_setopt($curl_connection_bp, CURLOPT_POST, true); curl_setopt($curl_connection_bp, CURLOPT_POSTFIELDS, $post_string); $beatport_response = curl_exec($curl_connection_bp); $beatport_response = json_decode($beatport_response); print_r($beatport_response);
Как я могу достичь этого в Python? Я думаю, мне нужно использовать urllib, но я не могу понять PHP-код.
Почему бы просто не использовать запросы? http://www.python-requests.org/en/latest/
Эта библиотека должна иметь возможность делать то, что делает этот PHP-код, легко.
use pycurl – это реализация python lib curl.
import pycurl c = pycurl.Curl() c.setopt(pycurl.URL, "http://www.python.org/") c.setopt(pycurl.HTTPHEADER, ["Accept:"]) ...
вы можете найти больше примеров и документации здесь http://pycurl.sourceforge.net/doc/curlobject.html
Вы должны использовать urlopen для выдачи запросов.
Простой пример:
import urllib2 result = urllib2.urlopen("http://www.google.com/") print result.read()
Подробнее здесь: http://docs.python.org/2/library/urllib2.html
Примеры кода Google urlopen, и вы найдете то, что вам нужно.
Я бы не стал пытаться преобразовать PHP-код в python, а вместо этого просто искать способ Python получить этот ответ. Немного googling, и похоже, что это может быть дубликат:
Инициализация клиента Oauth в python для tumblr API с использованием Python-oauth2