Экспорт файлов из Basecamp - PullRequest
10 голосов
/ 18 января 2010

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

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

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

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

Ответы [ 9 ]

12 голосов
/ 02 апреля 2012

Вы можете экспортировать все из 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>
9 голосов
/ 29 мая 2012

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

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

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

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

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

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

3 голосов
/ 05 марта 2012

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

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

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

2 голосов
/ 16 августа 2013

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

Вместо этого я пошел в несколько ином направлении и использовал расширение экспорта Chrome cookie.txt для копирования всех файлов cookie в виде простого текста в файл cookies.txt.

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

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

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

brew install wget 
1 голос
/ 05 апреля 2012

Используйте этот инструмент для Windows.

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

1 голос
/ 18 января 2010

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

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

0 голосов
/ 19 февраля 2015

Если на вашем компьютере установлен 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

0 голосов
/ 18 апреля 2013

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

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

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

0 голосов
/ 20 февраля 2013
  1. Импорт проекта Basecamp Classic на новый Basecamp
  2. Экспорт данных из нового Basecamp
  3. Подождите
  4. Получите письмо, что это сделано, и скачайте zip-файл
...