Pastebin API Вставить данные

Я пытался заставить API pastebin вместо того, чтобы сообщать мне ссылку pastebin, просто выводить необработанные данные. PHP-код таков:

<?php

$api_dev_key        = 'Stackoverflow(fake key)';    
$api_paste_code         = 'API.'; // your paste text
$api_paste_private      = '1'; // 0=public 1=unlisted 2=private
$api_paste_expire_date  = 'N';
$api_paste_format       = 'php';
$api_paste_code     = urlencode($api_paste_code);

$url            = 'http://pastebin.com/api/api_post.php';
$ch             = curl_init($url);

?>

Обычно это загружает $api_paste_code в pastebin, отображая его как pastebin.com/St4ck0v3RFL0W, но вместо этого я хочу, чтобы он генерировал необработанные данные.

Ссылка на необработанные данные: http://pastebin.com/raw.php?i= , кто-нибудь может помочь?

Ссылка: http://pastebin.com/api


person user1725113    schedule 24.10.2012    source источник


Ответы (2)


Во-первых, обратите внимание, что вы должны отправить POST запрос к API pastebin.com, а не GET. Поэтому не используйте urlencode() в своих входных данных!

Чтобы получить необработанный URL-адрес вставки из URL-адреса страницы, у вас есть несколько вариантов. Но проще всего наверное:

$apiResonse = 'http://pastebin.com/ABC123';
$raw        = str_replace('m/', 'm/raw.php?i=', $apiResponse);

Наконец, вот полный пример:

<?php
$data = 'Hello World!';

$apiKey  = 'xxxxxxx';                         // get it from pastebin.com
$apiHost = 'http://pastebin.com/';

$postData = array(
    'api_dev_key'    => $apiKey,             // your dev key
    'api_option'     => 'paste',             // action to perform
    'api_paste_code' => utf8_decode($data),  // the paste text
);

$ch = curl_init();
curl_setopt_array($ch, array(
    CURLOPT_URL             => "{$apiHost}api/api_post.php",
    CURLOPT_RETURNTRANSFER  => 1,
    CURLOPT_POST            => 1,
    CURLOPT_POSTFIELDS      => http_build_query($postData),
));

$result = curl_exec($ch); // on success, some string like 'http://pastebin.com/ABC123'
curl_close($ch);

if ($result) {
    $pasteId = str_replace($apiHost, '', $result);
    $rawLink = "{$apiHost}raw.php?i={$pasteId}";

    echo "Created new paste.\r\n Paste ID:\t{$pasteId}\r\n Page Link:\t{$result}\r\n Raw Link:\t{$rawLink}\r\n";
}

Запустив приведенный выше код, выводит:

c:\xampp\htdocs>php pastebin.php
Created new paste.
 Paste ID:      Bb8Ehaa7
 Page Link:     http://pastebin.com/Bb8Ehaa7
 Raw Link:      http://pastebin.com/raw.php?i=Bb8Ehaa7
person eyecatchUp    schedule 26.04.2013

Насколько я вижу, ответ содержит URL-адрес Pastebin, сгенерированный при создании контента. Такой URL-адрес:

http://pastebin.com/UIFdu235s

Итак, вам нужно только избавиться от «http://pastebin.com/», делая:

$id = str_replace("http://pastebin.com/", "", $url_received_on_last_step);

Затем добавьте его к необработанному URL-адресу, который вы предоставили:

$url_raw = "http://pastebin.com/raw.php?i=".$id;

И вы получите необработанные данные.

person Patrick D'appollonio    schedule 24.10.2012
comment
Но где ты взял $url_received_on_last_step? Я не вижу в вашем коде (из предоставленного изображения), что вы действительно получили полученный URL-адрес. - person Patrick D'appollonio; 06.11.2012