从Basecamp导出文件

时间:2010-01-18 13:11:07

标签: file export basecamp

我一直在寻找如何从Basecamp获取文件的方法,到目前为止它似乎是一个“不可能完成的任务”,但我也想在这里问:

有没有办法从Basecamp项目获取文件,如果有的话,怎么办?

提前致谢。

编辑:我的意思是如何获取上传的文件。您可以导出所有项目数据,但您上传的文件除外

9 个答案:

答案 0 :(得分:12)

您可以使用以下步骤从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 :(得分:9)

Matt McClure的答案很明显,但有几件事让我失望;

  1. 要在Chrome开发者工具中找到所需的Cookie,请点击顶部的Network图标,然后点击Headers标签。

  2. 'request headers'部分复制整个Cookie部分,包括'Cookie:'标签

  3. 使用引号粘贴整个字符串,其中matt表示<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...'

  4. (为了清楚起见,我缩短了cookie字符串)

答案 2 :(得分:3)

BaseCamp API旨在提供包括文件在内的全部访问权限。

如果你对REST有任何了解,你可以手动拉出任何/所有数据(模数限制),然后随意做任何事情。

顺便说一句,如果你写一个工具让我把一个项目从一个账户转移到另一个账户,我会为此付出很多钱!

答案 3 :(得分:2)

Matt和Peter已经提议使用wget --mirror,我认为这是最简单的解决方案。但是,我无法从Google Chrome正确复制Cookie。

相反,我的方向略有不同,并使用Chrome cookie.txt export extension将所有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 

答案 4 :(得分:1)

basecamp允许您以XML,HTML格式导出项目 - 还有一种方法可以用PDF格式获取它。这些信息可以在basecamp的帮助/常见问题解答部分找到:http://basecamphq.com/help/general#exporting_data

有关PDF导出的更多信息:http://37signals.blogs.com/products/2008/02/export-a-baseca.html

答案 5 :(得分:1)

对Windows使用this tool

在试用模式下,此工具将允许从基础下载三个项目,在您使用basecamp凭据登录后将列出基本帐户上的所有项目。

答案 6 :(得分:0)

  1. 将Basecamp Classic项目导入新Basecamp
  2. 从新Basecamp导出数据
  3. 等待
  4. 收到已完成的电子邮件并下载zip文件

答案 7 :(得分:0)

您可以在Basecamp和Dropbox之间设置集成,以自动将所有Basecamp附件转移到专用的Dropbox文件夹中:

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

集成由CloudWork完成,它有一个免费的计划,所以如果你认为你不会每月备份100多个附件,它可以免费使用。在此之上,有一个定价计划。

答案 8 :(得分:0)

如果您的计算机上安装了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

的修改过的脚本