Felipe Lalanne

I'm an Informatics Engineer from the University of Chile and currently Ph.D student at Telecom SudParis in France. My research is in Model-based testing. I'm also a bicycle enthusiast, a GNU/Linux fanatic and a TV and movie lover. I was born in Chile but I'm currently living in Paris.
Recent Tweets @pipex

As I recently discovered, there is no way to delete all posts from Tumblr, to give yourself a fresh start. My girlfriend needed this feature to erase her 17 pages of Twitter posts in hers. To help her I created this little piece of PHP code. Just in case this code will delete ALL of your tumblr posts.

You can obtain the JSON.php file from this page.

PD: If you want to highlight your code in Tumblr (trust me it’s a pain in the …), follow this guide.


function curl_get_file_contents($URL)
    $c = curl_init();
    curl_setopt($c, CURLOPT_HTTPHEADER, array('Pragma: no-cache'));    
    curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($c, CURLOPT_URL, $URL);
    $contents = curl_exec($c);

    if ($contents) return $contents;
    else return FALSE;

// Authorization info
$tumblr_url = "http://mytumblr.tumblr.com"
$tumblr_email = 'mymail@mydomain.com';
$tumblr_password = 'mypassword';

$str = curl_get_file_contents("$tumblr_url/api/read/json");
$str = substr($str, 22);
$str = substr($str, 0, strlen($str)-2);

$s = new Services_JSON(SERVICES_JSON_IN_STR);
$o = $s->decode($str);

$name = 'posts-total';
$total = $o->$name;
print "TOTAL posts to delete: $total\n";
// Send the POST request (with cURL)
$c = curl_init('http://www.tumblr.com/api/delete');
$count = 0;
while ($count < $total) {
    foreach ($o->posts as $post) {
        $id = $post->id;

        // Prepare POST request
        $request_data = "email=$tumblr_email&password=$tumblr_password&post-id=$id";

        curl_setopt($c, CURLOPT_POST, true);
        curl_setopt($c, CURLOPT_HTTPHEADER, array('Pragma: no-cache'));    
        curl_setopt($c, CURLOPT_POSTFIELDS, $request_data);
        curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
        $result = curl_exec($c);
        $status = curl_getinfo($c, CURLINFO_HTTP_CODE);

        // Check for success
        if ($status == 200) {
            echo "Deleted post $id\n";
            $count += 1;
        } else if ($status == 403) {
            echo "Bad email or password\n";
        } else {
            echo "Error: $result\n";

    $str = curl_get_file_contents("$tumblr/api/read/json?num=20");
    $str = substr($str, 22);
    $str = substr($str, 0, strlen($str)-2);

    $o = $s->decode($str);

    if (empty($o)) {
        die('An error has ocurred');

    print "Waiting 10 seconds before continuing. Total deleted = $count\n";

/* close the session */
  1. dianchuoidi reblogged this from pipex
  2. jillianpms reblogged this from pipex
  3. pipex posted this