Экспорт файлов из Basecamp

Я долго искал, как получить файлы из Basecamp, и до сих пор это кажется "невыполнимой миссией", но я хотел спросить Здесь:

есть ли способ получить файлы из проектов Basecamp, и если есть, то как?

спасибо заранее.

редактировать: я имею в виду, как получить загруженные файлы. Вы можете экспортировать все данные проекта кроме файлов, которые вы загрузили туда.

9 ответов


API BaseCamp предлагает полный доступ, включая файлы.

Если у вас есть какие-либо знания об отдыхе, вы сможете вытащить любые/все данные (ограничение по модулю) вручную, а затем сделать с ним все, что захотите.

кстати, если вы пишете инструмент, который позволяет мне перемещать проект с одного счета на другой, я заплачу за это хорошие деньги!


вы можете экспортировать все из Basecamp, используя следующие шаги.

  1. войдите в систему с помощью Chrome.
  2. копировать заголовок Cookie из документа страницы запрос в инструментах разработчика Chrome.
  3. wget --mirror -e robots=no --reject logout --no-cookies 'http://your-subdomain.basecamphq.com' --header <pasted-cookie-header>

ответ Мэтта Макклюра был точен, но пара вещей удержала меня;

  1. чтобы найти необходимый файл cookie в Chrome инструменты разработчика, нажмите на кнопку Network значок сверху, а затем Headers tab.

  2. скопируйте весь раздел cookie из , включая 'Cookie:' метка

  3. вставить всю строку с кавычками, где Мэтт указал <pasted-cookie-header> as следует;

    wget --mirror -e robots=no --reject logout --no-cookies 'http://your-subdomain.basecamphq.com' --header 'Cookie: session_token=c6a1ea88a0187b88025e; transition_token=BAhbB2kDA0VjSXU6CVRpbWUNqB...'

(я сократил строку cookie для ясности)


и Мэтт, и Питер уже предложили использовать wget --mirror который я думаю, что это самое простое решение. Тем не менее, я не смог правильно скопировать куки из Google Chrome.

вместо этого я пошел в немного другом направлении и используется Chrome cookie.расширение экспорта txt чтобы скопировать все куки в виде обычного текста в куки.txt-файл.

моя команда wget тогда выглядела так:

wget --mirror -e robots=no --reject logout 'http://yourdomain.basecamphq.com' --load-cookies cookies.txt

дополнительное примечание для пользователей Mac: wget смогите легко быть установлено с доморощенного:

brew install wget 

basecamp предлагает вам экспортировать ваши проекты в XML, HTML - и есть также способ получить его в PDF. эту информацию можно найти в разделе справки/faq basecamp:http://basecamphq.com/help/general#exporting_data

подробнее об экспорте PDF:http://37signals.blogs.com/products/2008/02/export-a-baseca.html


использовать инструмент для Windows.

в пробном режиме этот инструмент позволит загрузить три проекта из базы, перечислит все проекты на вашей базовой учетной записи после входа в систему с помощью учетных данных basecamp.


  1. импортировать проект Basecamp Classic в новый Basecamp
  2. экспорт данных из Нового Basecamp
  3. ждать
  4. получить по электронной почте, что это сделано и скачать zip-файл

вы можете настроить интеграцию между Basecamp и Dropbox для автоматической передачи всех вложений Basecamp в специальную папку Dropbox:

http://blog.cloudwork.com/your-automatic-basecamp-dropbox-backup-step-by-step/

интеграция выполняется CloudWork, который имеет бесплатный план, поэтому, если вы не думаете, что будете создавать резервные копии более 100 вложений в месяц, он может сделать это бесплатно. Выше этого есть тарифный план.


Если на вашем компьютере установлен php, сохраните этот код в basecampfilevac.на PHP:

<?
// make sure the folder of the script is writeable (0777)
ini_set('memory_limit', '-1');//keeps the script from timing out

function BasecampCall($endPoint, $usePrefix = true) {

    // From: http://prattski.com/2008/10/22/basecamp-api-examples-using-php-and-curl-get/
    $session = curl_init();

    $basecampId     = '[Your Basecamp Account Id Here]';  //this should be a number like 9999999, You can find it in the URL when you log into Basecamp.
    $username       = '[Your Basecamp Username Here]';
    $password       = '[Your Basecamp Password Here]';
    $emailaddress   = '[Your Basecamp Email Address Here]';

    $basecampUrl     = 'https://basecamp.com/' . $basecampId . '/api/v1/';

    curl_setopt($session, CURLOPT_URL, ($usePrefix == true ? $basecampUrl : "") . $endPoint);
    curl_setopt($session, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
    curl_setopt($session, CURLOPT_HTTPGET, 1);
    curl_setopt($session, CURLOPT_HEADER, false);
    curl_setopt($session, CURLOPT_HTTPHEADER, array('Accept: application/json', 'Content-Type: application/json'));
    curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($session, CURLOPT_USERAGENT, "MyApp (".$emailaddress.")");

    curl_setopt($session,CURLOPT_USERPWD, $username . ":" . $password);

    if(ereg("^(https)",$request)) curl_setopt($session,CURLOPT_SSL_VERIFYPEER,false);

    $response = curl_exec($session);
    curl_close($session);

    if($usePrefix){
        $r = json_decode($response);
    } else {
        $r = $response;
    }

    return $r;
}

$projects = BasecampCall('projects.json');

// For each project take name and id
foreach($projects as $proj) {

    $pr = array(
        "id"    => (string)$proj->id,
        "name"  => (string)$proj->name
    );

    // Retrieve the attachments
    echo "\nSaving attachments for project: " . $pr['name'] . "...\n";

    @mkdir($pr['name']);

    $filesArray = array();

    $n = 1;
    do {

        $attachments = BasecampCall("projects/" . $proj->id . "/attachments.json?page=" . $n);

        if(count($attachments) > 0) {

            foreach($attachments as $attachment) {

                $file = pathinfo($attachment->name);

                @file_put_contents($pr['name'] . "/" . $file['filename'] . (in_array($file['filename'], $filesArray) ? "-" . rand() : "") . "." . $file['extension'], BasecampCall($attachment->{'url'}, false));

                $filesArray[] = $file['filename'];

                echo "Saving file " . $attachment->name . "...\n";
            }
        }

        $n++;

    } while(count($attachments) == 50);
}
?>

затем обновите следующие строки с правильной информацией:

$basecampId     = '[Your Basecamp Account Id Here]';  //this should be a number like 9999999, You can find it in the URL when you log into Basecamp.
$username       = '[Your Basecamp Username Here]';
$password       = '[Your Basecamp Password Here]';
$emailaddress   = '[Your Basecamp Email Address Here]';

затем сохраните и выполните эту команду:php basecampfilevac.php

это измененный скрипт, первоначально из Rettger Galactic