我一直在寻找如何从Basecamp获取文件的方法,到目前为止它似乎是一个“不可能完成的任务”,但我也想在这里问:
有没有办法从Basecamp项目获取文件,如果有的话,怎么办?
提前致谢。
编辑:我的意思是如何获取上传的文件。您可以导出所有项目数据,但您上传的文件除外。
答案 0 :(得分:12)
您可以使用以下步骤从Basecamp导出所有内容。
wget --mirror -e robots=no
--reject logout --no-cookies 'http://your-subdomain.basecamphq.com' --header <pasted-cookie-header>
答案 1 :(得分:9)
Matt McClure的答案很明显,但有几件事让我失望;
要在Chrome
开发者工具中找到所需的Cookie,请点击顶部的Network
图标,然后点击Headers
标签。
从'request headers'
部分复制整个Cookie部分,包括'Cookie:'
标签
使用引号粘贴整个字符串,其中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...'
(为了清楚起见,我缩短了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)
答案 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
的修改过的脚本